How lelloman/rns-rs works
rns-rs is a Rust implementation of the Reticulum networking stack, with node runtimes and user-facing tools layered over its protocol and cryptography crates. A typical workflow is to start a node, connect it through a configured interface, and let transport routing deliver packets; applications can then use links and resource transfers. The workspace also provides administration, programmable hooks, Git-over-Reticulum, VPN tunneling, and embedded-device support. The README documents these capabilities; sampled source confirms selected transport, link, hole-punch, hook, Git, server, and Android behavior, so unsampled subsystem wiring is shown only where documented.
Main entry points: node.rs Network node and driver · lib.rs Protocol and transport · supervisor.rs Node supervisor · manager.rs Hook runtime
Components 22
Protocol and crypto
- Cryptographic primitives
rns-crypto/src/lib.rs - Protocol and transport
rns-core/src/lib.rs - NAT hole punching
rns-core/src/holepunch/engine.rs
Node runtime
- Network node and driver
rns-net/src/node.rs - Network interfaces
rns-net/src/interface/mod.rs - Link and resource manager
rns-net/src/common/link_manager.rs - Node persistence
rns-net/src/storage.rs
Operations
- Node supervisor
rns-server/src/supervisor.rs - Embedded control plane
rns-server/src/control_plane.rs - Control CLI and APIs
rns-ctl/src/main.rs - Node CLI tools
rns-cli/src/lib.rs - Hook runtime
rns-hooks/src/manager.rs - Statistics hook
rns-stats-hook/src/lib.rs - Sentinel policy hook
rns-sentinel-hook/src/lib.rs
Applications
- Git over Reticulum
rns-git/src/lib.rs - Repository server
rns-git/src/server.rs - VPN tunnel runtime
rns-tun/src/lib.rs - Android VPN client
rns-tun-android/app/src/main/java/com/lelloman/rntun/service/RntunVpnService.kt
Device support
- ESP32 LoRa node
rns-esp32/src/main.rs
Other components
- Node operator
- Network peers
- Application client
Connections 26
- Node operator → Node supervisor: starts node
- Node operator → Control CLI and APIs: administers
- Node operator → Node CLI tools: runs commands
- Application client → Git over Reticulum: uses repositories
- Application client → VPN tunnel runtime: uses VPN
- Network node and driver → Protocol and transport: routes packets
- Protocol and transport → Cryptographic primitives: uses primitives
- Network node and driver → Network interfaces: dispatches traffic
- Network interfaces → Network peers: sends and receives
- Network node and driver → Link and resource manager: manages links
- Link and resource manager → Protocol and transport: uses link engines
- Network node and driver → Node persistence: loads and saves state
- Protocol and transport → NAT hole punching: provides state machine
- Node supervisor → Network node and driver: runs node
- Node supervisor → Embedded control plane: hosts
- Control CLI and APIs → Embedded control plane: controls node
- Node CLI tools → Network node and driver: operates node
- Network node and driver → Hook runtime: runs hooks
- Hook runtime → Statistics hook: loads hook
- Hook runtime → Sentinel policy hook: loads hook
- Git over Reticulum → Network node and driver: communicates over
- Repository server → Network node and driver: registers link destination
- Android VPN client → VPN tunnel runtime: starts native session
- VPN tunnel runtime → Network node and driver: uses Reticulum
- ESP32 LoRa node → Protocol and transport: runs transport
- ESP32 LoRa node → Network interfaces: connects LoRa