Introduction to Bluesky's AT Protocol
4 days ago
- #ATProto
- #Decentralization
- #Bluesky
- The AT Protocol (ATProto) is the underlying system for Bluesky, designed to be decentralized and modular.
- Bluesky is both a company (Bluesky PBC) and a product (the social network), built on ATProto as a tech demo.
- ATProto consists of records (JSON objects representing data) and blobs (binary files like images).
- Records are defined by lexicons, which are schema definitions specifying data structure and constraints.
- Each user is identified by a Decentralized Identifier (DID), which is permanent and not tied to handles.
- Handles can change (e.g., @user.bsky.social to @user.example.com) without breaking connections, as DIDs remain constant.
- User data is stored in repositories (repos), which include records and blobs, and can be downloaded as CAR files.
- XRPC is the API convention used in ATProto, with endpoints like `/xrpc/app.bsky.feed.getPosts`.
- Rich text in posts uses a 'facets' system, where links and mentions are explicitly marked in the text.
- Personal Data Servers (PDS) store user data and act as the 'source of truth' for accounts.
- Relays aggregate firehose streams from PDSes, providing a unified data feed for services like AppViews.
- AppViews process and serve data to client apps, enabling features like timelines, search, and moderation.
- Labellers are moderation services that assign labels to content, which users can subscribe to for filtering.
- Custom feeds are generated by third-party services, allowing users to create and share algorithmic timelines.
- Client apps (like bsky.app) interact with PDSes and AppViews via APIs, with no built-in frontend on PDSes.
- DMs are currently centralized and not part of the protocol, with plans for future end-to-end encryption.