AT Protocol is a decentralized social media protocol that provides a reference implementation and TypeScript SDK for building applications on top of the Authenticated Transfer Protocol.
The protocol solves the problem of vendor lock-in in social media by enabling third-party developers to build custom feeds, federated services, and alternative clients against the same APIs as first-party applications. It achieves this through a set of standardized schemas and APIs defined in Lexicon format, with the core protocol primitives split into focused packages for identifier parsing, DID and handle resolution, cryptographic signing, repository management, and firehose consumption. The Bluesky Social application layer builds on top of this foundation using the app.bsky namespace.
Developers building applications or bots should start with the type-safe SDK that generates TypeScript from Lexicon schemas and provides an HTTP client. Those implementing OAuth authentication can choose from client variants for browser, Node, or Expo runtimes. If you are implementing the protocol itself, the tool provides specialized packages for each concern: syntax for identifier parsing, identity and DID packages for resolution, crypto for signing operations, repo for repository and Merkle Search Tree management, and sync for firehose consumption. The older API client still exists but new code should prefer the newer SDK. The repository contains both the canonical Lexicon definitions for the core protocol and application layer, as well as multiple TypeScript packages published under the @atproto scope on npm.
The project maintains active discussion channels for questions and provides comprehensive protocol specifications and guides. Development activity shows consistent work across multiple focused packages, with clear separation between public APIs published to npm and internal shared utilities. The codebase demonstrates ongoing refinement of the SDK approach, with newer packages preferred over older alternatives while maintaining backward compatibility for existing code.