{
"path": "/3mddrqk5ays27",
"site": "at://did:plc:7gm5ejhut7kia2kzglqfew5b/site.standard.publication/3ls34ezbet22y",
"tags": [
"atproto",
"relay",
"firehose"
],
"$type": "site.standard.document",
"title": "Relay good news",
"content": {
"$type": "pub.leaflet.content",
"pages": [
{
"id": "019bc30e-37ee-7447-8b16-08600a575dd8",
"$type": "pub.leaflet.pages.linearDocument",
"blocks": [
{
"$type": "pub.leaflet.pages.linearDocument#block",
"block": {
"$type": "pub.leaflet.blocks.text",
"facets": [],
"plaintext": "I'm finally joining the firehose club."
}
},
{
"$type": "pub.leaflet.pages.linearDocument#block",
"block": {
"$type": "pub.leaflet.blocks.text",
"facets": [
{
"index": {
"byteEnd": 28,
"byteStart": 12
},
"features": [
{
"$type": "pub.leaflet.richtext.facet#bold"
},
{
"uri": "https://firehose.network/",
"$type": "pub.leaflet.richtext.facet#link"
}
]
}
],
"plaintext": "Introducing firehose.network - public infrastructure and tools for ATProto relays."
}
},
{
"$type": "pub.leaflet.pages.linearDocument#block",
"block": {
"$type": "pub.leaflet.blocks.image",
"image": {
"$type": "blob",
"ref": {
"$link": "bafkreie3vg5nsc642ejo73mdjzvohrretoelh5daz2ytum6bh6qcg4346u"
},
"mimeType": "image/png",
"size": 64961
},
"aspectRatio": {
"width": 934,
"height": 382
}
}
},
{
"$type": "pub.leaflet.pages.linearDocument#block",
"block": {
"$type": "pub.leaflet.blocks.text",
"facets": [],
"plaintext": ""
}
},
{
"$type": "pub.leaflet.pages.linearDocument#block",
"block": {
"$type": "pub.leaflet.blocks.text",
"facets": [],
"plaintext": "The initial release includes 3 public ATProto relays deployed globally: North America, Europe and Asia (new)."
}
},
{
"$type": "pub.leaflet.pages.linearDocument#block",
"block": {
"$type": "pub.leaflet.blocks.text",
"facets": [],
"plaintext": "All are available for public use with a 72-hour backfill/replay window."
}
},
{
"$type": "pub.leaflet.pages.linearDocument#block",
"block": {
"$type": "pub.leaflet.blocks.image",
"image": {
"$type": "blob",
"ref": {
"$link": "bafkreiayd3be6lfe5wbq4ir7nir33jdns5e3esrfe4whk5g2qcvbard25i"
},
"mimeType": "image/gif",
"size": 679144
},
"aspectRatio": {
"width": 1104,
"height": 512
}
}
},
{
"$type": "pub.leaflet.pages.linearDocument#block",
"block": {
"$type": "pub.leaflet.blocks.text",
"facets": [],
"plaintext": "Check them out at: "
}
},
{
"$type": "pub.leaflet.pages.linearDocument#block",
"block": {
"$type": "pub.leaflet.blocks.unorderedList",
"children": [
{
"$type": "pub.leaflet.blocks.unorderedList#listItem",
"content": {
"$type": "pub.leaflet.blocks.text",
"facets": [
{
"index": {
"byteEnd": 29,
"byteStart": 0
},
"features": [
{
"uri": "https://northamerica.firehose.network/",
"$type": "pub.leaflet.richtext.facet#link"
}
]
}
],
"plaintext": "northamerica.firehose.network"
},
"children": []
},
{
"$type": "pub.leaflet.blocks.unorderedList#listItem",
"content": {
"$type": "pub.leaflet.blocks.text",
"facets": [
{
"index": {
"byteEnd": 23,
"byteStart": 0
},
"features": [
{
"uri": "https://europe.firehose.network/",
"$type": "pub.leaflet.richtext.facet#link"
}
]
}
],
"plaintext": "europe.firehose.network"
},
"children": []
},
{
"$type": "pub.leaflet.blocks.unorderedList#listItem",
"content": {
"$type": "pub.leaflet.blocks.text",
"facets": [
{
"index": {
"byteEnd": 21,
"byteStart": 0
},
"features": [
{
"uri": "https://asia.firehose.network/",
"$type": "pub.leaflet.richtext.facet#link"
}
]
}
],
"plaintext": "asia.firehose.network"
},
"children": []
}
]
}
},
{
"$type": "pub.leaflet.pages.linearDocument#block",
"block": {
"$type": "pub.leaflet.blocks.text",
"facets": [
{
"index": {
"byteEnd": 35,
"byteStart": 29
},
"features": [
{
"uri": "https://github.com/bluesky-social/indigo",
"$type": "pub.leaflet.richtext.facet#link"
}
]
}
],
"plaintext": "I've been experimenting with indigo relay setup and maintenance for a few months now."
}
},
{
"$type": "pub.leaflet.pages.linearDocument#block",
"block": {
"$type": "pub.leaflet.blocks.text",
"facets": [],
"plaintext": "Setup is straightforward but daily operations are where it gets interesting."
}
},
{
"$type": "pub.leaflet.pages.linearDocument#block",
"block": {
"$type": "pub.leaflet.blocks.text",
"facets": [],
"plaintext": "A few things I'm running to keep things healthy:"
}
},
{
"$type": "pub.leaflet.pages.linearDocument#block",
"block": {
"$type": "pub.leaflet.blocks.text",
"facets": [
{
"index": {
"byteEnd": 13,
"byteStart": 0
},
"features": [
{
"$type": "pub.leaflet.richtext.facet#bold"
}
]
}
],
"plaintext": "PDS discovery"
}
},
{
"$type": "pub.leaflet.pages.linearDocument#block",
"block": {
"$type": "pub.leaflet.blocks.text",
"facets": [
{
"index": {
"byteEnd": 61,
"byteStart": 49
},
"features": [
{
"uri": "https://bsky.network/",
"$type": "pub.leaflet.richtext.facet#link"
}
]
},
{
"index": {
"byteEnd": 118,
"byteStart": 102
},
"features": [
{
"uri": "https://firehose.network/",
"$type": "pub.leaflet.richtext.facet#link"
}
]
}
],
"plaintext": "A cron job pulls the PDS host list from the main bsky.network relay every few hours, diffs it against firehose.network's relays, and adds anything missing."
}
},
{
"$type": "pub.leaflet.pages.linearDocument#block",
"block": {
"$type": "pub.leaflet.blocks.text",
"facets": [
{
"index": {
"byteEnd": 13,
"byteStart": 0
},
"features": [
{
"$type": "pub.leaflet.richtext.facet#bold"
}
]
}
],
"plaintext": "PDS re-crawls"
}
},
{
"$type": "pub.leaflet.pages.linearDocument#block",
"block": {
"$type": "pub.leaflet.blocks.text",
"facets": [],
"plaintext": "A script periodically checks for offline PDSes and sends requestCrawl to see if they've come back online."
}
},
{
"$type": "pub.leaflet.pages.linearDocument#block",
"block": {
"$type": "pub.leaflet.blocks.text",
"facets": [
{
"index": {
"byteEnd": 21,
"byteStart": 0
},
"features": [
{
"$type": "pub.leaflet.richtext.facet#bold"
}
]
}
],
"plaintext": "Monitoring + Alerting"
}
},
{
"$type": "pub.leaflet.pages.linearDocument#block",
"block": {
"$type": "pub.leaflet.blocks.text",
"facets": [],
"plaintext": "Email alerts for CPU, memory, disk space. Grafana dashboards for overall and per-relay metrics (alerting still WIP)"
}
},
{
"$type": "pub.leaflet.pages.linearDocument#block",
"block": {
"$type": "pub.leaflet.blocks.text",
"facets": [
{
"index": {
"byteEnd": 33,
"byteStart": 22
},
"features": [
{
"$type": "pub.leaflet.richtext.facet#bold"
},
{
"uri": "https://status.vayumandala.com/",
"$type": "pub.leaflet.richtext.facet#link"
}
]
}
],
"plaintext": "There's also a public status page."
}
},
{
"$type": "pub.leaflet.pages.linearDocument#block",
"block": {
"$type": "pub.leaflet.blocks.text",
"facets": [],
"plaintext": "(FYI, Asia relay is pretty new. Moved to a bigger dedicated server very recently)"
}
},
{
"$type": "pub.leaflet.pages.linearDocument#block",
"block": {
"$type": "pub.leaflet.blocks.text",
"facets": [],
"plaintext": ""
}
},
{
"$type": "pub.leaflet.pages.linearDocument#block",
"block": {
"$type": "pub.leaflet.blocks.text",
"facets": [
{
"index": {
"byteEnd": 12,
"byteStart": 0
},
"features": [
{
"$type": "pub.leaflet.richtext.facet#bold"
}
]
}
],
"plaintext": "What's next:"
}
},
{
"$type": "pub.leaflet.pages.linearDocument#block",
"block": {
"$type": "pub.leaflet.blocks.text",
"facets": [
{
"index": {
"byteEnd": 88,
"byteStart": 64
},
"features": [
{
"uri": "https://discord.atprotocol.dev/",
"$type": "pub.leaflet.richtext.facet#link"
}
]
},
{
"index": {
"byteEnd": 161,
"byteStart": 158
},
"features": [
{
"$type": "pub.leaflet.richtext.facet#bold"
},
{
"uri": "https://debug.hose.cam/",
"$type": "pub.leaflet.richtext.facet#link"
}
]
},
{
"index": {
"byteEnd": 167,
"byteStart": 162
},
"features": [
{
"$type": "pub.leaflet.richtext.facet#bold"
},
{
"uri": "https://tangled.org/did:plc:qttsv4e7pu2jl3ilanfgc3zn/scatter",
"$type": "pub.leaflet.richtext.facet#link"
}
]
}
],
"plaintext": "There are some early discussions on #relay-operators channel in ATProto Touchers Discord about making relay operations easier and have better insights, and a few tools are already built in this space."
}
},
{
"$type": "pub.leaflet.pages.linearDocument#block",
"block": {
"$type": "pub.leaflet.blocks.text",
"facets": [],
"plaintext": "My personal wishlist - either as a separate service / built in indigo itself"
}
},
{
"$type": "pub.leaflet.pages.linearDocument#block",
"block": {
"$type": "pub.leaflet.blocks.unorderedList",
"children": [
{
"$type": "pub.leaflet.blocks.unorderedList#listItem",
"content": {
"$type": "pub.leaflet.blocks.text",
"facets": [],
"plaintext": "Auto PDS discovery + re-crawls"
},
"children": []
},
{
"$type": "pub.leaflet.blocks.unorderedList#listItem",
"content": {
"$type": "pub.leaflet.blocks.text",
"facets": [],
"plaintext": "Expose per-PDS throttling metrics when event limits are exceeded (so I could setup alerts based on that)"
},
"children": []
},
{
"$type": "pub.leaflet.blocks.unorderedList#listItem",
"content": {
"$type": "pub.leaflet.blocks.text",
"facets": [
{
"index": {
"byteEnd": 97,
"byteStart": 91
},
"features": [
{
"$type": "pub.leaflet.richtext.facet#bold"
},
{
"uri": "https://docs.bsky.app/docs/advanced-guides/rate-limits#relay-limits",
"$type": "pub.leaflet.richtext.facet#link"
}
]
}
],
"plaintext": "PDS accounts browser in relay admin UI to easily help identify abuse (if any) and tune PDS limits"
},
"children": []
}
]
}
},
{
"$type": "pub.leaflet.pages.linearDocument#block",
"block": {
"$type": "pub.leaflet.blocks.text",
"facets": [],
"plaintext": "Still working on a few more tools to help both PDS admins and relay operators. More to come."
}
},
{
"$type": "pub.leaflet.pages.linearDocument#block",
"block": {
"$type": "pub.leaflet.blocks.text",
"facets": [],
"plaintext": ""
}
},
{
"$type": "pub.leaflet.pages.linearDocument#block",
"block": {
"$type": "pub.leaflet.blocks.text",
"facets": [
{
"index": {
"byteEnd": 55,
"byteStart": 39
},
"features": [
{
"did": "did:plc:hdhoaan3xa3jiuq4fg4mefid",
"$type": "pub.leaflet.richtext.facet#didMention"
}
]
},
{
"index": {
"byteEnd": 142,
"byteStart": 129
},
"features": [
{
"did": "did:plc:44ybard66vv44zksje25o7dz",
"$type": "pub.leaflet.richtext.facet#didMention"
}
]
}
],
"plaintext": "All these are hugely inspired by fig's(@bad-example.com) work on microcosm public infra and based on some suggestions from Bryan(@bnewbold.net) during the ATProto_NYC meetup. "
}
},
{
"$type": "pub.leaflet.pages.linearDocument#block",
"block": {
"$type": "pub.leaflet.blocks.text",
"facets": [],
"plaintext": "The relays are public and free to use. They already power a few of my own apps. Please do let me know if you use them and I can keep you in loop for future updates. "
}
},
{
"$type": "pub.leaflet.pages.linearDocument#block",
"block": {
"$type": "pub.leaflet.blocks.text",
"facets": [],
"plaintext": ""
}
},
{
"$type": "pub.leaflet.pages.linearDocument#block",
"block": {
"$type": "pub.leaflet.blocks.text",
"facets": [
{
"index": {
"byteEnd": 24,
"byteStart": 7
},
"features": [
{
"did": "did:web:firehose.network",
"$type": "pub.leaflet.richtext.facet#didMention"
}
]
}
],
"plaintext": "Follow @firehose.network for announcements."
}
},
{
"$type": "pub.leaflet.pages.linearDocument#block",
"block": {
"$type": "pub.leaflet.blocks.text",
"facets": [],
"plaintext": ""
}
}
]
}
]
},
"bskyPostRef": {
"cid": "bafyreifivwio2zcx3wq3k6nwyu7pendzb7ykvgh2cag4po7pysobhrhdou",
"uri": "at://did:plc:7gm5ejhut7kia2kzglqfew5b/app.bsky.feed.post/3mddrqr6jyc27",
"commit": {
"cid": "bafyreihflwy33otmgrgvo3ipyrwpvcjutvtpfbwetscilp4qjuxaignwsm",
"rev": "3mddrqrbzmp25"
},
"validationStatus": "valid"
},
"description": "Introducing firehose.network - public infrastructure and tools for ATProto relays.",
"publishedAt": "2026-01-26T17:34:54.920Z"
}