declarative relay deployment on hetzner relay-eval.waow.tech
atproto relay
14
fork

Configure Feed

Select the types of activity you want to include in your feed.

relay-eval: add relay.klbr.net + impl column (closes #1)

- adds relay.klbr.net to the scheduled eval relay list, attributed
to @klbr.net (operator-submitted via tangled issue #1)
- adds an `impl` field to ops entries and an implementation column
to the snapshot + all-time coverage tables. links to the impl's
source repo via the `impls` lookup at the top of the script

filled in initial impls where confident:
- zlay.waow.tech → zlay
- relay.waow.tech → indigo
- relay.klbr.net → hydrant (per issue reporter)

other hosts render an em-dash — future PRs can fill them in as
operators confirm their codebase.

deploy with `just relay-eval deploy` to sync the updated service
unit + embedded HTML to the relay-eval server.

Co-Authored-By: Claude Opus 4 (1M context) <noreply@anthropic.com>

authored by

zzstoatzz
Claude Opus 4 (1M context)
and committed by
Tangled
5b608cbf ddb9fc7f

+30 -3
+1 -1
relay-eval/deploy/relay-eval.service
··· 6 6 [Service] 7 7 Type=oneshot 8 8 ExecStart=/opt/relay-eval-src/relay-eval/zig-out/bin/relay-eval eval \ 9 - --relays bsky.network,relay1.us-east.bsky.network,relay1.us-west.bsky.network,zlay.waow.tech,relay.waow.tech,relay.bas.sh,northamerica.firehose.network,relay.fire.hose.cam,relay3.fr.hose.cam,asia.firehose.network,europe.firehose.network,relay.xero.systems,atproto.africa,relay.upcloud.world,relay.feeds.blue,relay.t4tlabs.net \ 9 + --relays bsky.network,relay1.us-east.bsky.network,relay1.us-west.bsky.network,zlay.waow.tech,relay.waow.tech,relay.bas.sh,northamerica.firehose.network,relay.fire.hose.cam,relay3.fr.hose.cam,asia.firehose.network,europe.firehose.network,relay.xero.systems,atproto.africa,relay.upcloud.world,relay.feeds.blue,relay.t4tlabs.net,relay.klbr.net \ 10 10 --window 300 \ 11 11 --db /var/lib/relay-eval/relay-eval.db 12 12 ExecStartPost=/bin/sh -c 'curl -sf http://localhost:8080/og.svg | rsvg-convert -w 1200 -h 630 -o /var/lib/relay-eval/og.png || true'
+29 -2
relay-eval/src/static/index.html
··· 93 93 .run-by a { color: var(--muted); text-decoration: none; transition: color 0.1s; } 94 94 .run-by a:hover { color: var(--fg); text-decoration: underline; } 95 95 96 + /* impl column — link to the relay implementation's source repo */ 97 + .impl-col { font-size: 0.75rem; color: var(--muted); } 98 + .impl-link { color: var(--muted); text-decoration: none; transition: color 0.1s; } 99 + a.impl-link:hover { color: var(--accent); text-decoration: underline; } 100 + 96 101 /* sections */ 97 102 .sec { font-size: 0.9rem; font-weight: 600; margin-top: 2rem; margin-bottom: 0.2rem; } 98 103 .sec-desc { font-size: 0.8rem; color: var(--muted); margin-bottom: 0.4rem; line-height: 1.55; } ··· 304 309 </div> 305 310 306 311 <script> 312 + // impl source lookup — edit here when we learn which codebase a relay runs. 313 + // leave a host's `impl` unset if unknown; the column will render em-dash. 314 + const impls = { 315 + 'indigo': 'https://github.com/bluesky-social/indigo', 316 + 'zlay': 'https://tangled.sh/@zzstoatzz.io/zlay', 317 + 'hydrant': 'https://tangled.org/ptr.pet/hydrant', 318 + }; 319 + 307 320 const ops = { 308 321 'bsky.network': { name: 'Bluesky PBC', sym: '\u25c6', color: '#58a6ff', url: 'https://bsky.app/profile/bsky.app' }, 309 322 'relay1.us-east.bsky.network': { name: 'Bluesky PBC', sym: '\u25c6', color: '#58a6ff', url: 'https://bsky.app/profile/bsky.app' }, 310 323 'relay1.us-west.bsky.network': { name: 'Bluesky PBC', sym: '\u25c6', color: '#58a6ff', url: 'https://bsky.app/profile/bsky.app' }, 311 - 'zlay.waow.tech': { name: '@zzstoatzz.io', sym: '\u25b2', color: '#3fb950', url: 'https://bsky.app/profile/zzstoatzz.io' }, 312 - 'relay.waow.tech': { name: '@zzstoatzz.io', sym: '\u25b2', color: '#3fb950', url: 'https://bsky.app/profile/zzstoatzz.io' }, 324 + 'zlay.waow.tech': { name: '@zzstoatzz.io', sym: '\u25b2', color: '#3fb950', url: 'https://bsky.app/profile/zzstoatzz.io', impl: 'zlay' }, 325 + 'relay.waow.tech': { name: '@zzstoatzz.io', sym: '\u25b2', color: '#3fb950', url: 'https://bsky.app/profile/zzstoatzz.io', impl: 'indigo' }, 313 326 'relay.bas.sh': { name: '@bas.sh', sym: '\u25a0', color: '#f0883e', url: 'https://bsky.app/profile/bas.sh' }, 314 327 'northamerica.firehose.network': { name: '@sri.xyz', sym: '\u25cf', color: '#bc8cff', url: 'https://bsky.app/profile/sri.xyz' }, 315 328 'asia.firehose.network': { name: '@sri.xyz', sym: '\u25cf', color: '#bc8cff', url: 'https://bsky.app/profile/sri.xyz' }, ··· 320 333 'atproto.africa': { name: 'blacksky', sym: '\u25ce', color: '#da7dae', url: 'https://bsky.app/profile/blackskyweb.xyz' }, 321 334 'relay.upcloud.world': { name: 'upcloud', sym: '\u25bd', color: '#39d2c0' }, 322 335 'relay.feeds.blue': { name: '@mackuba.eu', sym: '\u2b21', color: '#d2a8ff', url: 'https://bsky.app/profile/mackuba.eu' }, 336 + 'relay.klbr.net': { name: '@klbr.net', sym: '\u25d1', color: '#7ee787', url: 'https://bsky.app/profile/klbr.net', impl: 'hydrant' }, 323 337 }; 324 338 325 339 function op(h) { return ops[h] || { name: h.split('.').slice(-2).join('.'), sym: '\u00b7', color: '#8b949e' }; } 340 + 341 + function implCell(host) { 342 + const o = op(host); 343 + if (!o.impl) return '\u2014'; 344 + const url = impls[o.impl]; 345 + return url 346 + ? `<a href="${url}" target="_blank" class="impl-link">${o.impl}</a>` 347 + : `<span class="impl-link">${o.impl}</span>`; 348 + } 326 349 327 350 function ago(iso) { 328 351 const m = Math.floor((Date.now() - new Date(iso).getTime()) / 60000); ··· 744 767 h += `<div class="table-wrap"><table><thead><tr>`; 745 768 h += `<th>${tip('relay', 'the relay host being measured')}</th>`; 746 769 h += `<th class="hm">${tip('run by', 'the identity that operates this relay')}</th>`; 770 + h += `<th class="hm">${tip('impl', 'the relay implementation (codebase) this host runs')}</th>`; 747 771 h += `<th class="num">${tip('events', 'total commit events received during the collection window')}</th>`; 748 772 h += `<th class="num">${tip('accounts', 'unique accounts (DIDs) that posted during the window')}</th>`; 749 773 h += `<th class="num">${tip('coverage', 'accounts this relay saw / accounts any relay saw')}</th>`; ··· 764 788 h += `<tr${s.events === 0 ? ' class="dimmed"' : ''}>`; 765 789 h += `<td>${rn(s.host)}</td>`; 766 790 h += `<td class="run-by hm">${byLink}</td>`; 791 + h += `<td class="impl-col hm">${implCell(s.host)}</td>`; 767 792 h += `<td class="num">${s.events.toLocaleString()}${isOutlier ? `<span class="outlier" title="${pctAbove}% above median \u2014 likely replaying backlog after a restart">\u26a0</span>` : ''}</td>`; 768 793 h += `<td class="num">${s.unique_dids.toLocaleString()}</td>`; 769 794 h += `<td class="num">${pct(s.unique_dids, effectiveUnion)}</td>`; ··· 896 921 let h = '<div class="table-wrap"><table><thead><tr>'; 897 922 h += `<th>${tip('relay', 'the relay host being measured')}</th>`; 898 923 h += `<th class="hm">${tip('run by', 'the identity that operates this relay')}</th>`; 924 + h += `<th class="hm">${tip('impl', 'the relay implementation (codebase) this host runs')}</th>`; 899 925 h += `<th class="num">${tip('avg', 'mean coverage across all runs in window')}</th>`; 900 926 h += `<th class="num">${tip('min', 'lowest single-run coverage')}</th>`; 901 927 h += `<th class="num">${tip('max', 'highest single-run coverage')}</th>`; ··· 916 942 h += `<tr${avg < 1 ? ' class="dimmed"' : ''}>`; 917 943 h += `<td>${rn(host)}</td>`; 918 944 h += `<td class="run-by hm">${byLink}</td>`; 945 + h += `<td class="impl-col hm">${implCell(host)}</td>`; 919 946 h += `<td class="num">${avg.toFixed(2)}%</td>`; 920 947 h += `<td class="num">${min.toFixed(2)}%</td>`; 921 948 h += `<td class="num">${max.toFixed(2)}%</td>`;