Projects

streamcast

A JSON WebSocket pubsub framework for structured data.

Python · WebSocket · JSON Schema · msgspec github.com/nhobin219/streamcast

Publishers write and subscribers read, and every message can be appended to a litelink log before any subscriber sees it. Streams declare a JSON Schema, and rows are validated before they are written.

The log is the analytical table

Streaming data usually goes to a message log and then gets copied to an analytical store by a separate pipeline, which leaves two copies to keep in sync. With streamcast the litelink log is the analytical table, so the same rows stream live and answer SQL later from DuckDB or any Iceberg reader. There is no extraction step and no second copy.

Delivery guarantees you choose

Plain publishers are at-least-once under retry. Opting in to exactly-once adds broker-side deduplication of named publishers, and an inbox and outbox pattern lets a consumer commit its own writes and its outgoing messages in a single database transaction.

Resumable by design

Every message carries its log offset, so a subscriber that disconnects can reconnect and resume where it stopped. It can catch up from the published history, or from a cursor kept on disk or in object storage.

Built on streamcast

agent-office uses it as the message log between agents and services.