Restate v1.8.0 ๐
โจ Release Highlights
๐ฆ VQueues On by Default
Virtual Queues, the new invocation scheduler powering Restate's flow control features, are now on for every cluster, no opt-in required. Scopes, limit keys and scoped Virtual Object targets work out of the box.
โ ๏ธ Read before upgrading: all nodes must run v1.7.3 or newer first, and each partition runs a one-time migration during which it is unavailable. See Upgrade & Rollback Guidance โ
๐ค A CLI Built for Scripts, CI and AI Agents
The restate CLI was revamped to be first-class for automation while staying friendly for humans:
- A global
--jsonflag prints one parseable JSON document; failures come as structured error objects with distinct exit codes. - State-changing commands share a
--dry-run/--yespreview-then-apply flow. - New commands:
invocations journal(inspect and decode journals),sql describe(table schemas),search(free-text command discovery, e.g.restate search pause a stuck invocation) andopenapi(dump the Admin API contract).
restate invocations list --status backing-off --json | jq '.items[].id'
restate invocations cancel --service Checkout --dry-run๐ก Service Protocol v7 by Default
Service protocol v7, opt-in since v1.7, is now negotiated by default: direct failure handling (pause or fail without retrying), lighter ctx.run() acknowledgements, structured suspension events, and end-to-end propagation of scope, limit key and idempotency key.
โ๏ธ Google Cloud Storage for Cluster Metadata
The object-store metadata backend now accepts gs:// paths in addition to s3://, with credentials from service account keys, Application Default Credentials, or GKE Workload Identity. Thanks to @ismymiddlename for the original contribution (#5335)!
[metadata-client]
type = "object-store"
path = "gs://<bucket>/<prefix>"๐ More New Features
- Compact schema metadata encoding โ opt-in experimental encoding that shrinks the metadata store footprint, letting you register more deployments ๐งช
- OpenAPI improvements โ the Admin API document now works with standard client generators, and per-service OpenAPI covers all
/restate/endpoints ๐ - Storage tuning options โ fixed-rate RocksDB write limiter mode, more selective partition-store filters, and a configurable VQueue metadata cache ๐งฐ
- Paced invocation cleanup โ purging completed invocations no longer spikes tail latencies of other requests โฑ๏ธ
โ ๏ธ Important Breaking Changes
Service Protocol v3 and Older No Longer Supported
Invocations against deployments using service protocol v3 or older fail immediately with RT0020 instead of retrying, completing the deprecation started in v1.4.0. Check for pinned invocations before upgrading. See migration guidance โ
Invoker Concurrency Limit Is Now Per Node
worker.invoker.concurrent-invocations-limit now caps the whole node instead of each partition processor, and its default rose from 1000 to 24000. A value tuned per partition is likely too low now. See migration guidance โ
Ingress Drops Client-Supplied x-restate-* Headers
The x-restate-* header namespace is reserved for the ingress; client-supplied headers with this prefix are dropped before reaching your service, so ingress metadata can no longer be spoofed. Rename any custom metadata headers to a different prefix. See details โ
Also in this release: the
restateCLI's human-readable output was redesigned (scripts should use--json);sys_keyed_service_statusis replaced bysys_locks; the deprecated/cluster-healthAdmin endpoint now returns404; the inactive runtime trace exporter was removed; and the SQL interface no longer acceptsSETor transaction statements. See all breaking changes โ
Install
Pull the Docker images
docker pull docker.restate.dev/restatedev/restate:1.8.0
docker pull docker.restate.dev/restatedev/restate-cli:1.8.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.8.0
npm install @restatedev/restate@1.8.0
npm install @restatedev/restatectl@1.8.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 |