// lxmf
Reticulum finds a route and carries the packets. On top of that, LXMF handles how messages are built, delivered and optionally stored for offline receivers. Ratspeak, Sideband and NomadNet are built on those two.
A link is an encrypted, temporary, point-to-point session between two Reticulum destinations. Direct or multi-hop. The link is not the physical radio or TCP connection: it is an encrypted channel over whatever path Reticulum has found.
Links provide forward secrecy through ephemeral X25519 key exchange. When a link ends, the session keys are not reused. The initiator does not have to reveal a long-term identity to open a link.
| 1 | Link request. The initiator generates fresh ephemeral key material and sends a Link Request packet to the destination hash. |
| 2 | Path marking. Transport nodes that forward the request remember the link ID. |
| 3 | Proof. The destination accepts, generates its own ephemeral key material, signs proof with the identity, and sends a proof packet back. |
| 4 | Active link. Both sides derive the same symmetric key and exchange encrypted packets. |
| Concept | What it does |
|---|---|
| Channel | Reliable, ordered message streams over a link. For request/response and data that must arrive in order. |
| Resource | Transfer of payloads larger than a single packet. Chunking, verification, retransmission and reassembly. Files, images and large LXMF messages use this. |
LXMF defines a compact signed envelope with: source and destination information, timestamp, optional title and content, structured fields for application-specific data, sender signature, and delivery metadata (stamps, tickets, propagation state). Small enough for LoRa, flexible enough for chat, mail, telemetry, game moves and app-specific payloads.
| Method | How it works | Suitable for |
|---|---|---|
| Direct | Opens a Reticulum link to the receiver and delivers over that encrypted session. | Normal conversations, reliable delivery, larger messages |
| Opportunistic | Sends a small encrypted message as a single Reticulum packet without link setup. Max ~295 bytes. | Short notes, alerts, low-latency fire-and-forget |
| Propagated | Stores the encrypted message on a propagation node until the receiver collects it. | Offline receivers, delay-tolerant messaging |
Messages larger than 295 bytes automatically fall back to Direct delivery. Messages larger than a single link packet are sent as a resource over the link.
A propagation node is a Reticulum node that runs LXMF propagation software (lxmd or lxmd-rs). It stores encrypted LXMF blobs for receivers that are offline or unreachable. When the receiver comes online, the client asks the propagation node for waiting messages.
Ratspeak calls this feature Offline Inbox. The technical LXMF term is propagation node. Propagation nodes do not read the messages: the content stays encrypted for the receiver.
You can have several propagation nodes synchronize their state, so a receiver has more than one place to collect messages. How to set up a propagation node is on set up a node. Which apps use LXMF can be seen on software.
The default values are tuned for slow, lossy networks. On a healthy LAN you barely notice them. On LoRa and long multi-hop paths the extra patience prevents links from failing just because the medium is slow.
| Timer | Behavior |
|---|---|
| Establishment timeout | About 6 seconds per expected hop |
| Keepalive | Adaptive, between 5 and 360 seconds, based on observed RTT |
| Stale handling | A silent link becomes stale after two keepalive intervals, then closed if there is no reply |