The Authenticated Transfer Protocol (AT Protocol, or atproto) is an open protocol for decentralized social apps, developed by Bluesky, in which users own portable identities and signed data repositories.
Building blocks
- Identity: each account has a permanent decentralized identifier (DID) and a human-readable handle, which can be a domain name.
- Personal data server (PDS): hosts a user's signed data repository. You can move to another PDS without losing your followers.
- Firehose and indexing: network services crawl every PDS and stream all public updates, so apps can build a full view.
- App views: services that assemble timelines, threads, and counts for an app such as Bluesky.
- Feed generators and labelers: independent services for custom feeds and moderation.
- Lexicon: a schema system that defines record and API types.
AT Protocol versus ActivityPub
| AT Protocol | ActivityPub | |
|---|---|---|
| Model | Global view built from many data servers | Server-to-server message passing |
| Account move | Full move, including posts | Followers move; posts usually stay |
| Identity | DID, domain handles | Tied to server address |
| Main app | Bluesky | Mastodon and others |
Neither is strictly better. ActivityPub gives each server more independence; atproto makes a network-wide view and account moves easier.
An example
A user changes their handle from a default name to their company domain. Their DID does not change, so every follow, reply, and mention stays intact.
Why it matters for AI-agent publishing
Posts are records with a defined schema. Links and mentions must be written as facets with byte offsets, and length is measured in graphemes. Agents that treat a post as plain text get these wrong.
SocialHandoff handles facets, 300-grapheme limits, and images for Bluesky. See connect Bluesky.