LXMF-rs Monorepo
Rust monorepo for LXMF and Reticulum with strict library/app boundaries and
enterprise quality gates. The 0.5.x line is a usable sub-1.0
daemon/product release with strong core protocol coverage, published crates,
GitHub tool bundles, and a typed ZeroMQ SDK integration foundation for
REM/RCH clients; it is not a complete drop-in replacement for every Python
Reticulum/LXMF behavior.
Start Here
- Contributor workflow:
CONTRIBUTING.md - Current status and execution order:
docs/status/current-roadmap.md - Release notes:
docs/release-notes-v0.5.2.md - Docs map and retention rules:
docs/README.md - SDK guide:
docs/sdk/README.md - Support policy:
docs/contracts/support-policy.md
Release Status
Current release train: 0.5.2.
Use docs/release-notes-v0.5.2.md for the release summary and
docs/runbooks/release-readiness.md for the release gate record. The
repository-level parity source of truth remains
docs/status/current-roadmap.md; the detailed parity supplements are
docs/status/reticulum-parity-matrix.md and
docs/status/lxmf-parity-matrix.md.
The 0.5.x release scope covers the Rust libraries, SDK entry points, lxmd,
reticulumd, and rns-tools, plus host-native GitHub bundles for all
implemented user-facing tools. The 0.5.2 train focuses on improved Reticulum
interface management, especially LoRa/RNode operator workflows for REM-style
deployments. Operational substitutability is usable but still partial.
External-client compatibility claims for REM, RCH, Sideband, MeshChatX,
Columba, or other third-party clients require separate interop gate evidence.
Workspace Layout
LXMF-rs/
├── crates/
│ ├── libs/
│ │ ├── lxmf/
│ │ ├── lxmf-core/
│ │ ├── lxmf-sdk/
│ │ ├── reticulum-rs/
│ │ ├── rns-core/
│ │ ├── rns-embedded-core/
│ │ ├── rns-embedded-ffi/
│ │ ├── rns-embedded-runtime/
│ │ ├── rns-transport/
│ │ ├── rns-rpc/
│ │ └── test-support/
│ ├── apps/
│ │ ├── lxmf-cli/
│ │ ├── reticulumd/
│ │ └── rns-tools/
├── docs/
├── adr/
├── architecture/
├── contracts/
├── fixtures/
├── migrations/
├── runbooks/
├── schemas/
└── sdk/
├── examples/
├── tools/
│ └── scripts/
├── scripts/
└── xtask/
Cargo.toml is the source of truth for active workspace members. Retired
migration-era crates are not kept in the repository surface.
Active Libraries
lxmf-wire(crates/libs/lxmf-core): message/payload/identity primitives.lxmf: umbrella crate forlxmf-sdkandlxmf-wire.lxmf-sdk: host-facing client API (start/send/cancel/status/configure/poll/snapshot/shutdown).rns-embedded-runtime: node-centric embedded runtime facade with lifecycle, event, and managedstddriver support.rns-embedded-ffi: C ABI for embedded/manual-tick compatibility and the v1 node-centric API.rns-embedded-core: shared embedded/runtime types and fixtures.reticulum-rs: umbrella crate for the Reticulum stack crates.reticulum-rs-core(crates/libs/rns-core): Reticulum cryptographic and packet primitives.reticulum-rs-transport(crates/libs/rns-transport): transport + iface + receipt/resource API.reticulum-rs-rpc(crates/libs/rns-rpc): JSON-RPC request/response/event contracts and bridges.test-support: schema/fixture validation and integration-test helpers.
Published crates.io entry points:
lxmflxmf-sdklxmf-wirelxmf-embedded-minireticulum-rsreticulum-rs-corereticulum-rs-transportreticulum-rs-rpcrns-embedded-corerns-embedded-runtimerns-embedded-ffirns-embedded-mininodelxmf-clireticulumdrns-tools
Published Crates
Main entry points:
lxmf(docs.rs): umbrella crate for LXMF wire types and the high-level SDK.
reticulum-rs(docs.rs): umbrella crate for the Reticulum stack crates.
Component crates:
lxmf-sdk(docs.rs): high-level Rust SDK for LXMF clients.
lxmf-wire(docs.rs): LXMF wire format, message primitives, and identity helpers.
reticulum-rs-core(docs.rs): core Reticulum cryptographic and packet primitives.
reticulum-rs-transport(docs.rs): transport, interface, receipt, and resource layers.
reticulum-rs-rpc(docs.rs): JSON-RPC request, response, event, and daemon bridge contracts.
Embedded crates:
lxmf-embedded-mini(docs.rs): no-alloc mini LXMF runtime for embedded targets.
rns-embedded-core(docs.rs): embedded-friendly Reticulum core primitives.
rns-embedded-runtime(docs.rs): runtime support for embedded Reticulum targets.
rns-embedded-ffi(docs.rs): FFI and static-library surface for embedded runtimes.
rns-embedded-mininode(docs.rs): minimal embedded Reticulum node helpers.
Command crates:
lxmf-cli: command-line LXMF client tools.
reticulumd: Reticulum daemon and interchange binaries.
rns-tools: Reticulum diagnostic and embedded tooling binaries.
Active Applications
lxmf-clireticulumdrns-tools
Bootstrap
Recommended:
Direct script form:
Verification-only mode:
Build and Validation
or via xtask:
For fast local iteration on one binary, prefer narrow commands:
Binaries
lxmf-clilxmdreticulumdlxm-interchangernsd,rnstatus-rs,rnx
Run examples:
Documentation Entry Points
- Docs map:
docs/README.md - Current status:
docs/status/current-roadmap.md - API surface and stability:
docs/lxmf-rs-api.md - CLI quick reference:
docs/lxmf-cli.md - Architecture overview:
docs/architecture/overview.md - JSON and wire-field mapping:
docs/architecture/json-lxmf-fields.md - Compatibility contract:
docs/contracts/compatibility-contract.md - Compatibility matrix:
docs/contracts/compatibility-matrix.md - Third-party compatibility kit:
docs/contracts/third-party-compatibility-kit.md - Support and LTS policy:
docs/contracts/support-policy.md - Extension registry:
docs/contracts/extension-registry.md - RPC contract:
docs/contracts/rpc-contract.md - Payload contract:
docs/contracts/payload-contract.md - Historical performance comparison report:
docs/PerformancesComparison.html - reticulumd operational deployment:
docs/runbooks/reticulumd-operational-deployment.md - Logging and diagnostics:
docs/runbooks/logging-and-diagnostics.md - crates.io publish plan:
docs/runbooks/crates-io-publish-plan.md - Release readiness:
docs/runbooks/release-readiness.md
crates.io Consumers
For library consumers, prefer the published package names rather than the workspace directory names:
[]
= "0.5.2"
= "0.5.2"
Or depend on the component crates directly:
[]
= "0.5.2"
= "0.5.2"
SDK Guide
- Guide index:
docs/sdk/README.md - Quickstart:
docs/sdk/quickstart.md - Profiles/configuration:
docs/sdk/configuration-profiles.md - Config cookbook:
docs/runbooks/sdk-config-cookbook.md - Lifecycle/events:
docs/sdk/lifecycle-and-events.md - Remote mTLS:
docs/sdk/remote-mtls.md - Delivery states:
docs/sdk/delivery-states.md - Error handling:
docs/sdk/error-handling.md - Advanced embedding:
docs/sdk/advanced-embedding.md
Release Bundles
cargo xtask package-daemon-bundle builds the host-native lxmd and
reticulumd binaries, generates lxmd.example.config, copies README.md, and
writes a release archive under target/release-bundles/. The command emits
.zip bundles on Windows and .tar.gz bundles on macOS/Linux.
On macOS, Gatekeeper may quarantine a downloaded release bundle because the project does not currently ship signed/notarized binaries. If that happens, remove the quarantine attribute after extracting the archive:
Embedded Node FFI
- Header:
crates/libs/rns-embedded-ffi/include/rns_embedded_ffi.h - Guide and example:
crates/libs/rns-embedded-ffi/README.md - Stable core contract: lifecycle, status, capability probe, send/broadcast, subscriptions, structured errors
- Compatibility surface: legacy manual tick, raw wire ingress/egress, low-level queueing
- Extension surface: numeric extension IDs validated by
docs/fixtures/embedded/public-node-api-v1/extension-ids.json v1node-centric API:rns_embedded_v1_node_new/start/stop/restart/get_status/send/broadcast/set_log_level/subscribe_events- legacy compatibility API remains available for manual tick, raw wire ingress/egress, and low-level queueing
Governance
- Security policy:
SECURITY.md - Code ownership:
.github/CODEOWNERS
Linux daemon setup (systemd)
The following installs a long-running lxmd service. lxmd also launches reticulumd, so a single unit is enough for most deployments.
- Install binaries (from source)
- Create a dedicated service user and daemon directories
- Create a starting config file for
lxmd
Optional: set an explicit Reticulum config for reticulumd (instead of relying on generated defaults).
- Install a systemd unit for the daemon
If you are not using /etc/lxmf/reticulumd/config.toml, remove --rnsconfig /etc/lxmf/reticulumd/config.toml from ExecStart and run only with --config.
- Enable and start the service
- Tail logs and verify health
Using the official GitHub release binaries
Release artifacts are published on the GitHub releases page:
https://github.com/FreeTAKTeam/LXMF-rs/releases
For v0.5.2, use the release at:
https://github.com/FreeTAKTeam/LXMF-rs/releases/tag/v0.5.2
-
Open the release page and download the package and matching
.sha256file for your platform. -
Linux/macOS
- Windows
Get-FileHash .\lxmf-rs-tools-v0.5.2-windows-x64.zip -Algorithm SHA256
Get-Content .\lxmf-rs-tools-v0.5.2-windows-x64.zip.sha256
Expand-Archive .\lxmf-rs-tools-v0.5.2-windows-x64.zip .
- Run directly for validation
- Generate a starter
lxmdconfig and follow the same daemon setup flow as above
If you are using Linux and the Linux daemon guide above, point --config at the downloaded config file and keep binaries in place via your package manager path or your custom install path.
Notes
- If
sccacheis installed and you want to use it, setRUSTC_WRAPPER=sccachebefore building. - Cross-language benchmark configuration lives in
tools/benchmarks/python_impl.toml, and the operating runbook isdocs/runbooks/python-impl-benchmarking.md. - For daemon-level mixed-runtime smoke coverage,
make python-lxmd-smokelaunches a Rustlxmdnode and an installed Pythonlxmdnode together.
License
Eclipse Public License 2.0 (EPL-2.0). See LICENSE.