{
  "id": 8944531,
  "title": "Squalk: an old-school forum engine built on Nostr (NIP-29 groups, NIP-7D threads)",
  "url": "https://urgent.news/2026/09/21/squalk-an-old-school-forum-engine-built-on-nostr-nip-29-groups-nip-7d",
  "topic": "tech",
  "section": "Tech",
  "published": "2026-09-21T14:44:12.000Z",
  "source": {
    "name": "Lobsters",
    "slug": "lobsters",
    "url": "https://github.com/dtonon/squalk"
  },
  "original_language": "en",
  "account": "An old-school forum engine named Squalk has been developed on top of the Nostr protocol. Rather than modern, fast chat-like interfaces, Squalk aims to provide slow, asynchronous threads that remain readable and searchable over time. This is achieved by utilizing the Nostr open protocol, where users possess a keypair, posts are signed events, and interchangeable relays store and serve the data, as opposed to a private database.\n\nThe forum system operates by presenting a view over data hosted on relays. Groups are defined as NIP-29 rooms, while threads are represented as NIP-7D events. The user's own keypair serves as their identity within the system. This design ensures that the software and the community are decoupled: any other client adhering to the same specifications (such as Flotilla or Nostrord) can read and write the same conversations. Additionally, if the deployment of Squalk were to disappear, the history and identities would still survive on the relay.\n\nFrom a technical standpoint, Squalk is built using a single SvelteKit codebase, which can be compiled either as a static SPA or as a server-rendered Node application. The server-side rendering mode generates only the anonymous view, allowing threads to be crawlable. A stale-while-revalidate snapshot cache is employed in front of the relay queries to enhance performance. The content is rendered using djot instead of markdown. Deployment involves a NIP-29 relay (Zooid) coupled with a single systemd unit.\n\nThe Squalk project is currently in a pilot stage with real threads accessible at https://nostr-proto.org. The site is also available as a test instance, where users can freely experiment without an account at https://squalk-test.dtonon.com. However, it is important to note that Nostr is a niche protocol, and key management still poses challenges for non-enthusiasts. Moreover, relay-side moderation tools are still in their early stages. Feedback on the architecture is highly appreciated!",
  "summary": "I miss classic forums: slow, asynchronous threads that stay readable and searchable for years, instead of knowledge dissolving into chat scrollback. Squalk is my attempt to rebuild that on top of Nostr, an open protocol where users hold a keypair, posts are signed events, and interchangeable relays store and serve them, instead of a private database. The design in short: a forum is a view over…",
  "key_points": [],
  "editors_take": null,
  "illustration": null,
  "coverage": {
    "outlets": 1,
    "also_reported_by": []
  },
  "ai_generated": true,
  "disclaimer": "Summaries, key points and the editor’s take are written by software from other outlets’ reporting and may contain errors — always check the linked original."
}