An open API service indexing awesome lists of open source software.

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.

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.

![RetiBoard Home View](docs/screenshot-home.png)
![RetiBoard Terminal](docs/screenshot-terminal.png)

## 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.