id: federation
title: An off-the-shelf relay and an off-the-shelf app, not just the protocol
status: open
crates: [didbot-serve]
dependsOn: [pds-xrpc]
exitCriterion: >
Bluesky's official client and Tangled both read an agent's repository
through this server with no configuration naming this project, and a relay
has crawled it at least once without help. #
pds-xrpc's exit criterion is "an off-the-shelf atproto client
reads and writes an agent's repository through com.atproto.* knowing
nothing about this project," and its own conformance harness checks every
response against the upstream lexicon documents rather than a type written
here. That is protocol conformance, checked in isolation. It is not the same
claim as two specific, prominent applications actually working against a
live deployment, and the two have already diverged once: pds-xrpc.md's own
conformance note says a missing cid "survived here for months" under the
in-process harness and "was caught by somebody else's client instead."
Nothing here says which somebody, or on what schedule that check runs again.
com.atproto.sync.subscribeRepos is served —
crates/didbot-serve/src/routes/mod.rs routes it to subscribe_repos, and
pds-xrpc.md's Done list has the frame shape. A relay discovers new commits
by subscribing to that endpoint, so the thing that used to make federation
impossible no matter how conformant the rest of the wire surface was is no
longer the blocker. What is left is whether the apps this epic is about read
what a relay crawled.
did:web resolution is confirmed supported by @atproto/identity, the
identity library both the Bluesky client and Tangled's tooling depend on, and
by Go's indigo — the same reference implementation
docs/running-locally.md already drives against this server with goat.
The identity half of federation is not where this is expected to break. The
sync half — subscribeRepos, and whatever a relay does with the stream once
it can open one — is the part with no working implementation to point at
yet, and is where this epic's actual risk sits.