Coding Agent Platform
“Restate now handles all durable orchestration at Replit, giving us the flexibility to rapidly expand what our agent platform can do.”
Flexible building blocks that compose into agents, workflows, and microservices.
Low-latency durable execution, driven by a fast distributed log.
Going beyond workflows: low latency, easy to integrate, ships as a single binary.
“Restate now handles all durable orchestration at Replit, giving us the flexibility to rapidly expand what our agent platform can do.”
All business-critical backend workflows are driven by Restate, by mapping their DSL onto Restate's primitives.
Restate powers their treasury workflows with multi-regional strong consistency.
Built by the original creators of Apache Flink and engineers behind Meta’s planet-scale event infrastructure.
rst.service({ name: "DeepResearch", handlers: { run: async (restate: Context, query: string) => { // Durable step const plan = await restate.run("plan", () => llm.plan(query)); // Parallel, long-running tasks, only the failed task retries const tasks = plan.map((task) => restate.serviceClient(researcher).run(task), ); const findings = await RestatePromise.all(tasks); // Durable step return await restate.run("write", () => llm.summarize(findings)); }, },});View execution journals and cancel, kill, restart, or pause any execution.
Restate is not layered on top of a database. It is a purpose-built system, where all pieces are crafted together to provide fast durable actions, strong consistency, scalability, high-availability and resilience, resource efficiency, and a simple operational footprint.
P99 latency overhead under load per durable action
< 10 ms
Powering customers with
> 100k actions/s
Write plain code in the languages and frameworks you already use. Add durability in a few lines.
Restate is a durable execution runtime for building resilient services, workflows, and AI agents. Your business logic stays in normal application code, running on the infrastructure you choose. Restate journals its progress, coordinates calls, and keeps state consistent so the application can recover from failures without losing completed work.
Durably executing one function is only part of making an application resilient. Restate applies the same guarantees to communication and state: service calls are delivered reliably, timers and signals survive restarts, and keyed state stays consistent with the code that changes it. The same guarantees also power Restate’s queues, flow control, and operational tooling. Together, these primitives can make an entire distributed application resilient.
Restate includes durable workflows, but it is not limited to a workflow-and-activity model. Basic Services are ideal for independent durable functions, Virtual Objects model stateful entities with a single writer per key, and Workflows coordinate multi-step processes that run once per ID. These service types call one another directly, so teams can compose workflows with the rest of their backend instead of putting every problem inside a workflow.
Durable execution lets code continue through failures, restarts, and deployments. Restate records each durable step and its result in a journal. During recovery, completed steps are replayed from the journal and execution resumes at the first unfinished step, without repeating work that already succeeded.
Yes. Restate can make one agent loop durable or provide the runtime beneath an entire agent platform. It durably executes model and tool calls, keeps sessions isolated and stateful, coordinates agents, waits for approvals without holding compute, and makes live executions observable and controllable. You can keep using your preferred LLM SDK or agent framework; Restate handles the distributed-systems work around it.
Restate routes invocations through durable virtual queues. You can scope concurrency limits to a tenant, team, user, workload, or downstream dependency, and combine them hierarchically—for example, a limit for an organization with smaller limits for each team and user. Work that cannot run yet remains durably queued. The runtime applies backpressure and shares capacity fairly.
The Restate Server runs as a single binary and does not require an external database, message broker, or cache. A single node stores its log and state on persistent disk. For high availability, the same self-contained binary can be deployed multiple times to scale out to a replicated cluster, with object storage for snapshots. Your application can still use Postgres or any other database when relational queries or existing data models call for one.
The requirements we had for Restate, were different enough to make a purpose-built solution the pragmatic choice. Building a durable execution runtime for interactive workflows places specific demands on the log: extremely low write-to-read latency, topology-aware replication, flexible storage, seamless reconfiguration, and one binary that scales from a laptop to multi-region production. Those requirements could not be met by building on Kafka, Postgres, or object storage. Kafka prioritizes throughput, Postgres provides the wrong abstraction and scaling model, and object stores add too much write latency.
Restate provides SDKs for TypeScript, Python, Java, Kotlin, Go, Rust, and Ruby. Services written in different languages share the same protocol and can call one another, so teams can choose the right language for each part of a system.
Yes. Restate itself has a BSL license and is available for self-hosting for production workloads. The SDKs have an MIT license.
Your application services remain ordinary processes and can run on servers, containers, Kubernetes, or serverless platforms. Run the Restate runtime yourself as a single node or replicated cluster, use fully managed Restate Cloud, or choose Restate BYOC for a managed deployment in your own cloud account. The code and programming model stay the same across those options.
Both Restate and Temporal are highly resilient durable execution systems, running large-scale production clusters with high availability. Both let you pause work for a month and reliably resume it, even after failures or restarts. Temporal centers the application model on workflows and activities; Restate makes the wider system durable through composable services, workflows, keyed state, RPC, messaging, and queues. Restate also runs as a self-contained binary without an external database, while your services remain ordinary applications that can run on servers, containers, or serverless platforms.