declarative relay deployment on hetzner
relay-eval.waow.tech
atproto
relay
1# relay coverage comparison — 2026-03-05
2
3## relays tested
4
5| relay | operator | firehose | collectiondir | notes |
6|---|---|---|---|---|
7| **relay.waow.tech** | nate (Go/indigo) | yes | yes | Ashburn VA |
8| **zlay.waow.tech** | nate (Zig) | yes | yes | Hillsboro OR |
9| **bsky.network** | Bluesky | yes | yes | reference relay |
10| **europe.firehose.network** | sri | yes | **no** | firehose only |
11
12sri returns empty/404 for `listReposByCollection` — pure firehose relay.
13
14## tools used
15
16- **Pulsar** ([mackuba](https://tangled.org/mackuba.eu/pulsar)) — subscribes to multiple relay firehoses simultaneously, counts events + unique DIDs over a time window
17- coldir-compare script — compares `listReposByCollection` across relay, zlay, bsky.network for all indie NSIDs from lexicon garden
18
19---
20
21## 1. firehose coverage (Pulsar, 2 min window)
22
23| relay | events | unique DIDs |
24|---|---|---|
25| relay.waow.tech | 53,966 | 21,797 |
26| zlay.waow.tech | 52,779 | 21,469 |
27| europe.firehose.network | 46,129* | 19,727* |
28
29\* sri hit a `ConsumerTooSlow` disconnect ~100s into the 120s window, so its totals are undercounted.
30
31relay and zlay within ~2% of each other. Both well ahead of sri's partial window.
32
33---
34
35## 2. collection directory — io.atcr.*
36
37| collection | relay | zlay | bsky |
38|---|---|---|---|
39| io.atcr.manifest | 19 | 25 | **26** |
40| io.atcr.tag | 19 | 25 | **26** |
41| io.atcr.sailor.profile | 83 | **90** | 89 |
42| io.atcr.repo.page | 17 | 19 | **21** |
43
44relay still trails due to ghosts + deactivated accounts it hasn't pruned. bsky gained 1 DID on manifest/tag since yesterday. zlay leads on sailor.profile.
45
46---
47
48## 3. collection directory — all indie NSIDs (lexicon garden)
49
50Paginated counts where initial query hit 1000 cap.
51
52### zlay leads
53
54| collection | relay | zlay | bsky | notes |
55|---|---|---|---|---|
56| com.whtwnd.blog.entry | 427 | **698** | 530 | zlay +32% over bsky |
57| blue.linkat.board | 305 | **447** | 304 | zlay +47% |
58| app.bsky.labeler.service | 504 | **667** | 417 | zlay +60% over bsky |
59| com.shinolabs.pinksea.oekaki | 312 | **481** | 314 | zlay +53% |
60| place.stream.broadcast.origin | 331 | **519** | 518 | zlay = bsky |
61| blue.trilinesat.like | 54 | **100** | 100 | zlay = bsky |
62| blue.trilinesat.diary | 83 | **141** | 141 | zlay = bsky |
63| site.standard.graph.subscription | 735 | **1,350** | 1,353 | zlay ≈ bsky |
64| site.standard.publication | 1,166 | **2,071** | 2,077 | zlay ≈ bsky |
65| social.drydown.fragrance | 8 | **13** | 13 | zlay = bsky |
66| social.drydown.review | 8 | **14** | 14 | zlay = bsky |
67| app.fitsky.* | 1-5 | **2-6** | 2-6 | zlay = bsky |
68
69### tied / close
70
71| collection | relay | zlay | bsky |
72|---|---|---|---|
73| fyi.unravel.frontpage.post | **75** | 75 | 73 |
74| fyi.unravel.frontpage.vote | 189 | 189 | 189 |
75| tech.manos.twmirror.post | 5 | 6 | 6 |
76| cx.vmx.matadisco | 1 | 1 | 1 |
77| za.co.ciaran.cumulus.* | 1 | 1 | 1 |
78| garden.lexicon.exultant-zebra.* | 1 | 1 | 1 |
79
80### relay leads
81
82| collection | relay | zlay | bsky |
83|---|---|---|---|
84| xyz.statusphere.status | **848** | 815 | 815 |
85
86### zlay gaps (0 results where others have data)
87
88| collection | relay | zlay | bsky |
89|---|---|---|---|
90| fyi.unravel.frontpage.comment | 78 | **0** | 43 |
91| social.psky.feed.post | 42 | **0** | 0 |
92| studio.voyager.account.autonomy | 11 | **0** | 13 |
93| xyz.atpoke.feed.poke | 1 | **0** | 2 |
94| com.crabdance.nandi.post | 1 | **0** | 2 |
95| social.drydown.house | 8 | **0** | 14 |
96
97Long-tail collections that zlay's backfill hasn't picked up — either not in lexicon garden's llms.txt or not on bsky.network (psky). social.drydown.house is a new gap since yesterday.
98
99### bsky leads
100
101| collection | relay | zlay | bsky |
102|---|---|---|---|
103| fm.plyr.actor.profile | 94 | 94 | **148** |
104| site.standard.document | 677 | 6,051 | **6,094** |
105| xyz.blogosphere.post | 0 | 0 | **1** |
106
107---
108
109## changes since 2026-03-04
110
111| metric | 03-04 | 03-05 | delta |
112|---|---|---|---|
113| Pulsar: relay events (2 min) | 44,871 | 53,966 | +20% |
114| Pulsar: zlay events (2 min) | 44,999 | 52,779 | +17% |
115| bsky io.atcr.manifest | 25 | 26 | +1 |
116| zlay drydown.house | 12-13 | 0 | gap appeared |
117| zlay fm.plyr.actor.profile | 93 | 94 | +1 |
118| bsky fm.plyr.actor.profile | 146 | 148 | +2 |
119
120---
121
122## summary
123
124### zlay wins
125
126- collection directory coverage on most indie NSIDs — often 30-60% more DIDs than relay, matching or beating bsky.network
127- firehose parity with relay (within ~2%)
128- site.standard.document: 6,051 (vs relay's 677) — nearly matching bsky's 6,094
129
130### zlay gaps
131
132- 6 long-tail collections with zero results (frontpage.comment, psky, voyager, atpoke, crabdance, drydown.house)
133- fm.plyr.actor.profile trails bsky by ~36%
134- statusphere trails relay by ~4% (815 vs 848)
135
136### relay (Go/indigo) gaps
137
138- trails on most collection directory counts due to uncleared ghosts/deactivated accounts
139- statusphere is the one collection where relay leads
140
141### sri
142
143- firehose-only relay, no collection directory support
144- hit ConsumerTooSlow during Pulsar test — may indicate capacity limits