// the find
blacksky-algorithms/rsky
An AT Protocol implementation prioritizing community safety and self-governance, written in Rust.
rsky is a Rust implementation of the AT Protocol — the decentralized social protocol behind Bluesky — covering the full stack from crypto primitives and DID resolution up through PDS, relay, feed generator, and labeler. It's built by and for the Blacksky community, so moderation and community safety tooling are first-class concerns rather than afterthoughts. Target audience is developers who want to self-host AT Protocol infrastructure or build alternative clients/feeds on Bluesky without touching TypeScript.
The crate decomposition is well-thought-out: rsky-crypto, rsky-identity, rsky-lexicon, and rsky-syntax are independently publishable on crates.io, so you can pull in just the pieces you need without dragging in a full PDS. The PDS deliberately swaps SQLite for Postgres and local disk for S3-compatible storage — a real operational improvement over the reference implementation for anyone running this at scale or migrating between cloud providers. The labeler service is a first-class component, not bolted on; the moderation-first design philosophy shows up structurally in the repo layout. Active development with commits as recent as yesterday and a clear migration history (25+ diesel migrations in rsky-feedgen alone) means this isn't abandonware.
The project openly warns it's pre-1.0 with no stability guarantees, and the contribution rules basically say 'we might just close your issue' — so don't build something customer-facing on top of this without forking. The PDS is a port of the canonical TypeScript implementation rather than an independent design, which means it inherits AT Protocol's own protocol churn and you're always playing catch-up with Bluesky PBC's changes. Documentation is thin beyond the README badges; there's no API reference, no architecture doc explaining how the services wire together, and no integration test suite visible in the tree. The rsky-satnav and rsky-wintermute components appear in the README but their source trees aren't in the truncated listing, suggesting uneven completion across the workspace.