> ## Documentation Index
> Fetch the complete documentation index at: https://s2.dev/docs/llms.txt
> Use this file to discover all available pages before exploring further.

# Updates

> Product updates for S2, the Stream Store, including APIs, integrations, infrastructure changes, and new releases.

<Update label="Jun 15, 2026" tags={["sdk"]}>
  Rust clients can use the [`s2-testcontainers`](https://crates.io/crates/s2-testcontainers) crate for easy integration testing against [s2-lite](/s2-lite).
</Update>

<Update label="Jun 1, 2026" tags={["labs"]}>
  [RePlaya](https://github.com/s2-streamstore/replaya) is a self-hosted browser session replay tool built on S2, with support for live tailing active sessions.
</Update>

<Update label="May 29, 2026" tags={["platform"]}>
  [Location](/concepts/basins#location) is now a first-class construct, with two new ones available: US West (`aws:us-west-2`) and EU North (`aws:eu-north-1`).
</Update>

<Update label="May 12, 2026" tags={["integration", "sdk"]}>
  [Anthropic](/integrations/anthropic) integration in `@s2-dev/resumable-stream` is available, build durable Claude chat sessions with it.
</Update>

<Update label="May 1, 2026" tags={["platform"]}>
  [s2.dev](https://s2.dev) is more agent-friendly now as all public pages handle `Accept: text/markdown`. You can also request Markdown at `.md` e.g. [pricing.md](https://s2.dev/pricing.md), [blog.md](https://s2.dev/blog.md).
</Update>

<Update label="Apr 30, 2026" tags={["integration", "sdk"]}>
  [TanStack AI](/integrations/tanstack-ai) integration in `@s2-dev/resumable-stream` is available, build durable chat sessions with it.
</Update>

<Update label="Apr 29, 2026" tags={["api"]}>
  S2's `v1alpha` gRPC API has retired. It has been fully superseded by the REST-first `v1` [API](/api).
</Update>

<Update label="Apr 23, 2026" tags={["security"]}>
  [Client-supplied encryption keys](/concepts/encryption).
</Update>

<Update label="Apr 22, 2026" tags={["integration", "sdk"]}>
  [Vercel AI SDK](/integrations/vercel-ai-sdk) integration in `@s2-dev/resumable-stream` is available, build durable chat sessions with it.
</Update>

<Update label="Apr 6, 2026" tags={["sdk"]}>
  New [Python SDK](https://github.com/s2-streamstore/s2-sdk-python), powered by the `v1` [API](/api).
</Update>

<Update label="Mar 31, 2026" tags={["platform"]}>
  Number of basins per account is [now unlimited](/platform/limits) for all users with a payment method. Previously this was capped at 100.
</Update>

<Update label="Mar 23, 2026" tags={["api"]}>
  The basin-level [endpoint](/api/endpoints) has been updated to `{basin}.b.s2.dev`. To preserve compatibility, `{basin}.b.aws.s2.dev` will continue to work.
</Update>

<Update label="Mar 18, 2026" tags={["labs"]}>
  [Video Conferencing with Durable Streams](https://s2.dev/blog/video-conferencing) shows live media, chat, replay, and MP4 export backed by S2 streams.
</Update>

<Update label="Mar 3, 2026" tags={["integration"]}>
  [Terraform Provider](/integrations/terraform-provider) for S2 is available on the [Terraform Registry](https://registry.terraform.io/providers/s2-streamstore/s2/latest).
</Update>

<Update label="Feb 25, 2026" tags={["milestone"]}>
  S2 cloud service is [GA](https://s2.dev/blog/ga).
</Update>

<Update label="Feb 25, 2026" tags={["cli"]}>
  `s2 apply` can declaratively create or reconfigure basins and streams from a JSON spec file. Run with `--dry-run` to preview changes before applying. Use `--schema` to get the JSON Schema for IDE validation and autocomplete. See [CLI: Apply](/cli/apply) for the full reference.

  s2-lite now accepts `--init-file` (or `S2LITE_INIT_FILE`) to apply a spec at startup. Useful for pre-seeding basins and streams in local dev and CI environments.
</Update>

<Update label="Feb 24, 2026" tags={["dashboard"]}>
  [Studio](/studio) is now available in the dashboard. A browser-based data plane explorer for reading, appending, and managing streams interactively. Also works with s2-lite for local development.
</Update>

<Update label="Feb 22, 2026" tags={["ai", "labs"]}>
  [Parallax](https://s2.dev/blog/distributed-ai-agents) explores distributed AI agent coordination with isolated S2 streams for each research cohort.
</Update>

<Update label="Jan 29, 2026" tags={["cli", "labs"]}>
  `s2` [CLI](https://github.com/s2-streamstore/s2) has an interactive TUI mode, launch with `s2 -i`.
</Update>

<Update label="Jan 21, 2026" tags={["api", "milestone"]}>
  [s2-lite](https://github.com/s2-streamstore/s2?tab=readme-ov-file#s2-lite) is available. It is an open source, self-hostable server implementation that runs against object storage. You can also run it without pointing at a bucket, as an emulator.
</Update>

<Update label="Jan 20, 2026" tags={["cli"]}>
  `s2` [CLI](https://github.com/s2-streamstore/s2) has a new `bench` command that measures throughput and latency.
</Update>

<Update label="Jan 14, 2026" tags={["sdk"]}>
  New [Rust SDK](https://github.com/s2-streamstore/s2/tree/main/sdk), powered by the `v1` [API](/api).
</Update>

<Update label="Dec 29, 2025" tags={["platform"]}>
  S2 endpoints are accessible using IPv6. This could be particularly helpful for avoiding NAT gateway costs.
</Update>

<Update label="Dec 17, 2025" tags={["security"]}>
  S2 is SOC 2 Type II compliant.
</Update>

<Update label="Nov 19, 2025" tags={["sdk", "labs"]}>
  [`@s2-dev/streamstore-patterns`](https://github.com/s2-streamstore/s2-sdk-typescript/tree/main/packages/patterns) launched as an add-on package for higher-level TypeScript patterns, including typed append/read sessions, large-message chunking, framing, and deduplication helpers.
</Update>

<Update label="Nov 5, 2025" tags={["dashboard", "security"]}>
  `PrivateLink` connection info is now available in the basins tab on the dashboard.
</Update>

<Update label="Oct 24, 2025" tags={["api", "sdk"]}>
  [`s2s`](/api/protocol#s2s-spec) is available, and supported for append and read sessions from the TypeScript SDK. Other SDKs will also be migrated away from gRPC to use the REST API and `s2s`.
</Update>

<Update label="Sep 26, 2025" tags={["api"]}>
  Long polling reads are supported using the [`?wait=<seconds>` parameter](/api/records/read#parameter-wait).
</Update>

<Update label="Sep 10, 2025" tags={["platform", "labs"]}>
  Enabled massive scalability for reads and open sourced a key piece of this, [Cachey](https://github.com/s2-streamstore/cachey).
</Update>

<Update label="Aug 29, 2025" tags={["integration"]}>
  Production-ready support for the [OpenTelemetry Protocol](/integrations/otlp) (OTLP/HTTP).
</Update>

<Update label="Aug 12, 2025" tags={["dashboard"]}>
  See [usage metrics](/concepts/metrics) visualized in the dashboard UI.
</Update>

<Update label="Aug 1, 2025" tags={["dashboard"]}>
  Read from streams directly in the dashboard UI.
</Update>

<Update label="Jul 24, 2025" tags={["api"]}>
  Stream configuration knob [`delete-on-empty`](/concepts/configs#delete-on-empty) to automatically delete a stream if it does not have any records for some period of time.
</Update>

<Update label="Jul 22, 2025" tags={["api"]}>
  Reads can [`clamp`](/api/records/read#parameter-clamp) the start position at the tail position.
</Update>

<Update label="Jul 9, 2025" tags={["dashboard"]}>
  Interactive [playground](https://s2.dev/playground).
</Update>

<Update label="Jun 24, 2025" tags={["integration", "labs"]}>
  Experimental support for the [OpenTelemetry Protocol](https://opentelemetry.io/docs/specs/otlp) (OTLP/HTTP). Let us know if you would like access.
</Update>

<Update label="Jun 6, 2025" tags={["api"]}>
  Reads can be limited [`until`](/api/records/read#parameter-until) a specific timestamp.
</Update>

<Update label="Jun 3, 2025" tags={["api", "security"]}>
  Support for listing, issuing, revoking granular [access tokens](https://s2.dev/blog/access-control).
</Update>

<Update label="May 28, 2025" tags={["api"]}>
  Added [metrics endpoints](/concepts/metrics) for usage monitoring to the REST API.
</Update>

<Update label="May 20, 2025" tags={["api"]}>
  REST API v1 is ready including [SSE](/api/records/read#sse) support. Besides JSON it also [supports Protobuf](/api/protocol#protobuf-messages) for appending and reading binary data efficiently without the Base64 tax.
</Update>

<Update label="May 8, 2025" tags={["platform"]}>
  Supercharged metadata scalability.
</Update>

<Update label="May 2, 2025" tags={["cli"]}>
  CLI got a new `tail` sub-command.
</Update>

<Update label="Apr 28, 2025" tags={["api"]}>
  Support for reading from `timestamp` or a `tail_offset`, not just sequence numbers. The implicit cap on record timestamp not exceeding arrival time can now be disabled in stream config.
</Update>

<Update label="Apr 18, 2025" tags={["dashboard"]}>
  Prefix filtering in dashboard on basin or stream names.
</Update>

<Update label="Apr 17, 2025" tags={["api"]}>
  `first_seq_num` as a `Read` / `ReadSession` response has been removed: records will be returned from the first record `>=` the requested starting point.
</Update>

<Update label="Apr 14, 2025" tags={["api"]}>
  Basins can be configured to `create_stream_on_read` automatically when the specified stream does not exist, using the default stream configuration for the basin.
</Update>

<Update label="Apr 1, 2025" tags={["dashboard"]}>
  Dashboard UI for stream management.
</Update>

<Update label="Mar 14, 2025" tags={["api"]}>
  All records now have a monotonic timestamp in milliseconds since Unix epoch. Streams can also be configured to only utilize client-specified timestamps.
</Update>

<Update label="Mar 11, 2025" tags={["api"]}>
  Basins can be configured to `create_stream_on_append` automatically when the specified stream does not exist, using the default stream configuration for the basin.
</Update>

<Update label="Mar 10, 2025" tags={["dashboard"]}>
  Dashboard UI for basin management.
</Update>

<Update label="Mar 6, 2025" tags={["api"]}>
  `ReadSession` gRPC and REST API support periodic heartbeats.
</Update>

<Update label="Feb 27, 2025" tags={["integration"]}>
  [Bytewax](https://bytewax.io/blog/s2-connector) integration is available.
</Update>

<Update label="Feb 21, 2025" tags={["api"]}>
  [REST API](/api) supports [compression](https://developer.mozilla.org/en-US/docs/Web/HTTP/Compression) using `zstd` or `gzip`, except for streaming reads with SSE.
</Update>

<Update label="Feb 5, 2025" tags={["integration"]}>
  [Bento](/integrations/bento) integration is available.
</Update>

<Update label="Feb 4, 2025" tags={["api"]}>
  gRPC API supports [compression](https://grpc.io/docs/guides/compression) using `zstd` or `gzip`.
</Update>

<Update label="Jan 30, 2025" tags={["api"]}>
  [REST API](/api) is ready, including streaming reads with [SSE](https://en.wikipedia.org/wiki/Server-sent_events).
</Update>

<Update label="Jan 14, 2025" tags={["sdk"]}>
  [Python SDK](https://github.com/s2-streamstore/s2-sdk-python-old) available.
</Update>

<Update label="Jan 13, 2025" tags={["sdk"]}>
  [Go SDK](https://github.com/s2-streamstore/s2-sdk-go) available.
</Update>

<Update label="Dec 20, 2024" tags={["milestone"]}>
  [Preview launch](https://s2.dev/blog/intro) <Icon icon="party-horn" /> with gRPC API, [Rust SDK](https://github.com/s2-streamstore/s2-sdk-rust), and [CLI](https://github.com/s2-streamstore/s2-cli).
</Update>

<Update label="Jan-Feb 2024" tags={["milestone"]}>
  Prototyped the [guts of S2](https://blog.schmizz.net/designing-serverless-stream-storage#heading-architecture).
</Update>

<Update label="Nov 2023" tags={["milestone"]}>
  S2 [hypothesized](https://blog.schmizz.net/disaggregated-wal).
</Update>
