Reticulum Community Hub (RCH)
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.
Why?
"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
What it does
- One-to-many and topic-scoped message fan-out over LXMF.
- Telemetry collection and on-demand telemetry responses.
- File and image attachment storage with retrieval and deletion by ID.
- sci-fi themed admin UI.
- Operator-managed map markers backed by Reticulum object identities and telemetry updates.
- TAK bridge for chat and location updates (Optional).
- Capability announces embedded in Reticulum announces for feature discovery.
What it looks like
Quickstart (from source)
- Clone and enter the repo.
git clone https://github.com/FreeTAKTeam/Reticulum-Community-Hub.git cd Reticulum-Community-Hub
- Create and activate a virtual environment.
python -m venv .venv # Linux/macOS source .venv/bin/activate # Windows (PowerShell) .venv\Scripts\Activate.ps1
- Install dependencies.
python -m pip install --upgrade pip python -m pip install -e .
- Prepare a storage directory and config.
- Copy
RCH_Store/config.iniinto your storage directory. - Adjust paths in the
[hub],[files], and[images]sections.
- Copy
- Start the hub.
python -m reticulum_telemetry_hub.reticulum_server \ --storage_dir ./RCH_Store \ --display_name "RCH"
Or start the hub + northbound API locally with the new entrypoint:rch start --data-dir ./RCH_Store --port 8000 --log-level info
For configuration, services, and client usage details, see docs/userManual.md.
Install from PyPI
- Create and activate a virtual environment.
python -m venv .venv # Linux/macOS source .venv/bin/activate # Windows (PowerShell) .venv\Scripts\Activate.ps1
- Install the package.
python -m pip install --upgrade pip python -m pip install ReticulumCommunityHub
- Start the hub (point at your storage directory).
python -m reticulum_telemetry_hub.reticulum_server --storage_dir /path/to/RCH_Store
Northbound API and admin UI
The northbound FastAPI service exposes REST + WebSocket endpoints used by the admin UI.
-
Run the hub + API together (recommended for chat/message sending):
rch start --data-dir ./RCH_Store --port 8000 --log-level info
The gateway binds to
127.0.0.1for local-only access. -
Check or stop the backend:
rch status --data-dir ./RCH_Store rch stop --data-dir ./RCH_Store
-
Run only the API server (read-only unless you provide a message dispatcher):
uvicorn reticulum_telemetry_hub.northbound.app:app --host 127.0.0.1 --port 8000
-
Protect admin endpoints by setting
RCH_API_KEY(acceptsX-API-Keyor Bearer token). -
Marker identity encryption is derived from the hub identity (no extra key configuration required).
-
The admin UI sidebar can be collapsed and pinned (stored per-browser).
-
Telemetry map markers render MDI icons when telemetry payloads include
telemetry_type,symbol,category, ortype. -
The WebMap shows a live latitude/longitude readout for the map cursor.
-
Marker symbols load from
rch-symbols.yaml(override withRTH_SYMBOL_REGISTRY_PATH). -
/api/v1/app/infoincludes the hub Reticulum destination (reticulum_destination) for display on the About page. -
File/image attachments support delete operations that remove both metadata and on-disk content (
DELETE /File/{id},DELETE /Image/{id}). -
The UI lives in
ui/:cd ui npm install npm run dev
The UI uses Vite 6 (installed via
npm install).Set
VITE_RCH_BASE_URLwhen the UI should target a different hub.
Electron desktop packaging (Windows + Raspberry Pi OS)
The electron/ folder contains a minimal desktop wrapper that bundles the UI and
loads the hub API from 127.0.0.1.
- Install Electron dependencies:
cd electron npm install
- Run the Electron shell in dev mode (starts the Vite dev server):
npm run dev
- Build installers:
npm run dist
- Build Windows installer + portable EXE:
npm run dist -- --win
Electron 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:
- Installer:
RCH_win Install_<version>.exe - Portable:
RCH_win Portable_<version>.exe
For 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)
Documentation
docs/README.md(documentation map)docs/userManual.md(user and operator guide)architecture.md(system overview and references)API/ReticulumCommunityHub-OAS.yaml(REST/OpenAPI reference)
Contributing
We welcome and encourage contributions. Please include appropriate tests and follow the project coding standards.
Linting
RCH uses Ruff for linting with a 120-character line length and ignores E203 to align
with Black-style slicing.
-
With Poetry (installs dev dependencies, including Ruff):
poetry install --with dev poetry run ruff check .
-
With a plain virtual environment:
python -m pip install ruff ruff check .
License
This project is licensed under the Eclipse Public License (EPL). For more details, refer to the
LICENSE file in the repository.
Support
For issues or support, open a GitHub issue
Support Reticulum
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:
- Monero: 84FpY1QbxHcgdseePYNmhTHcrgMX4nFfBYtz2GKYToqHVVhJp8Eaw1Z1EedRnKD19b3B8NiLCGVxzKV17UMmmeEsCrPyA5w
- Ethereum: 0xFDabC71AC4c0C78C95aDDDe3B4FA19d6273c5E73
- Bitcoin: 35G9uWVzrpJJibzUwpNUQGQNFzLirhrYAH
- Ko-Fi: https://ko-fi.com/markqvist
Metadata
Release files for ReticulumTelemetryHub 1.34.0
For a detailed explanation of source distributions (sdists) and built distributions (wheels), please see the package formats documentation.
Source distribution (sdist)
| File | Size | Uploaded | |
|---|---|---|---|
| reticulumtelemetryhub-1.34.0.tar.gz | 233.4 kB | Details |
Built distribution (wheel)
| File | Interpreter | ABI | Platform | Reset |
|---|---|---|---|---|
| reticulumtelemetryhub-1.34.0-py3-none-any.whl | Python 3 | none | any | Details |
Total release size: 521.0 kB
Release files / reticulumtelemetryhub-1.34.0.tar.gz
| Download URL | reticulumtelemetryhub-1.34.0.tar.gz |
|---|---|
| Size | 233.4 kB |
| Tags | Source |
|
SHA-256 checksum How to use checksums |
4931b5f3f4c172023c430efcc1a31beb5709e9ba5ad9418c713b4fc8ced4076d
|
|
BLAKE2b-256 checksum How to use checksums |
866bcf2edfa2e17469a8458cc6742f36e8f953210a1fbc3882f961f3d581cd60
|
| Upload date | |
|
Uploaded using Trusted Publishing? What is trusted publishing? |
Yes |
| Uploaded via |
twine/6.1.0 CPython/3.13.7
|
Provenance
Provenance describes where a file came from. On PyPI, provenance is shared via attestations, which provide a verifiable record of the build or publishing details. View details, limitations and caveats.
PyPI Publish Attestation
PyPI verified that this artifact, at this checksum, originated from the publisher listed below.
Signed by GitHub Actions, verified by PyPI on Feb 8, 2026.
Transparency logRelease files / reticulumtelemetryhub-1.34.0-py3-none-any.whl
| Download URL | reticulumtelemetryhub-1.34.0-py3-none-any.whl |
|---|---|
| Size | 287.6 kB |
| Tags | Python 3 |
|
SHA-256 checksum How to use checksums |
b79cc4d19546200f4cbf61251a8e18b147979c06353457cd384bf96ea98356d9
|
|
BLAKE2b-256 checksum How to use checksums |
52e01d12af5648c03b1a683d90484b6ddd3eb2728f1b7097de027da39e86f226
|
| Upload date | |
|
Uploaded using Trusted Publishing? What is trusted publishing? |
Yes |
| Uploaded via |
twine/6.1.0 CPython/3.13.7
|
Provenance
Provenance describes where a file came from. On PyPI, provenance is shared via attestations, which provide a verifiable record of the build or publishing details. View details, limitations and caveats.
PyPI Publish Attestation
PyPI verified that this artifact, at this checksum, originated from the publisher listed below.
Signed by GitHub Actions, verified by PyPI on Feb 8, 2026.
Transparency log