tapped: a Rust crate for building ATProto appviews with tap

16 January 2026

Crates.io: https://crates.io/crates/tapped
GitHub: https://github.com/thombles/tapped

I've published the first version of tapped, a Rust library to help build ATProto appviews that need to consume the firehose and backfill existing data from PDSes. For a Rust developer the basic problem is that there isn't (to my knowledge) a library that's as powerful as tap for handling both the jetstream and backfill. tap is a standalone Go binary with an HTTP API so there's a bit of boilerplate required to use it.

tapped enables you to either connect to or run a local instance of tap and interact with it using a typical strongly-typed async Rust API, hiding the fact that it's a separate process running an HTTP service.

In an ideal world (for a Rust dev) something like tap would be written in Rust from the ground up. I suppose it will be one day, and then that will probably be the most sensible way to write appviews in Rust. Until that day comes, however, tap is widely used. Therefore it would not be a bad starting point if you want to take data from the ATProto network and build the rest of your software in Rust.

The repo includes an example binary which subscribes to the main standard.site lexicons and dumps basic details about them into text files. It's pretty simple but demonstrates that the wrapper is working.

I've made some assumptions to keep this simple: everything is async Rust and I'm using reqwest under the hood which implies the use of a tokio runtime. If you use something else: I'm sorry, this is probably not the library you're looking for. Handling multiple async runtimes in a Rust library is painful at the best of times and I'll only consider it if this library turns out to be particularly useful. I'll use it, certainly. Whether anyone else will is another matter. If they don't, sorry for taking up the cool crate name "tapped".

Bug reports are most welcome. Aside from any technical specifics, the AT community has a great "let's make some stuff" vibe. It's a lot of fun so let's do that.


Serious Computer Business Blog by Thomas Karpiniec
Posts RSS, Atom