mirror of
https://tangled.org/evan.jarrett.net/at-container-registry
synced 2026-04-20 16:40:29 +00:00
63 lines
3.4 KiB
Markdown
63 lines
3.4 KiB
Markdown
# 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)
|