using tap with relay.fire.hose.cam
edited
1## Issue: `relay.fire.hose.cam` missing `com.atproto.sync.listReposByCollection` endpoint
2
3### Context
4
5I'm using [TAP](https://github.com/bluesky-social/indigo/tree/main/cmd/tap) (from bluesky-social/indigo) to index Leaflet documents for a search service. TAP is a "synchronization and backfill tool for atproto apps."
6
7### What TAP needs
8
9TAP's [crawler.go](https://github.com/bluesky-social/indigo/blob/main/cmd/tap/crawler.go) uses `com.atproto.sync.listReposByCollection` to discover repos that have records in a specific collection:
10
11```go
12repoList, err := comatproto.SyncListReposByCollection(ctx, client, collection, cursor, 1000)
13```
14
15This is used when `TAP_SIGNAL_COLLECTION` is set (e.g., `pub.leaflet.document`) to enumerate only repos relevant to that collection rather than the entire network.
16
17### The problem
18
19`relay.fire.hose.cam` returns 404 for this endpoint:
20
21```bash
22$ curl "https://relay.fire.hose.cam/xrpc/com.atproto.sync.listReposByCollection?collection=pub.leaflet.document&limit=1"
23{"error":"Not Found"}
24```
25
26The official Bluesky relay supports it:
27
28```bash
29$ curl "https://relay1.us-east.bsky.network/xrpc/com.atproto.sync.listReposByCollection?collection=pub.leaflet.document&limit=1"
30{"cursor":"...","repos":[{"did":"did:plc:ukp7pzzht32uigg6bg4vxr5t"}]}
31```
32
33### Likely cause
34
35`listReposByCollection` was [added to indigo on February 18, 2025](https://github.com/bluesky-social/indigo/commit/10fe963). `relay.fire.hose.cam` may be running an older version.
36
37### Workaround
38
39Switched to the official Bluesky relay: https://github.com/zzstoatzz/leaflet-search/commit/8289eb7
40
41```toml
42TAP_RELAY_URL = 'https://relay1.us-east.bsky.network'
43```