LXMF Protocol Specification
This appendix is an exact, English specification of the LXMF messaging protocol,
derived from and proven against the vendored Python reference
(vendor/LXMF, v0.9.6, commit 8499729) running on Reticulum
(vendor/Reticulum, RNS 1.3.5, commit d5e62d4). It is the contract the
libreticulum lxmf crate is built and tested against.
LXMF (Lightweight Extensible Message Format) is the store-and-forward messaging layer of Reticulum. It defines how a message is structured, signed, encrypted, sized, and delivered (opportunistically as a single packet, directly over a link, via a propagation node, or on paper), plus the anti-spam stamp and ticket mechanisms. It moves opaque bytes over Reticulum primitives; it carries no media processing of its own.
How to read this specification
- Normative statements use RFC 2119 keywords (MUST, SHOULD, MAY) and specify
behaviour an interoperable implementation has to reproduce. Every normative
fact carries either a
file:linecitation into the reference, a derivation with the arithmetic shown, or a labelled test vector[VEC-...]. - Informative sections describe internal reference behaviour (router scheduling, queues, persistence) that an implementation MAY diverge from without breaking wire or semantic compatibility.
- Test vectors are the genuine byte output of the reference, regenerated by
vectors/gen_vectors.pyand pinned to the submodule commits. A citation proves “the code says this”; a vector proves “these are the bytes”.
Sections
- Introduction and scope
- Cryptographic primitives
- Identifiers and sizes
- Message binary format
- Fields
- Delivery methods and sizing
- On-air sequences
- Stamps and proof-of-work
- Tickets
- Announce application data
- Propagation
- Router internals (informative)
- Constants reference
- Coverage ledger
- Test vectors
- Symbol inventory (frozen)