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

68 lines
4.0 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 |
| 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](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)