ATProto architecture at a glance
Visual summary based on
Introduction to AT Protocol
by Kuba Suder
(@mackuba.eu).
- Identity (DID + Handle)
- DID is permanent; handle can change freely. The DID document (at plc.directory) maps DID to PDS host, keys, and handle.
- Records & Lexicons
- Records are JSON objects (post, like, follow). Each type is defined by a lexicon schema with an NSID like
app.bsky.feed.post.
- Repository
- Each user has one repo (keyed by DID) that stores all their records from all lexicons + blobs. Exportable as a CAR file.
- PDS
- Personal Data Server: source of truth for your repo, handles auth, exposes a firehose of real-time changes. You can migrate between PDSes.
- AppView
- Aggregates data across repos so clients can get timelines, search, and follower lists. Requests are proxied through the PDS.
- Relay, Labelers & Feeds
- Relay fans out PDS firehoses. Labelers apply moderation labels. Feed generators produce custom algorithmic timelines.