Skip to content

About

Embedded no_std Reticulum core for constrained devices

Resources

Security policy

Stars

0 stars

Watchers

0 watching

Forks

Repository files navigation

rsReticulumLite

CI Rust 1.87+ License: AGPL-3.0-or-later

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.

Scope

  • 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.
  • MicroNode and SmallNode profiles, with custom capacities through LiteNode.

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.

Build and test

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.sh

The 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.

License

AGPL-3.0-or-later.

About

Embedded no_std Reticulum core for constrained devices

Resources

Security policy

Stars

0 stars

Watchers

0 watching

Forks

Releases

Packages

Contributors

Languages