LXMF in Rust for microcontrollers.
lxmf-lite-core constructs and validates LXMF messages without allocation or
std. It adapts the codec from rsLXMF
and uses rsReticulumLite for
Reticulum cryptography and identity handling.
The codec builds messages for single-packet (opportunistic) delivery or delivery over Links and Resources. It validates incoming messages against the sender's key and intended recipient, and supports current and retained destination ratchets. Client propagation codecs validate node announcements, append recipient stamps, encrypt and wrap relay uploads, and decrypt retrieved entries for the ordinary message validator. Relay selection and durable inbox acknowledgement remain the firmware's responsibility.
Incoming message fields can be read without allocation. The Link/Resource audio
builder writes standard LXMF [mode, binary] audio fields covered by the message
signature; text and opportunistic builders retain empty fields. Audio framing is
separate from codec support, playback and application size/duration limits.
Your firmware supplies identities, entropy, timestamps and buffers, and handles
routing, Link sessions, Resource transfers, storage and retries. Resumable stamp
generation and validation stream workblock preparation without allocating the
large workblock. Firmware supplies fresh cryptographic entropy and enforces cost,
iteration and elapsed-time limits. This crate does not run a propagation node
and does not support compression.
Install Rust through rustup; the repository selects Rust 1.87 and the
bare-metal check targets. These repositories must be siblings:
git clone https://github.com/ratspeak/rsLXMFLite.git
git clone https://github.com/ratspeak/rsReticulumLite.git
git clone https://github.com/ratspeak/rsLXMF.git
git clone https://github.com/ratspeak/rsReticulum.git
cd rsLXMFLite
for refs in RNS_LITE_REF TRUSTED_REF; do
while read -r repository revision; do
git -C "../$repository" checkout --detach "$revision"
done < "$refs"
done
./scripts/test-matrix.shThe full Rust repositories are test references, not firmware dependencies. The matrix runs host tests, ARM/RISC-V checks, Clippy, rustdoc and byte-level compatibility tests against those references.
For a firmware project alongside the two Lite checkouts:
[dependencies]
rns-lite-core = { path = "../rsReticulumLite" }
lxmf-lite-core = { path = "../rsLXMFLite" }Keep both source revisions pinned in your build.
RNS_LITE_REF records the rsReticulumLite revision used here;
TRUSTED_REF records the test references.
The crates are distributed from source, not crates.io.
See the Link-message example.
Build API documentation with cargo doc --workspace --no-deps --open.