https://github.com/joergschultzelutter/core-aprs-client
Extensible and user-friendly APRS bot framework with dupe detection, beacon/bulletin support and other nice features. Just add your custom APRS bot functions - the `core-aprs-client` framework will take care of the rest.
https://github.com/joergschultzelutter/core-aprs-client
amateur-radio amateurradio aprs aprs-daemon aprs-is framework ham-radio hamradio
Last synced: 11 days ago
JSON representation
Extensible and user-friendly APRS bot framework with dupe detection, beacon/bulletin support and other nice features. Just add your custom APRS bot functions - the `core-aprs-client` framework will take care of the rest.
- Host: GitHub
- URL: https://github.com/joergschultzelutter/core-aprs-client
- Owner: joergschultzelutter
- License: gpl-3.0
- Created: 2025-02-23T11:47:48.000Z (over 1 year ago)
- Default Branch: master
- Last Pushed: 2026-03-03T08:06:35.000Z (4 months ago)
- Last Synced: 2026-03-03T08:36:46.957Z (4 months ago)
- Topics: amateur-radio, amateurradio, aprs, aprs-daemon, aprs-is, framework, ham-radio, hamradio
- Language: Python
- Homepage:
- Size: 2.23 MB
- Stars: 2
- Watchers: 1
- Forks: 0
- Open Issues: 1
-
Metadata Files:
- Readme: README.md
- License: LICENSE
Awesome Lists containing this project
README
# core-aprs-client
 [](https://www.gnu.org/licenses/gpl-3.0) [](https://github.com/psf/black) [](https://pypi.python.org/pypi/core-aprs-client)
## Table of contents
* [Introduction](#introduction)
* [Sample APRS Client](#sample-aprs-client)
* [Core features](#core-features)
* [Installation and Configuration](#installation-and-configuration)
* [Installation instructions](#installation-instructions)
* [Client Configuration](#client-configuration)
* [Framework examples](#framework-examples)
* [`CoreAprsClient` class description](#coreaprsclient-class-description)
* [Source Code Anatomy](#source-code-anatomy)
* [Framework usage](#framework-usage)
* [Client schematics](#client-schematics)
* [Known issues and caveats](#known-issues-and-caveats)
* [Projects that use `core-aprs-client`](#projects-that-use-core-aprs-client)
* [Known issues and caveats](#known-issues-and-caveats)
* [Alternatives to `core-aprs-client`](#alternatives-to-core-aprs-client)
* [The fine print](#the-fine-print)
## Introduction
Core APRS client framework with dupe detection, bulletin/beaconing support, and other APRS-IS related stuff.
```core-aprs-client``` is a modernized version of [mpad](https://github.com/joergschultzelutter/mpad)'s APRS functions which can be used for building your very own APRS client / bot. Its framework supports all of [mpad](https://github.com/joergschultzelutter/mpad)'s core APRS messaging functions, such as connecting to APRS-IS, message dupe detection, ACK handling, and other functionality such as APRS bulletins (supporting both static and dynamic contents) and APRS beaconing. Additionally, support for rare use cases such as [pre- and post-processing](/docs/framework_usage.md#extending-the-pre-processor-pre_processorpy) of APRS requests is provided. However, ```core-aprs-client``` deliberately lacks any _specific_ APRS bot functions such as WX reporting etc.
This is where _you_ step in. Add your bot-specific code to the client's APRS framework code. Everything else related to APRS messaging and communication with APRS-IS will be covered by the ```core-aprs-client``` framework.
## Sample APRS Client
The following example illustrates a fully functional APRS bot. You will provide the APRS message input parser code and the generator responsible for the outgoing APRS message content. Everything else will be handled by the `core-aprs-client` framework.
```python
from CoreAprsClient import CoreAprsClient
# Your custom input parser and output generator code
from input_parser import parse_input_message
from output_generator import generate_output_message
import logging
if __name__ == '__main__':
client = CoreAprsClient(config_file="core_aprs_client.cfg",
log_level=logging.INFO,
input_parser=parse_input_message,
output_generator=generate_output_message)
client.activate_client()
```
It's as simple as that.
## Core features
- Core APRS-IS functionality, covering both 'old' and '[new](http://www.aprs.org/aprs11/replyacks.txt)' ACK processing
- Configurable dupe message handler
- Optional:
- APRS beacons and bulletins, including [support for dynamic bulletin content](/docs/coreaprsclient_class.md#use-of-dynamic-content-for-aprs-bulletins-additional-to-static-bulletin-content) generated during runtime
- Program [crash handler](/docs/configuration_subsections/config_crash_handler.md), allowing you to get notified in case the client program crashes
- Support for [pre- and post-processing](/docs/framework_usage.md#extending-the-optional-code-stubs)
- All configuration settings are stored in a single [program configuration file](/docs/configuration.md#program-configuration-file)
## Installation and Configuration
### Installation instructions
Instructions for installing the framework and its sample APRS client on your computer can be found [here](docs/installation.md).
### Client Configuration
The steps for modifying the client's config file are described [here](docs/configuration.md).
### Framework examples
[This directory](framework_examples/README.md) contains sample program code; it also contains the ready-to-use templates for the framework's configuration files.
### `CoreAprsClient` class description
The framework's class methods are described [here](docs/coreaprsclient_class.md)
### Source Code Anatomy
A brief overview on this repositories' software modules used by the client can be found [here](docs/anatomy.md).
### Framework usage
The steps for using the client framework are described [here](docs/framework_usage.md).
### Client schematics
If you want to learn about the bot's basic processing structure, then have a look at [this diagram](docs/schematics.md).
### Projects that use `core-aprs-client`
A list of my projects that are dependent on `core-aprs-client` can be found [here](/docs/projectsusingcoac.md)
## Known issues and caveats
- This software is single-threaded. Due to APRS-IS's technical nature of resubmitting non-ack'ed messages, this limitation should not be an issue, though. Future versions of this software might support queued processing of incoming requests.
- This software is intended to be used by licensed ham radio operators. If you are not a licensed ham radio operator, then this program is not (yet) for you. Why not take a look at sites such as [Hamstudy](https://hamstudy.org/) and [50 Ohm](https://50ohm.de/) - and get licensed?
- You should at least know the APRS basics before you use this software. Acquaint yourself with [the official APRS documentation](https://github.com/wb2osz/aprsspec) and learn about [how APRS works](https://how.aprs.works/) in general. Additionally, have a look at the [APRS Foundation](https://www.aprsfoundation.org/)'s website.
- You HAVE to assign your personal call sign to the bot.
- You HAVE to [request your personal APRS TOCALL](https://github.com/aprsorg/aprs-deviceid) for using this bot __in production__. See the [APRS Device ID](https://github.com/aprsorg/aprs-deviceid/blob/main/ALLOCATING.md#development-phase) information section on proper usage.
## Alternatives to `core-aprs-client`
A great alternative to `core-aprs-client` is KM6LYW's[`aprsd`](https://github.com/craigerl/aprsd). If you don't intend to use `core-aprs-client`'s specific functionalities such as pre- and post-processing (which afaik aren't supported by `aprsd`), this program might be a viable alternative.
## The fine print
- If you intend to host an instance of this program, you must be a licensed radio amateur. BYOP: Bring your own (APRS-IS) passcode. If you don't know what this is, then this program is not for you.
- APRS is a registered trademark of APRS Software and Bob Bruninga, WB4APR.