Use cases

0 / 5

0 Primitive

Durable streams

Append records, read their history, and follow new records as they arrive.

0 Primitive

Durable streams

Append records, read their history, and follow new records as they arrive.

1 Telemetry

Customer-facing telemetry

Give customers live and historical access to their workloads’ telemetry, for people to watch and for code and agents to act on.

Use a stream per run, worker, or serverless invocation. Clients may read it directly with a scoped access token, with no server relaying each record. Keep history as long as you need it, then let streams expire on their own.

  • Browser telemetry

    Kernel serves browser-session events from S2 through its live and historical telemetry API. It also uses OTLP ingest for VM logs.

    Kernel telemetry documentation
  • Worker events and logs

    Beam collects worker events, container logs, and live resource usage in S2.

    Beam’s S2 integration
  • Shared sandbox activity

    Autumn uses S2 to let multiple users follow activity in the same agent sandbox. Viewers who join late or reconnect catch up without missing events.

    Autumn website

2 Agent I/O

Resumable channels

Give agents, workers, and their callers a durable channel for async messages.

Each invocation gets a mailbox that keeps acknowledged messages while the recipient is offline. When it wakes, it catches up from its cursor and follows live. Clients can read over SSE like any other event stream, except a dropped connection loses nothing.

  • Realtime Streams v2

    Trigger.dev’s Realtime Streams v2 stores task output in S2 streams associated with each run. Clients can reconnect and resume reading output from their last position.

    Realtime Streams v2 announcement
  • Shared agent session history

    Trylle stores human messages, agent responses, and session updates in S2. Teammates joining a shared session can read its earlier messages and updates.

    Trylle website

3 Event history

Replayable event history

Capture events as they happen and keep them as long-term history. One read runs from past records into live updates.

Durable acknowledgments hold up through bursts and sustained ingest. The stream itself can be the recording, with no separate store to write.

  • Voice-agent event history

    Phonic stores voice-agent events in S2 so it can investigate calls after the fact, including when audio was received and sent.

  • Stream-native call recording

    Synento records every video call by appending each participant’s camera, mic, and screen frames to S2 streams as they’re relayed. Replay and MP4 export read those same streams.

    Synento concepts documentation

4 Agent WAL

Recoverable state

Record agent and application state changes in a high-throughput, durable, strongly consistent log. Replay it to recover after a crash or start a new instance from an earlier state.

S2 Cloud accepts up to 100 MiB/s per stream with ordered pipelining, and conditional appends keep writers from stepping on each other. You decide how state is materialized, snapshotted, and recovered.

  • Agent session recovery

    Trigger.dev loads a transcript snapshot from S3, then replays newer output and pending input from S2. The next run continues with that recovered conversation context.

    Trigger.dev session recovery documentation
  • Overeasy: a forkable filesystem

    Modal’s experimental Overeasy stores filesystem mutations in S2 and file payloads in S3. Replaying the log reconstructs filesystem state, which can be recovered or forked.

    Overeasy repository

5 App sync

Shared application state

Keep application state in sync across clients and services. Every reader applies the same sequence of changes, catches up after a disconnect, and follows along live.

A browser tab, a backend service, and an agent can each follow the same stream at their own pace, straight from S2. Bring your own state model and merge rules, or use a library like Yjs.

  • Workflow events and project state

    Mage’s API proxy reads project events from S2, reduces and deduplicates them into a current view, then streams new document-processing updates to the browser.

  • txt.box: collaborative documents

    AgentMail’s open-source txt.box stores Yjs updates in a stream per document. A snapshotter writes snapshots to R2 and trims the stream. Yjs handles merging document changes.

    txt.box

In your application

Bring your own records

Telemetry, messages, events, or state changes: you decide what each record means.

All use cases