# 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 | ## ATCR Usage ### Hold service (`requestCrawl`) The hold announces its embedded PDS to relays on startup via `com.atproto.sync.requestCrawl`. Currently configured as a single relay in `server.relay_endpoint`. 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 defaults to `relay1.us-east.bsky.network`. ## Why most relays lack `listReposByCollection` The `listReposByCollection` endpoint is not part of the relay core. It's served by a separate microservice called [collectiondir](https://github.com/bluesky-social/indigo/tree/main/cmd/collectiondir) that maintains an index of `(collection, timestamp, DID)` tuples. Community relays running the [Rainbow](https://github.com/bluesky-social/indigo/tree/main/cmd/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 - [Bluesky indigo relay (Rainbow)](https://github.com/bluesky-social/indigo/tree/main/cmd/rainbow) - [Bluesky indigo collectiondir](https://github.com/bluesky-social/indigo/tree/main/cmd/collectiondir) - [firehose.network](https://firehose.network/) - [PDS debug tool relay list](https://tangled.org/microcosm.blue/pds-debug/raw/main/index.html) - [Sri's relay writeup](https://sri.leaflet.pub/3mddrqk5ays27)