A small, inspectable gateway for Mastodon, Misskey, GoToSocial, and other ActivityPub implementations to discover, read, follow, and interact with public Matters articles.
This page uses Matters main-site publishing as the case study. It links to a live Cloudflare Worker ActivityPub demo, static prototype endpoints, and an ActivityPub seed bundle that models the output expected from thematters/ipns-site-generator. Source code is available in the GitHub repository.
Matters is a long-running, open-source, interoperable IPFS-protocol publishing site and censorship-resistant community-governance platform with more than 280,000 registered users. The Fediverse is an open social network of interoperable servers and applications, including Mastodon, Misskey, GoToSocial, Threads, and others.
Matters Fediverse Gateway connects those two worlds. It lets Fediverse users follow Matters publishing, read full public long-form articles as ActivityPub Article objects, reply, like, and boost. Those interactions can flow back into Matters. Paid articles, encrypted articles, private content, and messages stay outside federation.
The concrete case is the Matters main site. A public article starts on matters.town, moves through the IPFS/IPNS-oriented static publisher, becomes an ActivityPub seed bundle, and is then canonicalized by the gateway for discovery and interaction.
Author publishes a public long-form article on matters.town.
ipns-site-generator emits durable public article files and feeds.
The static layer emits manifest, seed actor, and seed outbox.
gateway-core owns identity, inbox, delivery, moderation, and recovery.
Fediverse users discover, follow, read, reply, like, and boost.
Article objects.The live Cloudflare Worker prototype demonstrates the read-side federation surface with ActivityPub and NodeInfo JSON served from narrow routes on the Matters domain. The canonical demo actor is acct:matters@matters.town. The demo article is represented as an ActivityPub Article, not reduced to a short-form note.
| Endpoint | URL |
|---|---|
| Matters root | matters.town |
| WebFinger | /.well-known/webfinger?resource=acct:matters@matters.town |
| Actor | /ap/users/matters |
| Outbox | /ap/users/matters/outbox |
| Article | /ap/articles/matters-main-site-open-social-demo |
| Seed manifest | /ap/seed/activitypub-manifest.json |
| Seed outbox | /ap/seed/outbox.jsonld |
| NodeInfo discovery | /.well-known/nodeinfo |
| NodeInfo 2.1 | /ap/instance-info/2.1 |
The isolated Worker testbed remains available at gateway-demo.matters.town for edge-runtime diagnostics without touching the main-site root route.
The static GitHub Pages prototype remains available for the seed-bundle surface: WebFinger, actor, outbox, Article, seed manifest, seed outbox, and NodeInfo.
This is not a production service. It does not accept real user content. The Worker currently demonstrates ActivityPub content types, edge routing, seed bundle exposure, and the future signed inbox pass-through path to gateway-core.
The seed bundle is the contract between ipns-site-generator and gateway-core. The static publisher should only emit public data that is safe to federate. The gateway then rewrites that seed into canonical ActivityPub identity and runtime state.
activitypub-manifest.jsonDeclares generator version, source actor, canonical gateway actor, listed files, and the public-only visibility boundary.about.jsonldRepresents the static source actor before gateway canonicalization. Personal static sites can use this directly; Matters production should use the gateway actor.outbox.jsonldContains public Create activities whose objects are Article, with canonical links back to Matters public articles.The public boundary is part of the data contract: paid, encrypted, private, draft, and message-like content must be excluded before the seed bundle is generated.
matters.town public article
|
v
ipns-site-generator
|
+-- HTML / RSS / JSON Feed / IPFS-IPNS output
|
+-- ActivityPub seed bundle
|
v
Cloudflare Worker edge
|
+-- WebFinger / NodeInfo / cached actor reads
|
+-- signed inbox pass-through
|
v
gateway-core runtime
|
+-- HTTP signatures / followers / delivery queue
+-- moderation / audit / alerts / recovery
|
v
Mastodon / Misskey / GoToSocial / other Fediverse servers
Static + dynamic split: public article output remains durable through the IPFS/IPNS-oriented publishing layer. The gateway handles the dynamic social layer: discovery, inbox handling, followers, delivery state, moderation, and recovery. The proposed integration contract and Worker deployment path are documented in the IPNS gateway plan.
g0v.social.| Goal | Scope | Timeline |
|---|---|---|
| G1 | Single-instance reference release with multi-implementation interoperability. | 3 months |
| G2 | Matters production integration: pilot, beta, then general availability. | 4-6 months |
| G3 | Second-instance validation to prove reuse beyond Matters. | 2 months |
The full roadmap is in development-plan.
ArticleLong-form work is not downgraded to Note. Articles keep room for HTML, summary, attachments, and canonical links.
The project is not another full social server. Static publishing handles public article output; the gateway handles social state.
Paid, encrypted, private, and message-like content is blocked by code-level visibility gates, not by manual convention.
The first release can put a Cloudflare Worker in front of gateway-core for routing, content types, caching, size limits, and signed inbox pass-through.