Jetstream consumer (JSON firehose client) #43

Closed
opened 2026-07-05 17:02:31 +00:00 by Grandiras · 0 comments
Owner

Add a consume-only Jetstream client: JetstreamClient (single WebSocket over /subscribe, legacy Jetstream protocol) and JetstreamConsumer (auto-reconnect, cursor persistence via existing IFirehoseCursorStore, rewind + dedup on reconnect). Server-side collection/DID filtering via wantedCollections/wantedDids, unix-µs cursors, forward-tolerant JSON parser (kinds: commit/identity/account). No zstd in v1 — expose an IJetstreamDecompressor seam instead to keep the core package dependency-light. Docs page + caveat: Jetstream events are not cryptographically verifiable (no MST proofs), unlike the binary firehose.

Motivation: indexing a niche collection (e.g. exchange.recipe.* for the Mise appview) over the binary firehose downloads the whole network's commit stream; Jetstream's server-side filtering makes that near-free.

Add a consume-only Jetstream client: `JetstreamClient` (single WebSocket over `/subscribe`, legacy Jetstream protocol) and `JetstreamConsumer` (auto-reconnect, cursor persistence via existing `IFirehoseCursorStore`, rewind + dedup on reconnect). Server-side collection/DID filtering via `wantedCollections`/`wantedDids`, unix-µs cursors, forward-tolerant JSON parser (kinds: commit/identity/account). No zstd in v1 — expose an `IJetstreamDecompressor` seam instead to keep the core package dependency-light. Docs page + caveat: Jetstream events are not cryptographically verifiable (no MST proofs), unlike the binary firehose. Motivation: indexing a niche collection (e.g. `exchange.recipe.*` for the Mise appview) over the binary firehose downloads the whole network's commit stream; Jetstream's server-side filtering makes that near-free.
Grandiras referenced this issue from a commit 2026-07-25 22:39:22 +00:00
Sign in to join this conversation.
No milestone
No project
No assignees
1 participant
Notifications
Due date
The due date is invalid or out of range. Please use the format "yyyy-mm-dd".

No due date set.

Dependencies

No dependencies set.

Reference
Grandiras/ATProto.NET#43
No description provided.