$ account craigerl
aprsd is a Python daemon for the APRS (Automatic Packet Reporting System) amateur radio protocol, connecting to APRS-IS (Internet Service) and optionally KISS serial/TCP interfaces. It receives and processes APRS packets through a pipeline of duplicate detection, type filtering, and a plugin-based message handler. The system also supports sending messages, beacons, and weather reports, with persistent storage of watch lists and tracked packets. The architecture is modular: client drivers abstract the network connection, a packet factory deserializes raw APRS frames into typed dataclasses, and a threading model handles RX processing, TX scheduling, and keepalive monitoring. Configuration is managed via oslo_config with a sample config generation command. The project is production-grade for its niche, with Docker support, CI/CD, and a documented plugin API for third-party extensions.