statestream.online
private alpha · wave 2 of 4 --:--:-- UTC
§ 01  /  not open yet

Stop polling for what changed.

StateStream keeps one source of truth in sync across services, browsers and edge nodes. Every change is a numbered patch in an append-only log, so any client can catch up after a dropped connection, replay a session, or rewind to the exact moment something went wrong. We're finishing the boring parts first.

§ 02 — fig. 1  one log, two replicassimulated in your browser · no network · keys 1–4
writer · edge-fra-1seq 0

      
patch logRFC 6902
    replica · edge-sgn-1seq 0
    
          
    following live
    0events/s, all regions
    ingest · last 12 s · simulated
    § 03  what you'll getsubject to change until it isn't
    delivery
    Ordered, exactly-once per subscriber. Resume from any seq you've seen — no full refetch.
    wire format
    JSON Patch over WebSocket, SSE fallback, plain HTTP for anything that can't hold a socket.
    storage
    Append-only segments, compacted into snapshots in the background. Writers never wait for compaction.
    rewind
    Read state as of any seq or timestamp inside your retention window. Diff two points in time.
    conflicts
    Resolved by the server, in order, with the losing write kept in the log so you can see what happened.
    clients
    TypeScript first (6.8 kB gz). Go and Python after launch.
    self-host
    One binary plus Postgres for metadata. Same API as hosted.

    What it is not.

    A database. Keep yours. StateStream sits next to it and streams what changed.

    A queue you have to babysit. No partitions to rebalance, no consumer groups to explain to the new hire.

    CRDT magic. We picked a single ordered log on purpose. It's boring, debuggable, and it doesn't surprise you at 2 a.m.

    — the people on call for it

    § 04  launch criteriano countdown — we open when this list says so
    • Ordered delivery survives network partitions in our fault-injection harness
    • Client resumes cleanly after 24 hours offline
    • Compaction without write stalls
    • TypeScript client under 7 kB gzipped
    • Rewind API works across compacted segments
    • Fan-out p99 under 10 ms across three regionscurrently 14 ms
    • Billing you can predict without a spreadsheetpricing model drafted, not tested
    • Docs a tired person can follow during an incidenthalf written, all rewritten twice

    Five of eight. The last three are the hard ones.

    § 05  build lognewest first · unedited
    1. Fan-out p99 is 14 ms between Frankfurt, Saigon and Virginia. It was 31 ms in September. The last four milliseconds are going to cost more than the first seventeen.tags: latency, fan-out

    2. Rewind now works on compacted segments. "Just replay from the nearest snapshot" turned out to have eleven edge cases. We wrote a test for each one and named them after the people who found them.tags: rewind, storage

    3. TypeScript client dropped below 7 kB gzipped after we deleted our own event emitter. Nobody noticed it was gone, which is the best review a piece of code can get.tags: client

    4. The 24-hour-offline resume test has been green for thirty nights straight. Moving it from "flaky" to "boring", where it belongs.tags: reliability

    5. First external alpha team onboarded. They found three bugs in under an hour, two of them in the error messages. Good.tags: alpha

    § 06  /  wave 3

    Ask for a seat in the next wave.

    We let teams in a few at a time so we can actually answer when something breaks. Tell us what you'd stream and we'll prioritise the workloads that will hurt us most usefully.

    what would you stream?

    One email when your wave opens. Maybe one more if we slip. No newsletter, no "just checking in".