atproto utils for zig
zat.dev
atproto
sdk
zig
1# roadmap
2
3zat started as a small set of string primitives for AT Protocol — the types everyone reimplements (`Tid`, `Did`, `Handle`, `Nsid`, `Rkey`, `AtUri`). the scope grew based on real usage.
4
5## current status
6
7**v0.3.0-alpha** — zig 0.16, `std.Io` throughout.
8
9the v0.3.0 migration replaced all networking and concurrency primitives with zig 0.16's [`std.Io`](https://ziglang.org/documentation/master/std/#std.Io) interface. the API change is mechanical: every networking type takes `io: std.Io` as its first parameter. streaming clients moved from `connect()` + `next()` loops to `subscribe(handler)` with automatic reconnection, backoff, and host rotation.
10
11the library is stable and tested. the alpha tag reflects that downstream consumers (zlay, labelz, pollz) are still validating in production.
12
13## history
14
15**what grew from usage:**
16- string primitives with parsing and validation — the initial scope
17- DID/handle resolution — `DidResolver`, `DidDocument`, `HandleResolver`
18- XRPC client and JSON helpers
19- JWT verification for service auth
20- jetstream client — typed JSON event stream with reconnection (v0.1.3)
21- firehose client — raw CBOR event stream, DAG-CBOR codec, CAR codec, CID creation (v0.1.4)
22- MST, ECDSA signing, `did:key` construction, multibase encoding (v0.1.9)
23- full repo verification — end-to-end trust chain from handle to MST root CID match (v0.2.0)
24- CID hash verification in CAR parser (v0.2.1), size limits (v0.2.2)
25- OAuth 2.1 DPoP client (v0.2.14)
26- configurable keep-alive, transport options (v0.2.12–v0.2.18)
27- `std.Io` migration, `subscribe(handler)` streaming API (v0.3.0-alpha)
28
29this pattern — start minimal, expand based on real pain — continues.
30
31## what's next
32
33the library covers the full AT Protocol verification pipeline: identity resolution, repo parsing, signature verification, and MST validation. benchmarked against Go (indigo) and Rust (rsky) in [atproto-bench](https://tangled.org/zzstoatzz.io/atproto-bench).
34
35near-term:
36- promote to v0.3.0-beta once production consumers stabilize
37- cut v0.3.0 when the API surface is confirmed
38
39what's missing will show up when people build things. until then, no speculative features.
40
41## maybe later
42
43these stay out of scope unless real demand emerges:
44
45- lexicon codegen — probably a separate project
46- higher-level clients/frameworks — too opinionated
47- token refresh/session management — app-specific
48- feed generator scaffolding — each feed is unique
49
50## non-goals
51
52zat is not trying to be:
53
54- a "one true SDK" that does everything
55- an opinionated app framework
56- a replacement for understanding the protocol