No description
Find a file
2026-06-17 19:11:25 +00:00
.github add CONTRIBUTING.md and issue template 2026-06-09 03:15:55 +00:00
tests auto-discovery toggle, auto-prune with customizable retention 2026-06-05 01:00:47 +00:00
tinyweb_forum forum trust circle: trust-gated content exchange via subscription graph 2026-06-17 19:10:32 +00:00
.gitignore add SECURITY.md, tighten .gitignore 2026-06-09 03:11:43 +00:00
CONTRIBUTING.md add CONTRIBUTING.md and issue template 2026-06-09 03:15:55 +00:00
LICENSE add AGPLv3 license 2026-06-09 01:10:04 +00:00
pyproject.toml add AGPLv3 license 2026-06-09 01:10:04 +00:00
README.md readme: document trust circle design 2026-06-17 19:11:25 +00:00
SECURITY.md add SECURITY.md, tighten .gitignore 2026-06-09 03:11:43 +00:00

tinyweb-forum

A link-sharing forum plugin for TinyWeb. Threads and posts are stored locally and exchanged with other TinyWeb instances over the Reticulum mesh.

Contents

About this project

Code generated by LLMs. Built by one person.

Install

pip install tinyweb-forum

Enable it on TinyWeb's /style page under "Forum".

How it works

  • Threads and posts are stored in ~/.tinyweb/forum.db (separate from TinyWeb's search index)
  • Instances auto-discover each other via RNS announces — no manual setup
  • Sync is manual by default: click "sync now" on the forum page. Auto-sync every 5 minutes is optional (toggle on moderation page)
  • At scale, sync uses epidemic gossip: 20 random peers per cycle, converging within ~O(log N) cycles
  • Authors are identified by a short pseudonymous identity hash (no accounts, no sign-up)
  • Auto-discovery can be disabled in the moderation page
  • Threads are auto-pruned after 30 days (configurable, or set to 0 to keep everything)
  • Moderation is local: block authors, mute threads, keyword filters, and gossip block lists with peers (auto-block after 3 peer reports)

Trust circle

Content exchange is gated by a trust graph derived from your TinyWeb subscriptions:

  • Only peers you subscribe to (with forum enabled) are trusted sources of content
  • Content from trusted peers propagates transitively: you see posts from their trusted peers, and theirs, and so on — no hop limit
  • No open registration: a new identity has zero connections and zero reach. No bot can join without a human vouching for them
  • This is structural: spam is not a moderation problem, it's a graph problem

Trust is seeded from TinyWeb's subscription page — each subscription has a "forum: on/off" toggle. When enabled, that peer's forum content (and their transitive trust network) enters your view.

Moderation

All moderation is local — it controls what you see:

  • Block author — hides all content from that identity and cascades: the blocked peer's downstream trust network (peers they vouched for) is also removed from your view. If a downstream peer has an alternate trust path from another source you trust, they survive the cascade.
  • Auto-block — when 3+ of your peers have blocked the same identity, it blocks for you too (with cascade)
  • Mute thread — hides a thread from the listing
  • Keyword filters — hides threads matching keywords
  • Instance sync — choose which peers to sync with; unsync at any time

Sync

  • Instances discover each other via RNS announces — any forum on the mesh finds you
  • Content is exchanged as JSON over RNS links
  • Manual by default — click "sync now" on the forum listing or moderation page
  • Auto-sync every 5 minutes can be enabled on the moderation page
  • Auto-discovery can be disabled (manual instance add only)
  • Known peers propagate through gossip — each instance shares its peers during sync
  • Block lists and retractions are gossiped alongside content
  • Only new/updated content is transferred (timestamp-based)
  • When >20 peers, each cycle syncs with a random 20 — content converges epidemically

Storage

  • Threads older than 30 days are auto-pruned (configurable on moderation page)
  • Set retention to 0 to keep everything indefinitely
  • Database location: ~/.tinyweb/forum.db

Known rough edges

  • Authors are pseudonymous — no identities, no accounts
  • No rate limiting on forum POST endpoints
  • Retractions are voluntary — peers can ignore them
  • Block gossip can be gamed (requires collusion by 3+ peers on Reticulum)
  • Threads prune after 30 days by default
  • The trust circle replaces open discovery: you can't find interesting strangers through topic blooms alone. Discovery is through the existing subscription graph — you find people your trusted peers already know.
  • Best-effort maintenance

Security

  • No authentication — The forum inherits TinyWeb's access model. Anyone who can reach the HTTP port (localhost by default) can post, edit, retract, block, and change moderation settings. See TinyWeb's Security section for --bind 0.0.0.0.
  • Retractions are voluntary — Retracting a thread or post sends a signal to peers, but any peer can ignore it. "Retract" is a polite request, not a guaranteed delete.
  • Block gossip can be gamed — Auto-block triggers after 3 peer reports. On Reticulum this requires 3+ real instances to collude, which is impractical at mesh scale, but is not cryptographically enforced.
  • No rate limiting — Forum POST endpoints have no throttling. Low risk since the HTTP port is localhost-only by default.
  • Trust circle — Spam resistance is structural (no open entry), not procedural. The weakest point is social engineering: a trusted human adding a bad actor. Mitigated by cascade removal on block — blocking a peer removes their entire downstream trust network from your view.