Website Spec
← Well-Known URIs
Optional

/.well-known/nodeinfo

A discovery URI for federated platforms. It returns links to NodeInfo documents that describe the software, version and basic statistics of a server.

What it is

NodeInfo is a small, two-step discovery mechanism for federated and decentralised servers. A client first fetches /.well-known/nodeinfo, which returns a list of links pointing at versioned NodeInfo documents (typically /nodeinfo/2.0 or /nodeinfo/2.1). Those documents then describe what software the server runs, which protocols it speaks, and basic statistics about users and posts.

The protocol started in Diaspora and is now used across Mastodon, PeerTube, Pleroma, Misskey, Friendica, GoToSocial, Lemmy, Funkwhale and most of the rest of the Fediverse.

Why it matters

If your site is not a federated server, you do not need NodeInfo.

How to implement

Serve /.well-known/nodeinfo as JSON. The body lists one or more rel/href pairs that point at the actual NodeInfo documents.

{
  "links": [
    {
      "rel": "http://nodeinfo.diaspora.software/ns/schema/2.0",
      "href": "https://example.com/nodeinfo/2.0"
    },
    {
      "rel": "http://nodeinfo.diaspora.software/ns/schema/2.1",
      "href": "https://example.com/nodeinfo/2.1"
    }
  ]
}

Then serve the actual NodeInfo document at the linked URL:

{
  "version": "2.1",
  "software": {
    "name": "examplesocial",
    "version": "1.4.2",
    "repository": "https://github.com/example/social"
  },
  "protocols": ["activitypub"],
  "services": { "inbound": [], "outbound": [] },
  "openRegistrations": false,
  "usage": {
    "users": { "total": 142, "activeMonth": 38, "activeHalfyear": 95 },
    "localPosts": 3120
  },
  "metadata": {}
}

Rules:

Common mistakes

Verification

curl -s https://example.com/.well-known/nodeinfo | jq .
curl -s https://example.com/nodeinfo/2.1 | jq .

Cross-check on a statistics site (such as fediverse.observer) that your server appears with the correct software name and version.

Sources