{
  "$type": "site.standard.document",
  "bskyPostRef": {
    "cid": "bafyreie4ie6skrlcmaejc746666e7x6iqzjz4zfkwmndbdqgmd74b27b7y",
    "commit": {
      "cid": "bafyreif6p5mnizq4oy5smxblkpbhhycryv3sks67urdt2ua7sa6cktcjrq",
      "rev": "3mloni2j7hu2c"
    },
    "uri": "at://did:plc:7gm5ejhut7kia2kzglqfew5b/app.bsky.feed.post/3mloni2fld22o",
    "validationStatus": "valid"
  },
  "content": {
    "$type": "pub.leaflet.content",
    "pages": [
      {
        "$type": "pub.leaflet.pages.linearDocument",
        "blocks": [
          {
            "$type": "pub.leaflet.pages.linearDocument#block",
            "block": {
              "$type": "pub.leaflet.blocks.image",
              "aspectRatio": {
                "height": 1260,
                "width": 2240
              },
              "image": {
                "$type": "blob",
                "ref": {
                  "$link": "bafkreifvasuffi36lldxkrhar3bjwhlzbieusrp6iq5bysnlvfip6o5au4"
                },
                "mimeType": "image/webp",
                "size": 102512
              }
            }
          },
          {
            "$type": "pub.leaflet.pages.linearDocument#block",
            "block": {
              "$type": "pub.leaflet.blocks.text",
              "plaintext": ""
            }
          },
          {
            "$type": "pub.leaflet.pages.linearDocument#block",
            "block": {
              "$type": "pub.leaflet.blocks.text",
              "plaintext": "atproto has a bit of a discovery problem."
            }
          },
          {
            "$type": "pub.leaflet.pages.linearDocument#block",
            "block": {
              "$type": "pub.leaflet.blocks.text",
              "facets": [
                {
                  "features": [
                    {
                      "$type": "pub.leaflet.richtext.facet#link",
                      "uri": "https://atproto.com/guides/self-hosting#pds"
                    }
                  ],
                  "index": {
                    "byteEnd": 17,
                    "byteStart": 14
                  }
                },
                {
                  "features": [
                    {
                      "$type": "pub.leaflet.richtext.facet#highlight"
                    },
                    {
                      "$type": "pub.leaflet.richtext.facet#bold"
                    }
                  ],
                  "index": {
                    "byteEnd": 89,
                    "byteStart": 77
                  }
                }
              ],
              "plaintext": "By default, a PDS (Personal Data Server) announces itself to only one relay: bsky.network. "
            }
          },
          {
            "$type": "pub.leaflet.pages.linearDocument#block",
            "block": {
              "$type": "pub.leaflet.blocks.text",
              "facets": [
                {
                  "features": [
                    {
                      "$type": "pub.leaflet.richtext.facet#italic"
                    },
                    {
                      "$type": "pub.leaflet.richtext.facet#link",
                      "uri": "https://firehose.network"
                    }
                  ],
                  "index": {
                    "byteEnd": 66,
                    "byteStart": 50
                  }
                },
                {
                  "features": [
                    {
                      "$type": "pub.leaflet.richtext.facet#link",
                      "uri": "https://pds.directory/"
                    }
                  ],
                  "index": {
                    "byteEnd": 212,
                    "byteStart": 195
                  }
                }
              ],
              "plaintext": "Every other relay in the ecosystem, including the firehose.network relays, has to discover new PDSes on its own, either by polling the Bluesky relay on a cadence, relying on scrapers, or running separate services. "
            }
          },
          {
            "$type": "pub.leaflet.pages.linearDocument#block",
            "block": {
              "$type": "pub.leaflet.blocks.text",
              "facets": [
                {
                  "features": [
                    {
                      "$type": "pub.leaflet.richtext.facet#link",
                      "uri": "https://tangled.org/besaid.zone/scatter"
                    }
                  ],
                  "index": {
                    "byteEnd": 26,
                    "byteStart": 19
                  }
                },
                {
                  "features": [
                    {
                      "$type": "pub.leaflet.richtext.facet#highlight"
                    },
                    {
                      "$type": "pub.leaflet.richtext.facet#bold"
                    },
                    {
                      "$type": "pub.leaflet.richtext.facet#link",
                      "uri": "https://vsky.network"
                    }
                  ],
                  "index": {
                    "byteEnd": 40,
                    "byteStart": 28
                  }
                },
                {
                  "features": [
                    {
                      "$type": "pub.leaflet.richtext.facet#bold"
                    },
                    {
                      "$type": "pub.leaflet.richtext.facet#link",
                      "uri": "https://tangled.org/firehose.club/3ml2fpb5s6w22"
                    }
                  ],
                  "index": {
                    "byteEnd": 184,
                    "byteStart": 171
                  }
                }
              ],
              "plaintext": "Inspired by Dane's scatter, vsky.network is a small service that fixes this. Send a  crawl request to the service, and it fans the request out to every community relay in firehose.club."
            }
          },
          {
            "$type": "pub.leaflet.pages.linearDocument#block",
            "block": {
              "$type": "pub.leaflet.blocks.text",
              "plaintext": ""
            }
          },
          {
            "$type": "pub.leaflet.pages.linearDocument#block",
            "block": {
              "$type": "pub.leaflet.blocks.header",
              "level": 1,
              "plaintext": "vsky.network"
            }
          },
          {
            "$type": "pub.leaflet.pages.linearDocument#block",
            "block": {
              "$type": "pub.leaflet.blocks.text",
              "facets": [
                {
                  "features": [
                    {
                      "$type": "pub.leaflet.richtext.facet#bold"
                    },
                    {
                      "$type": "pub.leaflet.richtext.facet#link",
                      "uri": "https://github.com/bluesky-social/pds?tab=readme-ov-file#environment-variables:~:text=did%3Aplc%3Aar7c4by46qjdydhdevvrndac-,PDS_CRAWLERS,-https%3A//bsky.network"
                    }
                  ],
                  "index": {
                    "byteEnd": 26,
                    "byteStart": 14
                  }
                },
                {
                  "features": [
                    {
                      "$type": "pub.leaflet.richtext.facet#link",
                      "uri": "https://bsky.network"
                    }
                  ],
                  "index": {
                    "byteEnd": 49,
                    "byteStart": 37
                  }
                }
              ],
              "plaintext": "Add it to the PDS_CRAWLERS alongside bsky.network:"
            }
          },
          {
            "$type": "pub.leaflet.pages.linearDocument#block",
            "block": {
              "$type": "pub.leaflet.blocks.code",
              "plaintext": "PDS_CRAWLERS=https://bsky.network,https://vsky.network",
              "syntaxHighlightingTheme": "github-dark-dimmed"
            }
          },
          {
            "$type": "pub.leaflet.pages.linearDocument#block",
            "block": {
              "$type": "pub.leaflet.blocks.text",
              "facets": [
                {
                  "features": [
                    {
                      "$type": "pub.leaflet.richtext.facet#code"
                    }
                  ],
                  "index": {
                    "byteEnd": 31,
                    "byteStart": 9
                  }
                }
              ],
              "plaintext": "Then run pdsadmin request-crawl"
            }
          },
          {
            "$type": "pub.leaflet.pages.linearDocument#block",
            "block": {
              "$type": "pub.leaflet.blocks.text",
              "facets": [
                {
                  "features": [
                    {
                      "$type": "pub.leaflet.richtext.facet#code"
                    }
                  ],
                  "index": {
                    "byteEnd": 147,
                    "byteStart": 123
                  }
                },
                {
                  "features": [
                    {
                      "$type": "pub.leaflet.richtext.facet#code"
                    }
                  ],
                  "index": {
                    "byteEnd": 179,
                    "byteStart": 172
                  }
                },
                {
                  "features": [
                    {
                      "$type": "pub.leaflet.richtext.facet#code"
                    }
                  ],
                  "index": {
                    "byteEnd": 200,
                    "byteStart": 194
                  }
                }
              ],
              "plaintext": "Crawl requests return instantly. The actual fan-out happens in the background. Per-relay results are logged and exposed at /fanouts?hostname=<host>, with the relay list at /relays, and stats at /stats."
            }
          },
          {
            "$type": "pub.leaflet.pages.linearDocument#block",
            "block": {
              "$type": "pub.leaflet.blocks.image",
              "aspectRatio": {
                "height": 1258,
                "width": 1146
              },
              "image": {
                "$type": "blob",
                "ref": {
                  "$link": "bafkreiagelxbdeso5pgkzm5iy57kwzblo6yuwwyt46dsvpnuarg2duig3e"
                },
                "mimeType": "image/webp",
                "size": 63162
              }
            }
          },
          {
            "$type": "pub.leaflet.pages.linearDocument#block",
            "alignment": "lex:pub.leaflet.pages.linearDocument#textAlignCenter",
            "block": {
              "$type": "pub.leaflet.blocks.text",
              "facets": [
                {
                  "features": [
                    {
                      "$type": "pub.leaflet.richtext.facet#italic"
                    }
                  ],
                  "index": {
                    "byteEnd": 101,
                    "byteStart": 0
                  }
                }
              ],
              "plaintext": "Form submission result on vsky.network, showing each relay and whether it accepted the crawl request.",
              "textSize": "small"
            }
          },
          {
            "$type": "pub.leaflet.pages.linearDocument#block",
            "alignment": "lex:pub.leaflet.pages.linearDocument#textAlignCenter",
            "block": {
              "$type": "pub.leaflet.blocks.text",
              "plaintext": ""
            }
          },
          {
            "$type": "pub.leaflet.pages.linearDocument#block",
            "alignment": "lex:pub.leaflet.pages.linearDocument#textAlignLeft",
            "block": {
              "$type": "pub.leaflet.blocks.text",
              "facets": [
                {
                  "features": [
                    {
                      "$type": "pub.leaflet.richtext.facet#didMention",
                      "did": "did:plc:a2rdzfdxkjwerrfrpbwcipb2"
                    }
                  ],
                  "index": {
                    "byteEnd": 33,
                    "byteStart": 24
                  }
                },
                {
                  "features": [
                    {
                      "$type": "pub.leaflet.richtext.facet#link",
                      "uri": "https://www.val.town/x/username/vsky-network"
                    }
                  ],
                  "index": {
                    "byteEnd": 52,
                    "byteStart": 35
                  }
                }
              ],
              "plaintext": "The whole thing runs on @val.town. Check it out here."
            }
          },
          {
            "$type": "pub.leaflet.pages.linearDocument#block",
            "block": {
              "$type": "pub.leaflet.blocks.text",
              "facets": [
                {
                  "features": [
                    {
                      "$type": "pub.leaflet.richtext.facet#link",
                      "uri": "https://vsky.val.run/"
                    }
                  ],
                  "index": {
                    "byteEnd": 27,
                    "byteStart": 15
                  }
                }
              ],
              "plaintext": "Alternate url: vsky.val.run"
            }
          },
          {
            "$type": "pub.leaflet.pages.linearDocument#block",
            "block": {
              "$type": "pub.leaflet.blocks.text",
              "facets": [
                {
                  "features": [
                    {
                      "$type": "pub.leaflet.richtext.facet#bold"
                    }
                  ],
                  "index": {
                    "byteEnd": 17,
                    "byteStart": 1
                  }
                },
                {
                  "features": [
                    {
                      "$type": "pub.leaflet.richtext.facet#bold"
                    }
                  ],
                  "index": {
                    "byteEnd": 50,
                    "byteStart": 38
                  }
                }
              ],
              "plaintext": "\nPDS distributors: consider including vsky.network as a default crawler in your distribution."
            }
          },
          {
            "$type": "pub.leaflet.pages.linearDocument#block",
            "block": {
              "$type": "pub.leaflet.blocks.text",
              "facets": [
                {
                  "features": [
                    {
                      "$type": "pub.leaflet.richtext.facet#bold"
                    }
                  ],
                  "index": {
                    "byteEnd": 15,
                    "byteStart": 0
                  }
                },
                {
                  "features": [
                    {
                      "$type": "pub.leaflet.richtext.facet#bold"
                    },
                    {
                      "$type": "pub.leaflet.richtext.facet#link",
                      "uri": "https://tangled.org/firehose.club/community-firehose-list"
                    }
                  ],
                  "index": {
                    "byteEnd": 52,
                    "byteStart": 34
                  }
                },
                {
                  "features": [
                    {
                      "$type": "pub.leaflet.richtext.facet#code"
                    }
                  ],
                  "index": {
                    "byteEnd": 84,
                    "byteStart": 58
                  }
                }
              ],
              "plaintext": "Relay operators: open a PR in the firehose.club repo with opt_ins = [\"vsky.network\"] to be included in the fan-out."
            }
          },
          {
            "$type": "pub.leaflet.pages.linearDocument#block",
            "block": {
              "$type": "pub.leaflet.blocks.text",
              "facets": [
                {
                  "features": [
                    {
                      "$type": "pub.leaflet.richtext.facet#italic"
                    }
                  ],
                  "index": {
                    "byteEnd": 17,
                    "byteStart": 2
                  }
                },
                {
                  "features": [
                    {
                      "$type": "pub.leaflet.richtext.facet#didMention",
                      "did": "did:plc:hdhoaan3xa3jiuq4fg4mefid"
                    }
                  ],
                  "index": {
                    "byteEnd": 33,
                    "byteStart": 17
                  }
                },
                {
                  "features": [
                    {
                      "$type": "pub.leaflet.richtext.facet#italic"
                    }
                  ],
                  "index": {
                    "byteEnd": 38,
                    "byteStart": 33
                  }
                },
                {
                  "features": [
                    {
                      "$type": "pub.leaflet.richtext.facet#didMention",
                      "did": "did:plc:qttsv4e7pu2jl3ilanfgc3zn"
                    }
                  ],
                  "index": {
                    "byteEnd": 50,
                    "byteStart": 38
                  }
                },
                {
                  "features": [
                    {
                      "$type": "pub.leaflet.richtext.facet#italic"
                    }
                  ],
                  "index": {
                    "byteEnd": 84,
                    "byteStart": 50
                  }
                }
              ],
              "plaintext": "\n\nHuge thanks to @bad-example.com and @besaid.zone for the feedback and inspiration."
            }
          }
        ],
        "id": "019dd685-e8b3-7bbe-91ee-6296342238f8"
      }
    ]
  },
  "coverImage": {
    "$type": "blob",
    "ref": {
      "$link": "bafkreifvasuffi36lldxkrhar3bjwhlzbieusrp6iq5bysnlvfip6o5au4"
    },
    "mimeType": "image/webp",
    "size": 102512
  },
  "description": "Introducing vsky.network, a fan-out service for crawl requests across community atproto relays.",
  "path": "/3mlonhvou3c2o",
  "publishedAt": "2026-05-12T20:39:19.887Z",
  "site": "at://did:plc:7gm5ejhut7kia2kzglqfew5b/site.standard.publication/3ls34ezbet22y",
  "tags": [
    "atproto",
    "firehose",
    "relay",
    "pds",
    "vsky"
  ],
  "title": "Crawl me maybe"
}