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.
Incoming message fields can be read; builders currently emit empty fields. Your firmware supplies identities, entropy, timestamps and buffers, and handles routing, Link sessions, Resource transfers, storage and retries. This crate does not run a propagation node or generate stamps, 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.