XPRS
XPRS extends and modernizes APRS. The core idea stays the same: small text packets that anyone can hear and volunteers repeat across the network. Everything else was rebuilt with the lessons of three decades in the field.
A packet is at most 250 bytes of key:value text, readable
without a decoder:
t:message f:X1QZ3N d:LISBOA ts:2026-08-08_14:26:40 m:net starts in ten minutes
78 bytes. A person can read it and so can a five-line parser. The same packet travels LoRa, Bluetooth, WiFi, HF/VHF/UHF, wired networks and the internet.
What changed from APRS
- Identity is proven. Packets are signed with a key the station holds. A licensed callsign can be bound to a key and proven live on air.
- Delivery is tracked. Stations carry mail for absent peers and hand it over against signed receipts. A station that was away can ask for the traffic it missed.
- No central server. APRS routes everything through one internet backbone. XPRS uses indexers that each station chooses, and indexers exchange directories instead of copying each other's traffic.
- Files of any size. Content is addressed by SHA-256. A file can be described, located by asking who holds it, fetched in verified pieces, or sent inline when small.
- Room to grow. Every value carries its unit. Unknown keys are skipped without error. New fields never break old readers.
Roles in the network
Every role runs on ordinary devices, and one device usually plays several. A station speaks under a callsign. A relay repeats what it hears. A carrier holds mail for absent stations. A gateway bridges radio and internet and publishes who it hears. An indexer archives the publications of the stations that chose it. No role is assigned by a central authority. Operators choose what their devices do and set their own limits.
Licensing
No licence is needed on licence-free spectrum: LoRa and Bluetooth in the ISM bands, WiFi and the internet. Identity comes from a keypair generated on the device. On amateur bands XPRS operates under amateur rules: plain text, a government-issued callsign, no ciphertext.
Specification
- XPRS.md the full specification, current edition XPRS-2026
- xprs_corpus.json the conformance corpus. Every worked example from the document as a wire with its byte count and identifier. An implementation that replays all of them byte-exact reads the format.
- github.com/xprs-dev/spec the specification repository
Reference implementations
- geograms/aurora Dart/Flutter host for Android, Linux and Windows. Codec, signing, store-and-forward, the heard-traffic archive and history server, and the transports.
- geograms/reticulum-dart the shared Dart networking library. Mesh transport, DHT, content-addressed file swarm and the signature scheme.
- aurora/esp32 ESP32 implementation in C. A dongle becomes an XPRS station, digipeater and store-and-forward mailbox. Replays the same corpus as the Dart codec.
Editions
The specification is edited continuously and released by year. XPRS-2026 is the document as it stands at any point during 2026. The first change made in a later year opens the next edition and freezes this one. A year with no changes produces no edition.