No description
Find a file
2026-06-05 02:02:25 +00:00
tests auto-discovery toggle, auto-prune with customizable retention 2026-06-05 01:00:47 +00:00
tinyweb_forum manual sync by default: sync now button, auto-sync toggle 2026-06-05 02:02:25 +00:00
.gitignore initial: decentralized link-sharing forum for TinyWeb 2026-06-04 08:23:51 +00:00
pyproject.toml initial: decentralized link-sharing forum for TinyWeb 2026-06-04 08:23:51 +00:00
README.md gossip sync: sync with random 20 peers per cycle instead of all peers 2026-06-05 01:58:32 +00:00

tinyweb-forum

A decentralized link-sharing forum for TinyWeb. Share URLs and discuss them with other TinyWeb instances over the Reticulum mesh.

Install

pip install tinyweb-forum

Enable the forum in TinyWeb's customize page (/style).

Development

git clone https://git.derickphan.com/lichenblankie/tinyweb-forum
pip install -e .

How it works

  • Each TinyWeb instance stores forum threads and posts in its own forum.db
  • Instances sync content with each other over RNS every 5 minutes
  • Authors are identified by a short pseudonymous hash (no names, no accounts)
  • No global server, no algorithms, no tracking

Features

  • Threads — share a URL or start a discussion with text
  • Replies — reply to threads, with inline URL extraction and "+ save" links
  • Upvotes — toggle upvote/downvote, scores propagate via sync
  • Edit — edit your own threads (new version syncs to peers)
  • Retract — retract your own threads and posts (retraction signal gossips to peers)

Moderation

All moderation is local — you control your view:

  • Block author[block] link on posts and thread meta hides all content from that identity across your instance
  • Auto-block — when 3+ of your peers have blocked the same identity, it's auto-blocked for you too (configurable threshold)
  • Mute thread — hide a thread from the listing
  • Keyword filters — hide threads matching keywords
  • Instance sync — choose which peers to sync with; unsync at any time

Sync

  • Forum instances auto-discover each other via RNS announces
  • Content is exchanged as JSON over RNS links every 5 minutes
  • Peer discovery propagates through gossip — each instance shares its known peers
  • At scale (>20 peers), sync uses random gossip: each cycle picks 20 random peers instead of all peers
  • This ensures content converges epidemically regardless of network size (content reaches all nodes within ~O(log N) cycles)
  • Block lists and retractions are gossiped alongside content
  • Only new/updated content is transferred (timestamp-based)
  • Auto-discovery can be disabled in the moderation page

Storage

  • Threads are pruned after 30 days by default (configurable in moderation page)
  • Set retention to 0 to keep everything indefinitely