How ruderigo/labuche-stump works
Project Stump is an off-grid community node split across a WiFi-connected CAM hub and a low-power Heltec mesh control plane. A walk-up visitor joins the local network, reaches the web server, and uses chat, rooms, files, bulletin-board content, and project information; chat can also bridge to Reticulum/LXMF peers over LoRa. The README documents access profiles, multilingual pages, direct messages, plugins, and firmware delivery. Some subsystems are represented from README descriptions because their source was not sampled; uncertain internal wiring is omitted.
Main entry points: barkeep.py HTTP server and router · example_node.py Hub assembly · rrc.py Chat and rooms · rrc_mesh.py Chat mesh bridge
Components 25
Hub startup
- Boot entry
final_firmware/main.py - Boot retry logic
final_firmware/boot_common.py - Hub assembly
final_firmware/example_node.py - Node configuration
final_firmware/config.py
Local web experience
- HTTP server and router
final_firmware/barkeep.py - Captive portal
final_firmware/captive_portal.py - Language support
final_firmware/i18n.py - Firmware page
final_firmware/flasher_ui.py
Community services
- Chat and rooms
final_firmware/rrc.py - Chat interface
final_firmware/rrc_ui.py - Chat mesh bridge
final_firmware/rrc_mesh.py - Bulletin board
final_firmware/billboard.py - Files and downloads
final_firmware/fserv.py - Chat bot
final_firmware/fservbot/core.py
Encrypted mesh
- Reticulum routing
final_firmware/urns/reticulum.py - Packet transport
final_firmware/urns/transport.py - LoRa interface
final_firmware/urns/interfaces/lora.py - LXMF messaging
final_firmware/urns/lxmf.py - Identity and router setup
final_firmware/node_common.py
Identity and access
- Access and identity
final_firmware/stumpid/core.py
Other components
- Phone visitor
- CAM hub
- Heltec radio node
- Mesh peer
- SD storage
Connections 27
- Boot entry → Boot retry logic: starts boot
- Boot retry logic → Hub assembly: boots module
- Hub assembly → Node configuration: loads settings
- Hub assembly → HTTP server and router: starts server
- Hub assembly → Chat and rooms: initializes chat
- Hub assembly → Identity and router setup: sets up mesh
- Phone visitor → CAM hub: joins WiFi
- CAM hub → Captive portal: provides onboarding
- Phone visitor → HTTP server and router: requests pages
- HTTP server and router → Chat and rooms: handles chat
- HTTP server and router → Chat interface: serves interface
- HTTP server and router → Bulletin board: serves board
- HTTP server and router → Files and downloads: serves files
- HTTP server and router → Firmware page: renders firmware page
- HTTP server and router → Language support: translates content
- Chat and rooms → Access and identity: checks access
- Chat and rooms → Chat bot: dispatches bot input
- Chat mesh bridge → Chat and rooms: bridges chat
- Chat mesh bridge → LXMF messaging: sends mesh messages
- Identity and router setup → Reticulum routing: initializes routing
- Reticulum routing → Packet transport: routes packets
- Packet transport → LoRa interface: sends radio traffic
- LoRa interface → Heltec radio node: transmits LoRa
- Heltec radio node → Mesh peer: exchanges packets
- Bulletin board → SD storage: reads and writes
- Files and downloads → SD storage: reads and writes
- Chat bot → SD storage: persists settings