Built on Reticulum
Encrypted messaging, cryptographic identity, device provisioning — over Reticulum. TCP, wireless mesh, LoRa radio. Same protocol stack, whatever the transport.
How it works
Keys generated on-device. Ephemeral by default, pinned to YubiKey if you want persistence. No accounts, no registration, no server deciding who you are.
LXMF — encrypted, store-and-forward. Messages propagate through the mesh until they arrive. Works with Sideband and NomadNet on the same wire.
Write a NixOS image. Plug it into hardware. It joins the mesh on first boot. Manage the fleet over LXMF — the management channel is the same channel everything else uses.
Interface
Live screenshots from a running network. Same interface whether you're local or SSH'd in from three continents away.
Components
The daemon runs everywhere. The TUI is optional. The Rust port is for hardware where Python won't fit.
The daemon. Identity, messaging, discovery, and the wire protocol nodes use to find each other. Install it, run it, it works. The TUI is an optional extra.
Python 3.11+ daemon TUI (optional)pipx install styrene NixOS configs and device profiles. Board support lives here. The TUI pulls profiles at runtime — you never touch this repo unless you're adding hardware.
Nix device supportRust port of the RNS/LXMF stack. Interop-tested against the Python reference. For Pi Zeros and anything else where a Python runtime is a luxury you don't have.
Rust in progressTransport relay and propagation node at rns.styrene.io. New installs connect here by default. Run your own if you'd rather not depend on ours — it's the same software.
transport propagationTransport
Reticulum picks the path. The stack uses whatever's there and keeps working when pieces disappear. Nodes promote automatically as faster transports become available.
Promotion is automatic. Two nodes on LoRa discover a shared WiFi mesh — they upgrade to WireGuard without operator intervention. WiFi goes down — they fall back to LoRa and keep talking.
Get Started
Install it, run it, you're on the mesh.