{"id":47737789,"url":"https://github.com/henrixd7/retiboard","last_synced_at":"2026-04-02T23:01:34.019Z","repository":{"id":348489115,"uuid":"1198290982","full_name":"henrixd7/retiboard","owner":"henrixd7","description":"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.","archived":false,"fork":false,"pushed_at":"2026-04-01T10:49:29.000Z","size":388,"stargazers_count":0,"open_issues_count":0,"forks_count":0,"subscribers_count":0,"default_branch":"main","last_synced_at":"2026-04-01T12:18:50.617Z","etag":null,"topics":["imageboard","p2p","reticulum"],"latest_commit_sha":null,"homepage":"","language":"Python","has_issues":true,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":null,"license":"other","status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/henrixd7.png","metadata":{"files":{"readme":"README.md","changelog":null,"contributing":null,"funding":null,"license":"LICENSE","code_of_conduct":null,"threat_model":null,"audit":null,"citation":null,"codeowners":null,"security":null,"support":null,"governance":null,"roadmap":null,"authors":null,"dei":null,"publiccode":null,"codemeta":null,"zenodo":null,"notice":null,"maintainers":null,"copyright":null,"agents":null,"dco":null,"cla":null}},"created_at":"2026-04-01T09:34:02.000Z","updated_at":"2026-04-01T10:49:34.000Z","dependencies_parsed_at":null,"dependency_job_id":null,"html_url":"https://github.com/henrixd7/retiboard","commit_stats":null,"previous_names":["henrixd7/retiboard"],"tags_count":1,"template":false,"template_full_name":null,"purl":"pkg:github/henrixd7/retiboard","repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/henrixd7%2Fretiboard","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/henrixd7%2Fretiboard/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/henrixd7%2Fretiboard/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/henrixd7%2Fretiboard/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/henrixd7","download_url":"https://codeload.github.com/henrixd7/retiboard/tar.gz/refs/heads/main","sbom_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/henrixd7%2Fretiboard/sbom","scorecard":null,"host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":286080680,"owners_count":31318133,"icon_url":"https://github.com/github.png","version":null,"created_at":"2022-05-30T11:31:42.601Z","updated_at":"2026-04-02T21:35:00.834Z","status":"ssl_error","status_checked_at":"2026-04-02T21:34:59.806Z","response_time":89,"last_error":"SSL_connect returned=1 errno=0 peeraddr=140.82.121.6:443 state=error: unexpected eof while reading","robots_txt_status":"success","robots_txt_updated_at":"2025-07-24T06:49:26.215Z","robots_txt_url":"https://github.com/robots.txt","online":false,"can_crawl_api":true,"host_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub","repositories_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories","repository_names_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repository_names","owners_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners"}},"keywords":["imageboard","p2p","reticulum"],"created_at":"2026-04-02T23:01:33.211Z","updated_at":"2026-04-02T23:01:34.012Z","avatar_url":"https://github.com/henrixd7.png","language":"Python","funding_links":[],"categories":[],"sub_categories":[],"readme":"# RetiBoard (v3.6.4)\n\nSovereign, Ephemeral, Decentralized Imageboard over [Reticulum](https://reticulum.network/).\n\nRetiBoard 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.\n\n![RetiBoard Home View](docs/screenshot-home.png)\n![RetiBoard Terminal](docs/screenshot-terminal.png)\n\n## Core Pillars\n\n1.  **Sovereign \u0026 Ephemeral** — All data lives on end-user machines. Threads are short-lived (12h default TTL) and aggressively pruned.\n2.  **Infrastructure Neutrality** — Reticulum nodes only route; they do not store or index.\n3.  **Strict Content Opacity** — The backend is 100% content-blind. It handles encrypted blobs but never holds decryption keys or inspects payloads.\n4.  **Client-Side Governance** — Moderation, filtering, and fetch policies are 100% local decisions.\n\n## Features\n\n- **P2P Sync:** Gossip-based synchronization via LXMF.\n- **Chunked Transfers:** Multi-peer payload transfer with resume-safe fetching.\n- **Privacy:** AES-GCM encryption with HKDF key derivation (client-side).\n- **Anti-Spam:** Per-board Proof-of-Work (PoW) difficulty.\n- **Network Resilience:** Optimized for both high-bandwidth and LoRa/low-speed links.\n\n## Privacy\n\nRetiBoard is designed for strong practical privacy when used correctly.\n\n- **Encrypted Content:** Post content is encrypted before storage or transfer.\n- **Local Decryption:** Content is decrypted locally in the browser, not on the backend.\n- **Infrastructure Neutrality:** Routing nodes forward traffic but do not need your decryption keys.\n- **User-Controlled Identity:** Reticulum identities are local, portable, and disposable.\n\nThe 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.\n\nFor practical privacy guidance, see:\n`docs/privacy.md`\n\n## Prerequisites\n\n- **Python:** 3.10+\n- **Node.js:** 18+ (for frontend build)\n\n## Developer Setup\n\nRetiBoard 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`.\n\n### 1. Backend Installation\n```bash\n# Clone the repository\ngit clone https://github.com/user/retiboard.git\ncd retiboard\n\n# Install in editable mode\npip install -e .\n# — or with uv —\nuv sync\n```\n\n### 2. Frontend Build\n```bash\ncd frontend\nnpm install\nnpm run build\ncd ..\n```\n\n### 3. Running RetiBoard\n```bash\n# Start as a full client (Web UI + Node)\npython -m retiboard\n\n# Start in Relay Mode (Headless, no UI, purely for network participation)\npython -m retiboard --relay\n```\n\nAccess the Web UI at `http://127.0.0.1:8787` (default).\n\n## Known Issues \u0026 Notes\n\n- **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.\n- **Identity:** RetiBoard uses native Reticulum identities. Ensure your `~/.retiboard/identity` is backed up if you wish to preserve your node's identity.\n\n## Specification\n\nFor detailed protocol, synchronization, and data model information, see:\n`docs/RetiBoard_v3_6_4_spec.md`\n\n## License\n\nRetiBoard is released under the **GNU Affero General Public License v3.0 (AGPL-3.0)**. See the `LICENSE` file for details.\n","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fhenrixd7%2Fretiboard","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Fhenrixd7%2Fretiboard","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fhenrixd7%2Fretiboard/lists"}