Skip to content

Ruby SDK for AT Protocol ​

The ATProto Ruby SDK is a set of Ruby gems for interacting with and building on the Bluesky APIs and the AT Protocol it's built on. It isn't really a single consistent SDK, but rather a group of independent gems built for handling different aspects of the protocol, and this website just puts it all in one place for easy access.

💎 Currently available gems:

  • Minisky – a basic XRPC client for making GET/POST calls to the various API endpoints on PDSes, AppViews and relays, including authenticated calls (using app passwords)
  • Skyfall – a websocket client built on EventMachine with a CBOR/CAR parser for streaming data from the firehose & Jetstream servers
  • DIDKit – a set of tools for resolving ATProto @handles to DIDs and fetching info (DID document) about a given DID, and for loading data from plc.directory
  • Oxygene – data decoding primitives for handling CIDs, CAR, CBOR etc.
  • BlueFactory – a Sinatra-based server for hosting feed generator services (custom feeds)
  • Tapfall – a client for the Tap service, for importing ATProto repo data

In the sidebar on the left you can also see links to a few sample projects that make use of these gems, including a template of a feed generator service. I've been using the above gems (except Tapfall) in all my Ruby projects since 2023, and they're all pretty battle tested at this point.

Ruby versions ​

All of the gems listed here should work on Ruby 3.0 and above, though of course it's recommended to use a more recent version that's still getting maintenance updates (e.g. 3.2+). Minisky, Skyfall and DIDKit should also work on older Rubies like 2.6-2.7 (including the ones shipped with macOS Big Sur or newer).

To do list ​

🚫 What is currently not implemented yet:

  • OAuth support – Minisky currently only supports app passwords for auth
  • user-friendly APIs mapping all lexicon endpoints, like getProfile, getPosts – Minisky only includes basic GET/HTTP request methods, to which you need to pass a full endpoint NSID and a parameter hash
  • rich record models – data in Minisky and Skyfall is returned as plain Ruby hashes
  • lexicon code generation tooling
  • helpers for cryptographic operations like signature/token validation
  • general tooling for building XRPC servers