Workflows-as-code
Lightweight, flexible, durable.
Combine the resiliency of workflows with the speed and flexibility of regular functions.
Restate orchestrates and manages their execution till completion, whether it’s millis or months.
Just code
Low latency
Deploy on FaaS
Workflows with Restate
Implement the run
function of your workflow, using the Restate SDK.
- TypeScript
- Java
- Kotlin
Run once, idempotently
A workflow runs exactly one time. Restate makes sure that duplicate requests do not lead to duplicate execution.
Persist progress
Store results of intermediate steps, interaction with external systems, or non-deterministic actions. Restate makes sure that on retries, the code does not get re-executed and the previous result is returned. This lets you execute the steps of your workflows durably.
Workflow state
Use Restate’s built-in key-value store to store workflow state. Restate guarantees that it is consistent and persistent, since state updates are tracked together with the rest of the execution progress.
Query workflow state
Retrieve the current state of the workflow from within other handlers and expose it to external clients.
Wait on external signals
Make Promises/Futures resilient by registering them in Restate. Share them and wait until other functions resolve them.
Signal in-flight workflows
Notify the workflow of external signals, callbacks or Kafka events. Resolve or reject shared promises on which the workflow is waiting. The workflow handles the outcome.
Flexible failure handling
Implement sagas and compensations in code, as per your requirements.
Run once, idempotently
A workflow runs exactly one time. Restate makes sure that duplicate requests do not lead to duplicate execution.
Persist progress
Store results of intermediate steps, interaction with external systems, or non-deterministic actions. Restate makes sure that on retries, the code does not get re-executed and the previous result is returned. This lets you execute the steps of your workflows durably.
Workflow state
Use Restate’s built-in key-value store to store workflow state. Restate guarantees that it is consistent and persistent, since state updates are tracked together with the rest of the execution progress.
Query workflow state
Retrieve the current state of the workflow from within other handlers and expose it to external clients.
Wait on external signals
Make Promises/Futures resilient by registering them in Restate. Share them and wait until other functions resolve them.
Signal in-flight workflows
Notify the workflow of external signals, callbacks or Kafka events. Resolve or reject shared promises on which the workflow is waiting. The workflow handles the outcome.
Flexible failure handling
Implement sagas and compensations in code, as per your requirements.
Run once, idempotently
A workflow runs exactly one time. Restate makes sure that duplicate requests do not lead to duplicate execution.
Persist progress
Store results of intermediate steps, interaction with external systems, or non-deterministic actions. Restate makes sure that on retries, the code does not get re-executed and the previous result is returned. This lets you execute the steps of your workflows durably.
Workflow state
Use Restate’s built-in key-value store to store workflow state. Restate guarantees that it is consistent and persistent, since state updates are tracked together with the rest of the execution progress.
Query workflow state
Retrieve the current state of the workflow from within other handlers and expose it to external clients.
Wait on external signals
Make Promises/Futures resilient by registering them in Restate. Share them and wait until other functions resolve them.
Signal in-flight workflows
Notify the workflow of external signals, callbacks or Kafka events. Resolve or reject shared promises on which the workflow is waiting. The workflow handles the outcome.
Flexible failure handling
Implement sagas and compensations in code, as per your requirements.
Run once, idempotently
A workflow runs exactly one time. Restate makes sure that duplicate requests do not lead to duplicate execution.
Persist progress
Store results of intermediate steps, interaction with external systems, or non-deterministic actions. Restate makes sure that on retries, the code does not get re-executed and the previous result is returned. This lets you execute the steps of your workflows durably.
Workflow state
Use Restate’s built-in key-value store to store workflow state. Restate guarantees that it is consistent and persistent, since state updates are tracked together with the rest of the execution progress.
Query workflow state
Retrieve the current state of the workflow from within other handlers and expose it to external clients.
Wait on external signals
Make Promises/Futures resilient by registering them in Restate. Share them and wait until other functions resolve them.
Signal in-flight workflows
Notify the workflow of external signals, callbacks or Kafka events. Resolve or reject shared promises on which the workflow is waiting. The workflow handles the outcome.
Flexible failure handling
Implement sagas and compensations in code, as per your requirements.
Run once, idempotently
A workflow runs exactly one time. Restate makes sure that duplicate requests do not lead to duplicate execution.
Persist progress
Store results of intermediate steps, interaction with external systems, or non-deterministic actions. Restate makes sure that on retries, the code does not get re-executed and the previous result is returned. This lets you execute the steps of your workflows durably.
Workflow state
Use Restate’s built-in key-value store to store workflow state. Restate guarantees that it is consistent and persistent, since state updates are tracked together with the rest of the execution progress.
Query workflow state
Retrieve the current state of the workflow from within other handlers and expose it to external clients.
Wait on external signals
Make Promises/Futures resilient by registering them in Restate. Share them and wait until other functions resolve them.
Signal in-flight workflows
Notify the workflow of external signals, callbacks or Kafka events. Resolve or reject shared promises on which the workflow is waiting. The workflow handles the outcome.
Flexible failure handling
Implement sagas and compensations in code, as per your requirements.
Run once, idempotently
A workflow runs exactly one time. Restate makes sure that duplicate requests do not lead to duplicate execution.
Persist progress
Store results of intermediate steps, interaction with external systems, or non-deterministic actions. Restate makes sure that on retries, the code does not get re-executed and the previous result is returned. This lets you execute the steps of your workflows durably.
Workflow state
Use Restate’s built-in key-value store to store workflow state. Restate guarantees that it is consistent and persistent, since state updates are tracked together with the rest of the execution progress.
Query workflow state
Retrieve the current state of the workflow from within other handlers and expose it to external clients.
Wait on external signals
Make Promises/Futures resilient by registering them in Restate. Share them and wait until other functions resolve them.
Signal in-flight workflows
Notify the workflow of external signals, callbacks or Kafka events. Resolve or reject shared promises on which the workflow is waiting. The workflow handles the outcome.
Flexible failure handling
Implement sagas and compensations in code, as per your requirements.
LOW-LATENCY
Restate’s event-driven foundation built in Rust lets you put workflows in the latency-sensitive path of user interaction.
DURABLE EXECUTION
Restate handles retries and recovers your code to the exact point before the crash. No more coarse per-step retries. State changes take part in durable execution, so the state never gets out of sync.
- TypeScript
- Java
- Kotlin
Latch on to a workflow
A workflow runs exactly one time. If the caller loses the connection to the workflow, he can latch on again to retrieve the result.
Latch on to a workflow
A workflow runs exactly one time. If the caller loses the connection to the workflow, he can latch on again to retrieve the result.
Latch on to a workflow
A workflow runs exactly one time. If the caller loses the connection to the workflow, he can latch on again to retrieve the result.
Latch on to a workflow
A workflow runs exactly one time. If the caller loses the connection to the workflow, he can latch on again to retrieve the result.
Latch on to a workflow
A workflow runs exactly one time. If the caller loses the connection to the workflow, he can latch on again to retrieve the result.
Latch on to a workflow
A workflow runs exactly one time. If the caller loses the connection to the workflow, he can latch on again to retrieve the result.
Workflows as regular, lightweight functions
Restate’s workflow functionality is integrated in its core.
Workflows run like any other function in your infrastructure: on K8S, FaaS, or mix-and-match.
No need to spin up extra infrastructure or dedicated workers.
What you can build with Workflows and Restate
User sign-up workflow
Create user in the system, wait until email confirmation, schedule a reminder, send welcome email, etc.
Order processing and logistics
Handle the payment, request the order preparation, wait for driver acceptance callback, etc.
Infrastructure provisioning
Go through a set of steps to provision a setup. Retry until resources are up, handle timeouts, rollbacks, etc.
Workflow interpreters
Dynamically compose workflows based on user input. For example, an image transformer that lets users specify the steps to be taken.