Reticulum in Rust for microcontrollers.
rns-lite-core provides transport and endpoint primitives adapted from
rsReticulum. It is no_std,
allocation-free, and uses fixed-capacity buffers and tables. The firmware
supplies clocks, entropy, storage and interface I/O.
- Packet encoding, signed announces, path discovery, transport forwarding and the tunnel synthesis a TCP client sends on connect.
- Link handshake, session encryption, identity verification, proofs and optional IFAC.
- Bounded Resource transfers and persistent ratchet/known-destination encodings.
- LoRa split framing, airtime limiting and carrier-sense backoff.
MicroNodeandSmallNodeprofiles, with custom capacities throughLiteNode.
Resources sent or received by this library are limited to 3,659 bytes of data per transfer. Transfers are encrypted; compression and multi-segment transfers are not supported. This size limit does not apply when forwarding Resource packets between other nodes.
The library does not run a networking loop or drive hardware. Your firmware manages Link timers, writes persistent state and handles transmission failures. For LXMF messages, use rsLXMFLite.
Install Rust through rustup; the production library and bare-metal checks
use Rust 1.87. Host compatibility tests also require Rust 1.89 because they
compile the full rsReticulum reference. From a new working directory:
git clone https://github.com/ratspeak/rsReticulumLite.git
git clone https://github.com/ratspeak/rsReticulum.git
cd rsReticulumLite
rustup toolchain install 1.89.0 --component clippy
while read -r repository revision; do
git -C "../$repository" checkout --detach "$revision"
done < TRUSTED_REF
./scripts/test-matrix.shThe matrix runs host tests, ARM/RISC-V checks, Clippy, rustdoc and compatibility
tests against the exact rsReticulum revision in TRUSTED_REF.
For Python interoperability checks, install the RNS version in
vectors/RNS_VERSION and run ./vectors/run.sh.
For a firmware dependency, pin a source revision:
[dependencies]
rns-lite-core = { git = "https://github.com/ratspeak/rsReticulumLite", rev = "<commit>" }The crate is distributed from source, not crates.io.
See the path-request example. Run it on the host
with cargo +1.89.0 run --example path_request --locked; it queues and drains
a packet in memory without transmitting it.
Build API documentation with cargo +1.87.0 doc --workspace --no-deps --locked --open.