// for developers

Infrastructure you can build on

The pieces of the network we run, in Europe, for anyone to use.

Apps on the AT Protocol need infrastructure underneath them: something listening to the whole network, something resolving identities, something indexing what gets produced. Much of it currently runs in the United States, operated by a small number of American companies. If that layer goes down or changes direction, everything above it is affected.

We are rebuilding that layer in Europe. It is open source, it runs in EU data centres, and it is operated by a non-profit foundation rather than a company with an exit to plan for.

connecting
0 events/s

Live: posts, reposts and follows from across the network, streamed through our Jetstream. Metadata only, no post content. Connects only while this panel is on screen.

relay

live
$ wss://relay1.eurosky.network/xrpc/com.atproto.sync.subscribeRepos

A relay listens to every personal data server on the AT Protocol and aggregates what they publish into a single stream. If you are building anything that needs to see the whole network rather than one account at a time, this is the piece you connect to.

It runs across two servers with dedicated block storage and managed Postgres behind it, in EU data centres, and we chose the database provider specifically to avoid depending on a US-incorporated company for a sovereignty-critical piece.

jetstream

live
$ wss://jetstream1.eurosky.network/subscribe

The relay gives you everything the network produces, which is a great deal of data in a binary encoding, and most applications do not need all of it. Jetstream sits in front of the relay and does two things about that. It converts the stream to plain JSON, and it lets you subscribe to only the record types or accounts you care about.

The practical difference is what it costs you to consume. A client that only wants posts, or only wants activity from a set of accounts it is tracking, connects to Jetstream and receives that, instead of taking the full firehose and discarding most of it. For a lot of applications this is the difference between a service that needs its own infrastructure and one that runs on a small box.

plc-mirror

live
$ https://plc.eurosky.network

Every account on the AT Protocol has an identifier, and the PLC directory is the registry that resolves those identifiers to the servers and keys behind them. Every app on the network depends on it working.

We run a full European mirror. If the primary becomes unavailable or unreachable from Europe, the identity layer keeps resolving here. Depending on where you are, it can also be faster.

appview

live

An appview indexes the network and serves the feeds, threads and profiles an application actually displays. Ours handles microblogging and holds a full copy of the network, built from our own relay: the indexer, data plane, search and feed generator are all running.

mu users can choose it in mu's Content Services setting, and other developers are already using it in their apps. Apps reach it through the user's personal data server, which forwards app.bsky requests to whichever appview the app names, so switching is a small change on the app's side. If you want to point your app at it, get in touch.

status

  • pds live
  • migration-tool live
  • relay live
  • jetstream live
  • plc-mirror live
  • indexer live
  • data-plane live
  • search live
  • feed-generator live
  • moderation needs funding

Everything on this board is built except moderation tooling, which is specified and waiting on funding. The microblogging appview is made up of the indexer, data plane, search and feed generator.