Skip to content

Curate links.
Share them across the open social web.

Commonplace is a link collection manager for the open social web. Organise links by topic, invite collaborators, and share collections with people on Mastodon, Bluesky, and RSS — without asking them to sign up anywhere new.

Who uses it, and how

Commonplace is for anyone who curates links and wants to share them with people they already know on the open social web.

Share reading lists with your students

Create a collection for each course or topic. Students follow it from Mastodon or subscribe on Bluesky. New readings appear directly in their timeline, alongside everything else they follow.

Maintain a living bibliography

Add papers, articles, and data sources as you find them. Colleagues follow the collection from any ActivityPub client. The collection is also available as an RSS feed for feed readers.

Build shared reference lists together

Invite co-curators by handle. Anyone can propose links — even from Mastodon, with a reply. Curators approve or dismiss proposals without leaving the interface.

How it works

You create a collection of links around a topic. Add a title, description, and tags. Invite co-curators by their Mastodon or Bluesky handle. When someone adds a link, Commonplace fetches the title and description from the page automatically. Instance admins can also enable preview image display.

Each collection gets its own identity on the open social web. People follow it from their existing Mastodon or Bluesky account, or subscribe via RSS — no new sign-up, no extra app. When you add a link, it lands in their timeline.

You add a link

Paste a URL — title and description are fetched automatically. Add tags and a note.

Collection broadcasts

Your collection has its own address on the open social web. Commonplace sends the update to all followers at once — no cross-posting needed.

Followers see it instantly

The link appears in their existing app — no new account, no redirect, no extra steps.

Log in with your existing identity

No new account, no new password. Commonplace uses the identity you already have on the open web.

What’s in v2.4.7 — and what’s next

Everything below ships in the current release. Items marked with ◦ are planned but not yet built.

Collections & resources

  • Create, edit, and delete collections with title, description, and tags
  • Add links — title and description fetched automatically; preview images available when enabled by admin
  • Public, unlisted, and members-only visibility
  • Manual resource reordering (▲/▼)
  • Pin and vote on resources
  • Batch operations — delete selected, add tags to selected
  • Import from Netscape bookmarks HTML, CSV, and OPML
  • Dead link detection (background worker)
  • Personal inbox collection (auto-created, private)
  • Browser bookmarklet for quick link capture

Collaboration

  • Invite co-curators by Mastodon or Bluesky handle
  • Link proposals — any logged-in user can suggest a link
  • Federated proposals — !propose <url> from any Mastodon client
  • Tag normalisation suggestions (background worker)

Discovery

  • Full-text search across titles, descriptions, and tags
  • Tag browsing — paginated tag cloud with A–Z index
  • Related collections (tag-overlap affinity)
  • Open Graph tags and structured data on all pages
  • RSS feed on every collection and the whole instance
  • Curator notes on individual resources

Federation

  • ActivityPub Group actor per collection (Mastodon, Akkoma, Misskey, GoToSocial, Pixelfed)
  • Instance-level ActivityPub actor — follow the whole instance as @instance@your.domain
  • AT Protocol feed generator per collection and for the whole instance (Bluesky)
  • Firehose WebSocket endpoint for real-time sync

Login

  • Mastodon / Fediverse OAuth
  • Bluesky / AT Protocol OAuth
  • IndieAuth (your own domain)
  • No email or password required

Moderation & admin

  • Resource flagging with reason and note
  • Public abuse report form
  • Public takedown request form
  • Admin panel — suspend, promote, export, delete users
  • Per-domain silence and defederate policies
  • URL blocklist
  • Optional SMTP notifications on new flags and reports

Coming in future releases

  • Real-time collaboration (WebSocket live updates)
  • Collection forking — clone a public collection
  • IndieWeb / Micropub integration
  • File attachments on resources
  • Multi-instance federated search

Recent changes

What has changed in the last few releases.

v2.2.0

Instance-level federation + security hardening

The instance is now a first-class ActivityPub actor — follow @instance@your.domain from Mastodon to receive updates whenever a new public collection is created. An instance-level RSS feed and Bluesky feed URI are both available from the subscribe button on the home page. Security headers (CSP, HSTS, X-Frame-Options, and more) are now set on every response, and a global 4 MB request body limit guards against oversized payloads.

2026-04-07

v2.1.0

IndieAuth login

Log in with your personal domain URL via the IndieAuth spec. Discovers your authorisation and token endpoints from HTML link tags or HTTP headers, uses PKCE S256 for the code exchange, and verifies the me URL on callback.

2026-04-06

v2.0.0

Tag normalisation suggestions

A daily background worker scans each collection's tags and detects case variants (e.g. AIai) and hyphen/space variants (e.g. machine-learning / machine learning). Curators see a suggestions panel and can apply or dismiss each one.

2026-04-06

v1.9.0

Sorting for tags and collections

The tags page now supports alphabetical view with letter-anchored navigation alongside the default popularity order. The collections list supports sort by newest, popular, alphabetical, and oldest.

2026-04-06

Full changelog →

Self-host it

A single binary, a TOML config file, and a domain. That is all you need.

Requirements

  • Go 1.22+ (build only)
  • A server with a public domain
  • A reverse proxy with TLS (Caddy, nginx, etc.)
  • No CGo, no external database, no Redis
Full setup guide →

Install

go install framagit.org/dynamicskillset/commonplace@latest

Build from source

make build

Run

./commonplace serve --config commonplace.toml

Minimal config

[instance] domain = "links.example.com" name = "My Commonplace" [http] listen_address = ":8080" [security] encryption_key = "" # auto-generates on first run

Docker

docker build -t commonplace . docker run -p 8080:8080 -v $(pwd)/data:/data commonplace

Federation in detail

Each collection exposes a full federated identity on both ActivityPub and AT Protocol. Nothing extra to configure.

ActivityPub (Mastodon and the Fediverse)

Every collection is an ActivityPub Group actor. Follow it from Mastodon, Akkoma, Misskey, or any other AP client. When a new link is added, it appears as a post from that Group in your home timeline.

HTTP Signatures use Ed25519 keys. The Group’s outbox, followers, and inbox all work as specified in the AP spec.

Follow address: @collection-slug@your.instance

AT Protocol (Bluesky)

Every collection is also an AT Protocol feed generator. Subscribe to it from Bluesky and new links appear in your feed list, alongside your other custom feeds.

Authentication uses DPoP-bound tokens with PAR and PKCE. Identity resolution supports both did:plc and did:web.

A firehose WebSocket endpoint at /xrpc/com.atproto.sync.subscribeRepos allows real-time sync with relay infrastructure.

Tech stack

Built for straightforward deployment and easy contribution.

Language
Go 1.22+, no CGo
Database
SQLite in WAL mode (modernc.org/sqlite)
Binary
Single static binary, cross-platform
Router
chi v5, server-rendered HTML, no JS framework
Auth
Mastodon OAuth, AT Protocol (DPoP, PAR, PKCE), IndieAuth
AP signing
Ed25519 HTTP Signatures
Licence
AGPL-3.0

Contributions welcome. The codebase is structured as a standard Go module — no generated code, no build toolchain beyond make. Tests use the standard library.