atproto
The AT Protocol SDK
What it is and what it does
atproto is a Python SDK for building clients and tools that interact with the AT Protocol, the decentralized social protocol behind Bluesky. It autogenerates type-hinted models and namespaced XRPC clients from lexicon schemas, so you get IDE autocomplete and static type safety when calling API methods. The SDK covers both high-level convenience methods (login, send_post, like) and low-level namespace-based access for full API coverage.
It ships with support for synchronous and asynchronous I/O, firehose data streaming, identity resolution (DID and Handle lookup), cryptographic utilities, and tools for working with AT URI schemes, CID, CAR files, and DID documents. The library depends on httpx for HTTP, pydantic for validation, cryptography for signing, websockets for real-time streams, and several other stable libraries. It is actively maintained but remains in alpha, meaning the public API may change before version 1.0.0.
Use it for:
- Build a Bluesky bot or automation tool that posts, likes, follows, or manages direct messages programmatically
- Consume real-time firehose data streams to index posts, build custom feeds, or monitor network activity
- Integrate ATProto identity resolution (DID and Handle lookup) into a larger application
- Generate code from custom lexicon schemas to build clients for non-Bluesky ATProto services
- Implement server-side ATProto utilities like JWT handling or DID key management
Worth the install?
AI-flagged interpretation of the facts on this page — verify before relying
Python SDK for the AT Protocol that provides typed, autogenerated client bindings for Bluesky and other ATProto-compatible services, with both sync and async support.
Yes, if you need to build Bluesky or ATProto clients in Python. The SDK is actively maintained, has low install friction, carries no security vulnerabilities, and provides comprehensive type hints and async support. The main caveat is that it is still in alpha, so expect potential breaking changes before 1.0.0—pin your version if stability is critical.
Install
atproto on PyPI
pip
pip install atprotouv
uv add atprotopoetry
poetry add atprotoInstalling atproto
Before you install
Low install friction with a pure-Python wheel and eight stable runtime dependencies. Active maintenance with a recent release (51 days old) and 656 repository stars. Still in alpha (Development Status :: 3), so breaking changes between versions are explicitly not guaranteed until 1.0.0.
License in practice
MIT license permits commercial and private use with minimal restrictions. You must include a copy of the license and copyright notice in distributions.
Quickstart
pip install atproto
from atproto import Client
client = Client()
client.login('my-handle', 'my-password')
client.send_post(text='Hello World!')
Requires Python 3.9 or higher. Credentials (handle and password, or app-specific password) needed to authenticate with an ATProto server.
Verify before relying
- Whether the SDK's autogenerated models remain stable across lexicon updates from atproto.com and bsky.app
- Performance characteristics and rate-limit handling for high-volume firehose streaming
- Compatibility guarantees for custom lexicon schemes beyond the bundled Bluesky lexicons
Package facts
| License | MIT (permissive) |
| Python support | supports the current Python release (<3.15,>=3.9) |
| Install friction | low — pure-Python wheel |
| Runtime dependencies | 8 — click, cryptography, dnspython, httpx, libipld, pydantic, typing-extensions, websockets |
| Maintenance | actively maintained — 51 days since the last release |
| Last repo commit | |
| First released | |
| Downloads | 901,045/month — #4,773 on PyPI (30-day window, as of 2026-08-14) |
| Known vulnerabilities | none known (OSV.dev, checked 2026-08-14) |
Evidence: atproto-0.0.69-py3-none-any.whl
Keywords: library, sdk, codegen, xrpc, xrpc-client, atprotocol, atproto, lexicon, parser, schema, bluesky, bluesky-api, at, uri, atp, nsid, did, cid
Tags
More Software Development packages
Provides backported and experimental type hints…
permissive · top 100 on PyPI
numpyNumPy provides an N-dimensional array object…
permissive · top 100 on PyPI
fastapiFastAPI is a Python web framework for building…
permissive · top 100 on PyPI
annotated-docProvides a way to document function parameters,…
permissive · top 100 on PyPI
typerTyper builds command-line applications from…
permissive · top 1,000 on PyPI
distlibDistlib provides low-level packaging utilities…
permissive · top 1,000 on PyPI
blueskyBluesky is an experiment control and scientific…
permissive · top 15,000 on PyPI
libipldlibipld provides fast Python bindings to a Rust…
permissive · top 15,000 on PyPI
injective-pyInjective Python SDK provides client libraries…
permissive · top 15,000 on PyPI
xai-sdkOfficial Python SDK for xAI's APIs, providing…
permissive · top 5,000 on PyPI
meilisearch-python-sdkProvides both async and sync Python clients for…
permissive · top 15,000 on PyPI
seamOfficial Python SDK for the Seam API that…
permissive · top 15,000 on PyPI
event-modelDefines and validates the formal data model for…
permissive · top 15,000 on PyPI
types-aiobotocore-firehoseProvides type annotations and IDE autocomplete…
permissive · top 15,000 on PyPI
pytgcallsEnables Python bots to join Telegram voice…
copyleft · top 5,000 on PyPI
go2rtc-clientAsynchronous Python client library for…
permissive · top 15,000 on PyPI