microcosm#
This repo contains APIs and libraries for atproto services from microcosm:
🌌 Constellation#
A global atproto interactions backlink index as a simple JSON API. Works with every lexicon, runs on a raspberry pi, consumes less than 2GiB of disk per day. Handles record deletion, account de/re-activation, and account deletion, ensuring accurate link counts while respecting users' data choices.
- source: ./constellation/
- public instance + API docs
- status: used in production. APIs will change but backwards compatibility will be maintained as long as needed.
🎇 Spacedust#
A global atproto interactions firehose. Extracts all at-uris, DIDs, and URLs from every lexicon in the firehose, and exposes them over a websocket modelled after jetstream.
- source: ./spacedust/
- public instance + API docs
- status: v0: the basics work and the APIs are in place! missing cursor replay, forward link storage, and delete event link hydration.
Demos:
- Spacedust notifications: web push notifications for every atproto app
- Zero-Bluesky real-time interaction-updating post embed
🛰️ Slingshot#
A fast, eager, production-grade edge cache for atproto records and identities. Pre-caches all records from the firehose and maintains a longer-term cache of requested records on disk.
- source: ./slingshot/
- public instance + API docs
- status: v0: most XRPC APIs are working. cache storage is being reworked.
🛸 UFOs API#
Timeseries stats and sample records for every collection ever seen in the atproto firehose. Unique users are counted in hyperloglog sketches enabling arbitrary cardinality aggregation across time buckets and/or NSIDs.
- source: ./ufos/
- public instance + API docs
- status: Used in production. It has APIs and they work! Needs improvement on indexing; needs more indexes and some more APIs to the data exposed.
See also: UFOs atproto explorer built on UFOs API. (source)
💫 Links#
Rust library for parsing and extracting links (at-uris, DIDs, and URLs) from atproto records.
- source: ./links/
- status: not yet published to crates.io; needs some rework
🔭 Deprecated: Who am I#
An identity bridge for microcosm demos, that kinda worked. Fixing its problems is about equivalent to reinventing a lot of OIDC, so it's being retired.
- source: ./who-am-i/
- status: ready for retirement.
Still in use for the Spacedust Notifications demo, but that will hopefully be migrated to use atproto oauth directly instead.