forked from
microcosm.blue/microcosm-rs
Constellation, Spacedust, Slingshot, UFOs: atproto crates and services for microcosm
1microcosm HTTP APIs + rust crates
2=================================
3[](https://bsky.app/profile/microcosm.blue)
4[](https://discord.gg/tcDfe4PGVB)
5[](https://github.com/sponsors/uniphil/)
6[](https://ko-fi.com/bad_example)
7
8Welcome! Documentation is under active development. If you like reading API docs, you'll probably hit the ground running!
9
10Tutorials, how-to guides, and client SDK libraries are all in the works for gentler on-ramps, but are not quite ready yet. But don't let that stop you! Hop in the [microcosm discord](https://discord.gg/tcDfe4PGVB), or post questions and tag [@bad-example.com](https://bsky.app/profile/bad-example.com) on Bluesky if you get stuck anywhere.
11
12> [!tip]
13> This repository's primary home is moving to tangled: [@microcosm.blue/microcosm-rs](https://tangled.sh/@microcosm.blue/microcosm-rs). It will continue to be mirrored on [github](https://github.com/at-microcosm/microcosm-rs) for the forseeable future, and it's fine to open issues or pulls in either place!
14
15
16🌌 [Constellation](./constellation/)
17------------------------------------
18
19A 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.
20
21- Source: [./constellation/](./constellation/)
22- [Public instance/API docs](https://constellation.microcosm.blue/)
23- Status: used in production. APIs will change but backwards compatibility will be maintained as long as needed.
24
25
26🎇 [Spacedust](./spacedust/)
27----------------------------
28
29A 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](github.com/bluesky-social/jetstream).
30
31- Source: [./spacedust/](./spacedust/)
32- [Public instance/API docs](https://spacedust.microcosm.blue/)
33- Status: v0: the basics work and the APIs are in place! missing cursor replay, forward link storage, and delete event link hydration.
34
35### Demos:
36
37- [Spacedust notifications](https://notifications.microcosm.blue/): web push notifications for _every_ atproto app
38- [Zero-Bluesky real-time interaction-updating post embed](https://bsky.bad-example.com/zero-bluesky-realtime-embed/)
39
40
41🛰️ [Slingshot](./slingshot)
42---------------------------
43
44A 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.
45
46- Source: [./slingshot/](./slingshot/)
47- [Public instance/API docs](https://slingshot.microcosm.blue/)
48- Status: v0: most XRPC APIs are working. cache storage is being reworked.
49
50
51🛸 [UFOs API](./ufos)
52---------------------
53
54Timeseries stats and sample records for every [collection](https://atproto.com/guides/glossary#collection) ever seen in the atproto firehose. Unique users are counted in hyperloglog sketches enabling arbitrary cardinality aggregation across time buckets and/or NSIDs.
55
56- Source: [./ufos/](./ufos/)
57- [Public instance/API docs](https://ufos-api.microcosm.blue/)
58- 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.
59
60> [!tip]
61> See also: [UFOs atproto explorer](https://ufos.microcosm.blue/) built on UFOs API. ([source](github.com/at-microcosm/spacedust-utils))
62
63
64💫 [Links](./links)
65-------------------
66
67Rust library for parsing and extracting links (at-uris, DIDs, and URLs) from atproto records.
68
69- Source: [./links/](./links/)
70- Status: not yet published to crates.io; needs some rework
71
72
73🛩️ [Jetstream](./jetstream)
74---------------------------
75
76A low-overhead jetstream client with cursor handling and automatic reconnect.
77
78- Source: [./links/](./links/)
79- Status: used in multiple apps in production, but not yet published to crates.io; some rework planned
80
81> [!tip]
82> See also: [Rocketman](https://github.com/teal-fm/cadet/tree/main/rocketman), another excellent rust jetstream client which shares some lineage and _is_ published on crates.io.
83
84
85
86🔭 Deprecated: [Who am I](./who-am-i)
87-------------------------------------
88
89An 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.
90
91- Source: [./who-am-i/](./who-am-i/)
92- Status: ready for retirement.
93
94> [!warning]
95> `who-am-i` is still in use for the Spacedust Notifications demo, but that will hopefully be migrated to use atproto oauth directly instead.