
Reticulum Community Hub (RCH) is a shared coordination point for mesh networks. It allows people and groups to exchange messages, share situational updates, and distribute files in a structured and reliable way, even across intermittent or low-connectivity environments, while remaining independent from centralized internet services.
"RCH begins from a simple refusal: When this illusion breaks, highly optimized global systems fail first."
Read our full manifesto: docs/Manifesto_Reticulum_Community_Hub.md

bash
git clone https://github.com/FreeTAKTeam/Reticulum-Community-Hub.git
cd Reticulum-Community-Hubbash
python -m venv .venv
# Linux/macOS
source .venv/bin/activate
# Windows (PowerShell)
.venv\Scripts\Activate.ps1bash
python -m pip install --upgrade pip
python -m pip install -e .--storage_dir; if config.ini or lxmf-router.ini is missing, RCH writes packaged defaults for both files.reticulum_telemetry_hub/config/default_config.ini.reticulum_telemetry_hub/config/default_lxmf_router_config.ini.[hub], [files], and [images] sections as needed.config.ini [propagation] and [lxmf] values override matching keys from lxmf-router.ini.bash
python -m reticulum_telemetry_hub.reticulum_server \
--storage_dir ./RCH_Store \
--display_name "RCH"
Or start the hub + northbound API with the new entrypoint:
bash
rch start --data-dir ./RCH_Store --port 8000 --log-level infoFor configuration, services, and client usage details, see docs/userManual.md.
RNS 1.2.0 and LXMF 0.9.6.RNS 1.2.0 adds upstream Git-over-Reticulum support, the rnsh utility, and transport/runtime cleanup; LXMF remains at 0.9.6.2 for the RCH capability payload. Mixed-version deployments can lose capability discovery until all participating RCH nodes are upgraded.LXMPeer.offer_response() integer error responses and zero-duration stamp-speed calculation because those failure paths remain present in upstream LXMF 0.9.6.bash
python -m venv .venv
# Linux/macOS
source .venv/bin/activate
# Windows (PowerShell)
.venv\Scripts\Activate.ps1bash
python -m pip install --upgrade pip
python -m pip install ReticulumCommunityHubbash
python -m reticulum_telemetry_hub.reticulum_server --storage_dir /path/to/RCH_StoreThe northbound FastAPI service exposes REST + WebSocket endpoints used by the admin UI.
bash
rch start --data-dir ./RCH_Store --port 8000 --api-host 0.0.0.0 --log-level info
By default, the gateway binds to 0.0.0.0 (all interfaces).bash
rch status --data-dir ./RCH_Store
rch stop --data-dir ./RCH_Storebash
uvicorn reticulum_telemetry_hub.northbound.app:app --host 0.0.0.0 --port 8000RTH_API_KEY and send it as X-API-Key or a Bearer token (RCH_API_KEY remains a backward-compatible alias).RTHDelivery envelope carrying Message-ID, Content-Type, Schema-Version, TTL, Priority, Sender, Born, and optional Created-At, and persists retry/ack state in chat history metadata.telemetry_type, symbol, category, or type.rch-symbols.yaml (override with RTH_SYMBOL_REGISTRY_PATH)./api/v1/app/info includes the hub Reticulum destination (reticulum_destination) for display on the About page.DELETE /File/{id}, DELETE /Image/{id}).ui/:bash
cd ui
npm install
npm run dev
The UI uses Vite 6 (installed via npm install).
Set VITE_RCH_BASE_URL and VITE_RTH_WS_BASE_URL when the UI should target a different hub.
For a remote-friendly combined launcher, run ./run_server_ui_remote.sh.
For full setup examples, see docs/remoteAccess.md.
bash
# Linux/macOS
export RTH_API_KEY="change-this"
# Windows PowerShell
$env:RTH_API_KEY = "change-this"bash
rch start --data-dir ./RCH_Store --api-host 0.0.0.0 --port 8000http://<hub-ip>:8000ws://<hub-ip>:8000X-API-Key: <your-key>Authorization: Bearer <your-key>The electron/ folder contains a minimal desktop wrapper that bundles the UI and
loads the hub API from 127.0.0.1.
bash
cd electron
npm installbash
npm run devbash
npm run distbash
npm run dist -- --winElectron packaging expects a bundled backend executable. Install PyInstaller and build it before packaging:
python -m pip install -e .
python -m pip install pyinstaller
cd electron
npm run build:backend
Before each Electron build, the desktop app version is synchronized from
pyproject.toml automatically.
Windows artifact naming:
RCH_win Install_<version>.exeRCH_win Portable_<version>.exeFor Raspberry Pi OS, build on Linux and target the desired architecture:
npm run dist -- --linux --armv7l
npm run dist -- --linux --arm64
Packaged builds default to http://127.0.0.1:8000 for the API when loaded from
file://. Override in the Connect page or set VITE_RTH_BASE_URL /
VITE_RTH_WS_BASE_URL at build time.
Packaged desktop builds also launch the bundled backend automatically. Set
RCH_BACKEND_MANAGED=false to disable autostart, or override with
RCH_DATA_DIR, RCH_BACKEND_PORT, and RCH_LOG_LEVEL.
Marker management endpoints (used by the WebMap UI):
GET /api/markers (list stored markers)GET /api/markers/symbols (list available marker symbols)POST /api/markers (create marker with type/symbol/lat/lon, optional name/category/notes/ttl_seconds)PATCH /api/markers/{object_destination_hash}/position (update marker coordinates)docs/README.md (documentation map)docs/userManual.md (user and operator guide)docs/architecture/architecture.md (system overview and references)docs/southbound.md (LXMF southbound transport and RTHDelivery contract)API/ReticulumCommunityHub-OAS.yaml (REST/OpenAPI reference)We welcome and encourage contributions. Please include appropriate tests and follow the project coding standards.
RCH uses Ruff for linting with a 120-character line length and ignores E203 to align
with Black-style slicing.
bash
poetry install --with dev
poetry run ruff check .
bash
python -m pip install ruff
ruff check .
This project is licensed under the Eclipse Public License (EPL). For more details, refer to the
LICENSE file in the repository.
For issues or support, open a GitHub issue
You can help support the continued development of open, free and private communications systems by donating via one of the following channels to Mark, the original Reticulum author:
$ claude mcp add Reticulum-Community-Hub \
-- python -m otcore.mcp_server <graph>