https://github.com/henrixd7/retiboard
A sovereign, decentralized p2p imageboard over Reticulum. Features LXMF discovery, chunked multi-peer transfers, and user-local persistence. Designed for ephemeral, anonymous, end-to-end encrypted content without centralized servers. A system where every client is its own node, cache, and master of its own data.
https://github.com/henrixd7/retiboard
imageboard p2p reticulum
Last synced: 4 months ago
JSON representation
A sovereign, decentralized p2p imageboard over Reticulum. Features LXMF discovery, chunked multi-peer transfers, and user-local persistence. Designed for ephemeral, anonymous, end-to-end encrypted content without centralized servers. A system where every client is its own node, cache, and master of its own data.
- Host: GitHub
- URL: https://github.com/henrixd7/retiboard
- Owner: henrixd7
- License: other
- Created: 2026-04-01T09:34:02.000Z (4 months ago)
- Default Branch: main
- Last Pushed: 2026-04-01T10:49:29.000Z (4 months ago)
- Last Synced: 2026-04-01T12:18:50.617Z (4 months ago)
- Topics: imageboard, p2p, reticulum
- Language: Python
- Homepage:
- Size: 379 KB
- Stars: 0
- Watchers: 0
- Forks: 0
- Open Issues: 0
-
Metadata Files:
- Readme: README.md
- License: LICENSE
Awesome Lists containing this project
README
# RetiBoard (v3.6.4)
Sovereign, Ephemeral, Decentralized Imageboard over [Reticulum](https://reticulum.network/).
RetiBoard is a censorship-resistant anonymous imageboard built on the Reticulum Network Stack (RNS). It recreates the classic imageboard experience—catalog views, thread bumping, and media sharing—without any centralized storage or infrastructure.


## Core Pillars
1. **Sovereign & Ephemeral** — All data lives on end-user machines. Threads are short-lived (12h default TTL) and aggressively pruned.
2. **Infrastructure Neutrality** — Reticulum nodes only route; they do not store or index.
3. **Strict Content Opacity** — The backend is 100% content-blind. It handles encrypted blobs but never holds decryption keys or inspects payloads.
4. **Client-Side Governance** — Moderation, filtering, and fetch policies are 100% local decisions.
## Features
- **P2P Sync:** Gossip-based synchronization via LXMF.
- **Chunked Transfers:** Multi-peer payload transfer with resume-safe fetching.
- **Privacy:** AES-GCM encryption with HKDF key derivation (client-side).
- **Anti-Spam:** Per-board Proof-of-Work (PoW) difficulty.
- **Network Resilience:** Optimized for both high-bandwidth and LoRa/low-speed links.
## Privacy
RetiBoard is designed for strong practical privacy when used correctly.
- **Encrypted Content:** Post content is encrypted before storage or transfer.
- **Local Decryption:** Content is decrypted locally in the browser, not on the backend.
- **Infrastructure Neutrality:** Routing nodes forward traffic but do not need your decryption keys.
- **User-Controlled Identity:** Reticulum identities are local, portable, and disposable.
The main privacy rule is simple: your first-hop connection matters. If you connect to a TCP node directly, that node can see your IP address. For better privacy, use Tor, a VPN, or another privacy-preserving first hop, and treat identities as compartmentalized personas when needed.
For practical privacy guidance, see:
`docs/privacy.md`
## Prerequisites
- **Python:** 3.10+
- **Node.js:** 18+ (for frontend build)
## Developer Setup
RetiBoard is currently in active development. Binary releases are not yet provided, and building from source is the recommended path for enthusiasts. See `docs/compile-nutka-binary.md`.
### 1. Backend Installation
```bash
# Clone the repository
git clone https://github.com/user/retiboard.git
cd retiboard
# Install in editable mode
pip install -e .
# — or with uv —
uv sync
```
### 2. Frontend Build
```bash
cd frontend
npm install
npm run build
cd ..
```
### 3. Running RetiBoard
```bash
# Start as a full client (Web UI + Node)
python -m retiboard
# Start in Relay Mode (Headless, no UI, purely for network participation)
python -m retiboard --relay
```
Access the Web UI at `http://127.0.0.1:8787` (default).
## Known Issues & Notes
- **Linux Binary Build:** Compiling a standalone binary (e.g., via Nuitka) is currently non-trivial and may require manual patches to the `rns` library's Identity initialization. It is recommended to run via the Python interpreter for now.
- **Identity:** RetiBoard uses native Reticulum identities. Ensure your `~/.retiboard/identity` is backed up if you wish to preserve your node's identity.
## Specification
For detailed protocol, synchronization, and data model information, see:
`docs/RetiBoard_v3_6_4_spec.md`
## License
RetiBoard is released under the **GNU Affero General Public License v3.0 (AGPL-3.0)**. See the `LICENSE` file for details.