Files
at-container-registry/docs/KNOWN_RELAYS.md
T
Evan Jarrett 6758996300 add SBOM package diffing, verify hold-service captain records
- diff view gains a Packages tab with added/removed/changed/unchanged
  package tables and purl-derived type/license/upstream links
- captain records verified against the DID's atcr_hold service before
  caching (processor + batch backfill), preventing forged holds
- fix empty-handle updates clobbering cached handles and colliding on
  the UNIQUE constraint
- move fillPrevCIDs into repo.go; DirectRepoOperator is now canonical,
  repomgr kept as a test oracle
- surface read-only crew status in hold selector
- reconcile docs
2026-06-13 12:49:03 -05:00

4.0 KiB

Known ATProto Relays

Reference list of known public ATProto relays and their capabilities, relevant to ATCR hold discovery and appview backfill.

There is no relay discovery protocol in ATProto — this list is manually maintained.

Last verified: 2026-02-08

Relay List

Bluesky (Official)

Relay URL requestCrawl listReposByCollection Notes
Bluesky (load balancer) https://bsky.network Yes No (400 — not proxied) Load balancer, proxies to regional relays
Bluesky US-East https://relay1.us-east.bsky.network Yes Yes Regional relay with full collection directory
Bluesky US-West https://relay1.us-west.bsky.network Yes Yes Regional relay with full collection directory

Community

Relay URL requestCrawl listReposByCollection Notes
Firehose NA https://northamerica.firehose.network Yes No (404) 72h replay buffer
Firehose EU https://europe.firehose.network Yes No (404) 72h replay buffer
Firehose Asia https://asia.firehose.network Yes No (404) 72h replay buffer
Microcosm Montreal https://relay.fire.hose.cam Yes No (404)
Microcosm France https://relay3.fr.hose.cam Yes No (404)
Upcloud https://relay.upcloud.world Yes No (404)
Blacksky https://atproto.africa Down (502) Down (502) Was offline as of 2026-02-08
Hayes https://relay.hayescmd.net
Xero https://relay.xero.systems
Feeds Blue https://relay.feeds.blue
Waow https://relay.waow.tech
Bassh https://relay.bas.sh

ATCR Usage

Hold service (requestCrawl)

The hold announces its embedded PDS to relays on startup via com.atproto.sync.requestCrawl. On startup, requestCrawls() fans out to every relay in KnownRelays (all 15 entries hardcoded in pkg/atproto/relays.go) plus any additional entries in server.relay_endpoints (a list; defaults to relay1.us-east.bsky.network and relay1.us-west.bsky.network). Per-relay failures are logged but never block startup. All healthy relays above accept requestCrawl.

Appview backfill (listReposByCollection)

The appview uses com.atproto.sync.listReposByCollection to discover DIDs with io.atcr.* records during backfill. Only Bluesky's regional relays support this endpoint. The appview's jetstream.relay_endpoints defaults to both relay1.us-east.bsky.network and relay1.us-west.bsky.network with failover between them.

Why most relays lack listReposByCollection

The listReposByCollection endpoint is not part of the relay core. It's served by a separate microservice called collectiondir that maintains an index of (collection, timestamp, DID) tuples.

Community relays running the Rainbow relay can optionally proxy to a collectiondir instance via --collectiondir-host, but most don't deploy one — likely because maintaining that index across the full network is expensive relative to just fan-out relaying.

Other useful relay endpoints

These are standard XRPC endpoints that relays may implement:

  • com.atproto.sync.listRepos — paginated list of all known repos (all tested relays support this)
  • com.atproto.sync.getRepo — all tested relays 302 redirect to the source PDS
  • com.atproto.sync.getRepoStatus — check if a relay knows about a specific DID
  • com.atproto.sync.subscribeRepos — WebSocket firehose subscription

Sources