Skip to content

About

Embedded no_std LXMF core for constrained devices

Resources

Security policy

Stars

0 stars

Watchers

0 watching

Forks

Repository files navigation

rsLXMFLite

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

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.

Scope

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.

Build and test

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

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

License

AGPL-3.0-or-later.

About

Embedded no_std LXMF core for constrained devices

Resources

Security policy

Stars

0 stars

Watchers

0 watching

Forks

Releases

Packages

Contributors

Languages