Constellation, Spacedust, Slingshot, UFOs: atproto crates and services for microcosm
75
fork

Configure Feed

Select the types of activity you want to include in your feed.

more readme stuff

jestream lib, badges, intro with links etc

phil 1e19d789 3516df8a

+48 -20
+48 -20
readme.md
··· 1 1 microcosm 2 2 ========= 3 3 4 - This repo contains APIs and libraries for [atproto](https://atproto.com/) services from [microcosm](https://microcosm.blue): 4 + HTTP APIs and rust libraries for [atproto](https://atproto.com/) services from [microcosm](https://microcosm.blue). 5 + 6 + [![@microcosm.blue: bluesky](https://img.shields.io/badge/@microcosm.blue-bluesky-blue)](https://bsky.app/profile/microcosm.blue) 7 + [![microcosm discord: join](https://img.shields.io/badge/microcosm_discord-join-purple)](https://discord.gg/tcDfe4PGVB) 8 + [![github sponsors: support](https://img.shields.io/badge/github_sponsors-support-pink)](https://github.com/sponsors/uniphil/) 9 + [![ko-fi: support](https://img.shields.io/badge/ko--fi-support-pink)](https://ko-fi.com/bad_example) 10 + 11 + Welcome! 12 + 13 + The documentation for microcosm services is under active development. If you like reading API docs, you'll probably hit the ground running! 14 + 15 + Tutorials, 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://img.shields.io/badge/microcosm_discord-join-purple), or post questions and tag [@bad-example.com](https://bsky.app/profile/bad-example.com) on Bluesky if you get stuck anywhere! 16 + 17 + 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! 5 18 6 19 7 20 🌌 [Constellation](./constellation/) ··· 9 22 10 23 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. 11 24 12 - - source: [./constellation/](./constellation/) 13 - - [public instance + API docs](https://constellation.microcosm.blue/) 14 - - status: used in production. APIs will change but backwards compatibility will be maintained as long as needed. 25 + - Source: [./constellation/](./constellation/) 26 + - [Public instance/API docs](https://constellation.microcosm.blue/) 27 + - Status: used in production. APIs will change but backwards compatibility will be maintained as long as needed. 15 28 16 29 17 30 🎇 [Spacedust](./spacedust/) ··· 19 32 20 33 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](github.com/bluesky-social/jetstream). 21 34 22 - - source: [./spacedust/](./spacedust/) 23 - - [public instance + API docs](https://spacedust.microcosm.blue/) 24 - - status: v0: the basics work and the APIs are in place! missing cursor replay, forward link storage, and delete event link hydration. 35 + - Source: [./spacedust/](./spacedust/) 36 + - [Public instance/API docs](https://spacedust.microcosm.blue/) 37 + - Status: v0: the basics work and the APIs are in place! missing cursor replay, forward link storage, and delete event link hydration. 25 38 26 - Demos: 39 + ### Demos: 27 40 28 41 - [Spacedust notifications](https://notifications.microcosm.blue/): web push notifications for _every_ atproto app 29 42 - [Zero-Bluesky real-time interaction-updating post embed](https://bsky.bad-example.com/zero-bluesky-realtime-embed/) ··· 34 47 35 48 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. 36 49 37 - - source: [./slingshot/](./slingshot/) 38 - - [public instance + API docs](https://slingshot.microcosm.blue/) 39 - - status: v0: most XRPC APIs are working. cache storage is being reworked. 50 + - Source: [./slingshot/](./slingshot/) 51 + - [Public instance/API docs](https://slingshot.microcosm.blue/) 52 + - Status: v0: most XRPC APIs are working. cache storage is being reworked. 40 53 41 54 42 55 🛸 [UFOs API](./ufos) ··· 44 57 45 58 Timeseries 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. 46 59 47 - - source: [./ufos/](./ufos/) 48 - - [public instance + API docs](https://ufos-api.microcosm.blue/) 49 - - 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. 60 + - Source: [./ufos/](./ufos/) 61 + - [Public instance/API docs](https://ufos-api.microcosm.blue/) 62 + - 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. 50 63 51 - See also: [UFOs atproto explorer](https://ufos.microcosm.blue/) built on UFOs API. ([source](github.com/at-microcosm/spacedust-utils)) 64 + > [!info] 65 + > See also: [UFOs atproto explorer](https://ufos.microcosm.blue/) built on UFOs API. ([source](github.com/at-microcosm/spacedust-utils)) 52 66 53 67 54 68 💫 [Links](./links) ··· 56 70 57 71 Rust library for parsing and extracting links (at-uris, DIDs, and URLs) from atproto records. 58 72 59 - - source: [./links/](./links/) 60 - - status: not yet published to crates.io; needs some rework 73 + - Source: [./links/](./links/) 74 + - Status: not yet published to crates.io; needs some rework 75 + 76 + 77 + 🛩️ [Jetstream](./jetstream) 78 + --------------------------- 79 + 80 + A low-overhead jetstream client with cursor handling and automatic reconnect. 81 + 82 + - Source: [./links/](./links/) 83 + - Status: used in multiple apps in production, but not yet published to crates.io; some rework planned 84 + 85 + > [!info] 86 + > 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. 87 + 61 88 62 89 63 90 🔭 Deprecated: [Who am I](./who-am-i) ··· 65 92 66 93 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. 67 94 68 - - source: [./who-am-i/](./who-am-i/) 69 - - status: ready for retirement. 95 + - Source: [./who-am-i/](./who-am-i/) 96 + - Status: ready for retirement. 70 97 71 - Still in use for the Spacedust Notifications demo, but that will hopefully be migrated to use atproto oauth directly instead. 98 + > [!warning] 99 + > Still in use for the Spacedust Notifications demo, but that will hopefully be migrated to use atproto oauth directly instead.