Built on Reticulum

Mesh comms
for real hardware

Encrypted messaging, cryptographic identity, device provisioning — over Reticulum. TCP, wireless mesh, LoRa radio. Same protocol stack, whatever the transport.

$ pipx install styrene

Three layers, one stack

🔑

Identity

Keys generated on-device. Ephemeral by default, pinned to YubiKey if you want persistence. No accounts, no registration, no server deciding who you are.

📨

Messaging

LXMF — encrypted, store-and-forward. Messages propagate through the mesh until they arrive. Works with Sideband and NomadNet on the same wire.

📡

Provisioning

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.

One TUI, whole mesh

Live screenshots from a running network. Same interface whether you're local or SSH'd in from three continents away.

What ships

The daemon runs everywhere. The TUI is optional. The Rust port is for hardware where Python won't fit.

styrened

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
styrene-edge

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 support
styrene-rs

Rust 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 progress
community hub

Transport 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 propagation

The network you have

Reticulum picks the path. The stack uses whatever's there and keeps working when pieces disappear. Nodes promote automatically as faster transports become available.

WireGuard Tunnel
Full IP — When two nodes share a mesh or LAN, they negotiate a WireGuard tunnel via LXMF. SSH, git, HTTP — line-speed, no configuration. Keys trusted because the RNS identity that delivered them is.
Internet
TCP/IP — Hub or any RNS transport node. Through NAT, through firewalls. Where most installs start.
L2 Mesh
BATMAN-adv — 802.11s wireless mesh, layer 2. Edge devices form the mesh on their own. When the internet drops, this doesn't.
LoRa Radio
RNode — Long range, low bandwidth. For when there is no infrastructure. Reticulum was built for this first.

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.

One command

Install it, run it, you're on the mesh.