--- title: '' --- # Ruby SDK for AT Protocol The ATProto Ruby SDK is a set of Ruby gems for interacting with and building on the [Bluesky APIs](https://docs.bsky.app) and the [AT Protocol](https://atproto.com) 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](/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](/skyfall/) – a websocket client built on [EventMachine](https://github.com/eventmachine/eventmachine) with a CBOR/CAR parser for streaming data from the firehose & Jetstream servers * [DIDKit](/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](https://plc.directory) * [Oxygene](/oxygene/) – data decoding primitives for handling CIDs, CAR, CBOR etc. * [BlueFactory](/blue_factory/) – a [Sinatra](https://sinatrarb.com)-based server for hosting feed generator services (custom feeds) * [Tapfall](/tapfall/) – a client for the [Tap service](https://github.com/bluesky-social/indigo/tree/main/cmd/tap), 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