// lxmf

Links and 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.

What a Reticulum link is

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.

Link establishment

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.

What goes over a link

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.

What LXMF adds

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.

Delivery methods

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.

Propagation nodes

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.

Link timers

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 timeoutAbout 6 seconds per expected hop
KeepaliveAdaptive, between 5 and 360 seconds, based on observed RTT
Stale handlingA silent link becomes stale after two keepalive intervals, then closed if there is no reply