Skip to content

v1.7.0

Latest

Choose a tag to compare

@github-actions github-actions released this 18 Jun 19:40
576a1d5

Restate v1.7.0 πŸŽ‰

✨ Release Highlights

🚦 Flow Control

Restate begins shipping its flow-control primitives! v1.7 introduces the first building block β€” concurrency limits driven by a request scope, exposed through new /restate/ ingress endpoints and managed with the new restate rules commands. Cap how much expensive work runs at once β€” especially valuable for AI agents (each concurrent invocation can mean real model/API spend) and for protecting downstream services from bursts. More flow-control capabilities will follow.

experimental_enable_vqueues = true
# Default of 1000 concurrent invocations per scope, tighter 50-cap for "checkout"
restate rules set "*" --concurrency 1000 --description "scope default"
restate rules set "checkout" --concurrency 50

☁️ Native Google Cloud Run Authentication

HTTP deployments can now opt into native Google OIDC ID-token authentication. Restate mints short-lived, audience-scoped, Google-signed tokens for every discovery and invocation request; replacing the pattern of embedding long-lived bearer tokens in deployment headers (no rotation, no audit story).

restate dp register https://svc-abc-uc.a.run.app --gcp-id-token

🐝 Dynamic Kafka Cluster Management

Configure KafkaClusters dynamically through the Admin API and CLI instead of baking them into static restate.toml configuration. Both clusters and subscriptions are now manageable from the restate CLI.

restate kc create my-cluster bootstrap.servers=broker:9092 security.protocol=SASL_SSL
restate sub create kafka://my-cluster/orders service://Counter/count group.id=g1

🧠 Bounded Invoker Memory Pool

The invoker now runs under a bounded memory pool (default 1.5 GiB) that limits in-flight data flowing from the server to deployments. This adds backpressure and protects nodes from out-of-memory conditions under bursts of large payloads or state.
This makes the system more predictable under load, with no configuration required.

🎨 Restate UI 1.0

The bundled Restate web UI graduates from 0.x to v1.0 β€” a complete new layout, better observability features, and much more. The UI ships with every server release, so the upgrade lands automatically with no configuration.

πŸ†• More New Features

  • Service Protocol v7 β€” opt-in wire protocol with richer failure handling (pause / fail) and better suspension visibility πŸ§ͺ
  • HTTP/2 connection pool for service invocations β€” concurrency to a deployment is no longer capped by a single connection's max_concurrent_streams πŸ”—
  • Partition leadership control β€” pin or freeze partition leaders via restatectl partition leader πŸ“Œ
  • Configurable idempotency & workflow retention β€” new default-* / max-* retention knobs ⏱️
  • Manual RocksDB compaction β€” restatectl storage compact to reclaim disk space 🧹

⚠️ Important Breaking Changes

Snapshot Retention Graduated Out of Experimental

worker.snapshots.experimental-num-retained is replaced by num-retained (now non-optional, default 1). Rename the key before upgrading. latest.json is now always written in V2 format. See migration guidance β†’

Ingress Request Size Limit Enforced

The HTTP ingress now rejects request bodies larger than networking.message-size-limit (32 MiB by default) with 413 Payload Too Large before reaching the handler. Raise the cap via the new ingress.request-size-limit if needed. See migration guidance β†’

Per-Database RocksDB Background Work Budgets

rocksdb-max-background-jobs is removed from the shared rocksdb block. Background work is now controlled per-database (separate flush/compaction limits, auto-computed from CPU count and active roles). The global rocksdb-bg-threads / rocksdb-high-priority-bg-threads options were also renamed. See migration guidance β†’

Also deprecated this release: disable_eager_state (use eager-state-size-limit = "0") and the root-level service-client options (moved under worker.invoker; the root location still works but is removed in v1.8).


πŸ“– Full Release Notes β†’


Install

Pull the Docker images

docker pull docker.restate.dev/restatedev/restate:1.7.0
docker pull docker.restate.dev/restatedev/restate-cli:1.7.0

Install prebuilt binaries via Homebrew

brew install restatedev/tap/restate-server
brew install restatedev/tap/restate
brew install restatedev/tap/restatectl

Install prebuilt binaries into your npm project

npm install @restatedev/restate-server@1.7.0
npm install @restatedev/restate@1.7.0
npm install @restatedev/restatectl@1.7.0

Download binary archives

File Platform Checksum
restate-server-aarch64-apple-darwin.tar.xz Apple Silicon macOS checksum
restate-server-x86_64-apple-darwin.tar.xz Intel macOS checksum
restate-server-aarch64-unknown-linux-musl.tar.xz ARM64 MUSL Linux checksum
restate-server-x86_64-unknown-linux-musl.tar.xz x64 MUSL Linux checksum
restate-cli-aarch64-apple-darwin.tar.xz Apple Silicon macOS checksum
restate-cli-x86_64-apple-darwin.tar.xz Intel macOS checksum
restate-cli-aarch64-unknown-linux-musl.tar.xz ARM64 MUSL Linux checksum
restate-cli-x86_64-unknown-linux-musl.tar.xz x64 MUSL Linux checksum
restatectl-aarch64-apple-darwin.tar.xz Apple Silicon macOS checksum
restatectl-x86_64-apple-darwin.tar.xz Intel macOS checksum
restatectl-aarch64-unknown-linux-musl.tar.xz ARM64 MUSL Linux checksum
restatectl-x86_64-unknown-linux-musl.tar.xz x64 MUSL Linux checksum