+48
-20
readme.md
+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
+
[](https://bsky.app/profile/microcosm.blue)
7
+
[](https://discord.gg/tcDfe4PGVB)
8
+
[](https://github.com/sponsors/uniphil/)
9
+
[](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.