🦋 Production-Ready AT Protocol & Bluesky SDK for Flutter & Dart 💙
AT Protocol and Bluesky Social Things for Dart/Flutter
Welcome to atproto.dart 🦋
The comprehensive Dart/Flutter SDK for the AT Protocol ecosystem - empowering developers to build the next generation of decentralized social applications with Bluesky and beyond.
The AT Protocol represents a paradigm shift toward decentralized social networking, and Bluesky is leading this transformation. As the ecosystem grows rapidly with millions of users and thousands of developers building innovative applications, the need for robust, well-designed development tools has never been greater.
atproto.dart is the most comprehensive and battle-tested SDK for AT Protocol development in Dart and Flutter. Whether you're building mobile apps, web applications, bots, or backend services, our SDK provides everything you need to integrate with the AT Protocol ecosystem efficiently and reliably.
For Mobile & Web Developers:
For Backend & Bot Developers:
For AT Protocol Enthusiasts:
Proven in Production: Used by popular applications like SkyFeed, deck.blue, SkyThrow, and many others serving thousands of users daily. Our SDK is actively maintained, thoroughly tested, and designed for the demands of production applications.
The atproto.dart ecosystem is organized into focused packages that work together seamlessly. Choose the packages that match your project's needs, from low-level AT Protocol primitives to high-level client libraries.
Foundation packages for AT Protocol primitives and data structures
| Package | Description | pub.dev | Docs |
|---|---|---|---|
| at_primitives | AT Protocol primitive types (identifiers, URIs, NSIDs) - unified package | README | |
| xrpc | XRPC HTTP client with built-in retry and error handling | README | |
| multiformats | IPFS multiformats support for content addressing (CIDs, multihash, etc.) | README | |
| lexicon | Lexicon schema parsing and validation | README | |
| atproto_core | Shared utilities and base functionality for AT Protocol clients | README |
High-level API clients for AT Protocol services
| Package | Description | pub.dev | Docs |
|---|---|---|---|
| atproto | Complete AT Protocol client (com.atproto.* endpoints) with Firehose support | README / GUIDE | |
| bluesky | Full-featured Bluesky client (app.bsky.*, chat.bsky.* + AT Protocol) | README / GUIDE | |
| atproto_oauth | OAuth DPoP authentication client for secure user sessions | README | |
| did_plc | PLC Directory client for DID resolution and management | README |
Specialized packages for text processing
| Package | Description | pub.dev | Docs |
|---|---|---|---|
| bluesky_text | Rich text parsing for mentions, links, hashtags, and formatting | README / GUIDE |
| Tool | Install | Docs |
|---|---|---|
bluesky_cli: command line tool for app.bsky.* endpoints | dart pub global activate bluesky_cli | README |
| Workflow | Marketplace | Docs |
|---|---|---|
| bluesky-post: workflow for scheduled post to Bluesky from GitHub Actions | README |
Get up and running with AT Protocol and Bluesky in minutes. Choose your use case below:
Perfect for creating mobile apps, web clients, or social features.
dart pub add bluesky
import 'package:bluesky/atproto.dart';
import 'package:bluesky/bluesky.dart';
void main() async {
// Create authenticated session
final session = await createSession(
identifier: 'your-handle.bsky.social',
password: 'your-password',
);
final bsky = Bluesky.fromSession(session.data);
// Post to Bluesky
await bsky.feed.post.create(text: 'Hello from atproto.dart!');
// Get your timeline
final timeline = await bsky.feed.getTimeline();
for (final post in timeline.data.feed) {
print('${post.post.author.displayName}: ${post.post.record}');
}
}
Next Steps:
Ideal for bots, backend services, or custom AT Protocol implementations.
dart pub add atproto
import 'package:atproto/atproto.dart';
import 'package:atproto/firehose.dart';
import 'package:atproto/com_atproto_sync_subscriberepos.dart';
void main() async {
final session = await createSession(
service: 'https://bsky.social',
identifier: 'your-handle.bsky.social',
password: 'your-password',
);
// Connect to any AT Protocol service
final atproto = ATProto.fromSession(session.data);
// Create a record
await atproto.repo.createRecord(
repo: session.data.did,
collection: 'app.bsky.feed.post',
record: {
'text': 'Hello AT Protocol!',
'createdAt': DateTime.now().toUtc().toIso8601String(),
},
);
final subscription = await atproto.sync.subscribeRepos();
// Listen to the Firehose for real-time updates
await for (final event in subscription.data.stream) {
final repos = const SyncSubscribeReposAdaptor().execute(event);
repos.whenOrNull(
commit: (data) {
print('New commit: ${data.repo}');
},
);
}
}
Next Steps:
Contributing to atproto.dart or setting up the development environment? This project uses Melos for efficient monorepo management across all packages.
# Clone the repository
git clone https://github.com/myConsciousness/atproto.dart.git
cd atproto.dart
# Install Melos globally
dart pub global activate melos
# Set up all packages (dependencies, code generation, etc.)
melos setup
The melos setup command handles everything: installing dependencies, running code generation, and preparing the development environment across all packages.
| Command | Description |
|---|---|
melos setup | Complete project setup - run this first! |
melos get | Install dependencies for all packages |
melos analyze | Run static analysis across all packages |
melos test | Execute all tests in the project |
melos fmt | Format code and organize imports |
melos build | Run code generation for all packages |
melos gen | Generate API clients from Lexicon schemas |
Setup Issues:
~/.pub-cache/bin is in your PATH, or run dart pub global activate melosmelos clean followed by melos setup to reset the environmentdart --versionDevelopment Issues:
melos build to regenerate codemelos gen to update generated API clientsmelos get to refresh all package dependenciesNeed Help?
We welcome contributions! Whether you're fixing bugs, adding features, or improving documentation:
melos fmt helps!)melos test to verify)See our Contribution Guidelines for detailed information about the development process, coding standards, and how to submit changes.
The following projects/services are using atproto.dart packages:
You can see more at showcase, special thanks!
Your Brand Here!
50K+ engaged viewers every month
Limited spots available!
📧 Contact us via email🦋 Contact us on Bluesky