# S2 Blog

> Engineering notes and product updates on durable streams, serverless data infrastructure, and building with S2.


## Posts

- [Your data, your keys](/blog/encryption)
  2026-04-25 | announce, tutorial
  S2 now supports client-supplied encryption keys for durable streams, giving teams control over key material without changing record APIs.

- [Video Conferencing with Durable Streams](/blog/video-conferencing)
  2026-03-18 | use-case
  Build a video conferencing demo on S2 streams with live media reads, replay, retention controls, and durable frame history.

- [General availability & our seed round](/blog/ga)
  2026-02-25 | announce
  S2 is generally available, backed by a $3.85M seed round led by Accel, and ready for production durable stream workloads.

- [Coordinating adversarial AI agents](/blog/distributed-ai-agents)
  2026-02-22 | ai, use-case, distsys
  Use durable streams to coordinate adversarial AI agents, isolate context, replay reasoning, and scale parallel moderation or forecasting.

- [Drawing the rest of the owl](/blog/patterns)
  2025-11-21 | use-case, tutorial, typescript
  Practical S2 patterns for typed records, large messages, duplicate-safe retries, and application-level stream processing in TypeScript.

- [Behind y-s2: serverless multiplayer rooms](/blog/durable-yjs-rooms)
  2025-09-02 | distsys, typescript, eng, use-case
  How y-s2 uses S2 streams, checkpoints, and leases to make serverless Yjs multiplayer rooms durable and easier to debug.

- [Linearizability testing S2 with deterministic simulation](/blog/linearizability)
  2025-08-25 | testing, distsys, rust, eng
  How S2 validates strong consistency with Porcupine linearizability checking and deterministic simulation testing.

- [Stream per agent session](/blog/agent-sessions)
  2025-07-01 | ai, distsys, use-case
  Why AI agent sessions need their own durable streams for memory, auditability, isolation, branching, and reliable resume.

- [Postgres CDC made simple](/blog/sequin)
  2025-06-24 | announce, tutorial, use-case
  A tutorial for streaming Postgres change data capture into S2 with Sequin for low-latency, durable CDC pipelines.

- [Multi-player, serverless, durable terminals](/blog/s2-term)
  2025-06-10 | use-case, tutorial, rust, typescript
  How S2 can power multiplayer, replayable terminal sessions with durable stream I/O and no SSH server to configure.

- [Streams as web resources with access controls](/blog/access-control)
  2025-06-03 | announce, tutorial, use-case
  Learn how S2 access tokens scope stream operations by resource, prefix, and expiration for browser, app, and agent clients.

- [Keeping time on a stream](/blog/timestamping)
  2025-05-14 | announce, distsys, eng
  How S2 indexes stream records by timestamp so readers can seek by time, replay event history, and handle real-world event time.

- [Deterministic simulation testing for async Rust](/blog/dst)
  2025-04-02 | testing, distsys, rust, eng
  How S2 uses deterministic simulation testing for async Rust to find distributed-systems bugs before they reach production.

- [Blazing-fast IoT data pipeline for infrared monitoring](/blog/iot)
  2025-01-31 | use-case, iot, tutorial, typescript
  Build a low-latency IoT pipeline with a Raspberry Pi thermal sensor, S2 streams, and TypeScript for real-time monitoring.

- [One weird trick to durably replicate your KV store](/blog/kv-store)
  2025-01-10 | use-case, distsys, tutorial, rust
  A deep dive on using S2 as a shared log to replicate a strongly consistent KV store with append, read, and check-tail operations.

- [Introducing S2](/blog/intro)
  2024-12-20 | announce, distsys
  Introducing S2, a serverless stream store that makes durable real-time streams feel as simple and scalable as object storage.
