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 compactto 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(useeager-state-size-limit = "0") and the root-level service-client options (moved underworker.invoker; the root location still works but is removed in v1.8).
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.0Install prebuilt binaries via Homebrew
brew install restatedev/tap/restate-server
brew install restatedev/tap/restate
brew install restatedev/tap/restatectlInstall 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.0Download 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 |