Skip to main content

Local Dev

Running Restate Server & CLI locally

Install the Restate Server and CLI by downloading the binaries with curl from the releases page, and make them executable:

MacOS-x64
MacOS-arm64
Linux-x64
Linux-arm64

BIN=/usr/local/bin && RESTATE_PLATFORM=x86_64-apple-darwin && \
curl -LO https://github.com/restatedev/restate/releases/latest/download/restate.$RESTATE_PLATFORM.tar.gz && \
tar -xvf restate.$RESTATE_PLATFORM.tar.gz && \
chmod +x restate restate-server && \
# Move the binaries to a directory in your PATH, for example /usr/local/bin (needs sudo):
sudo mv restate $BIN && \
sudo mv restate-server $BIN

Then run the Restate Server with:


restate-server

Server and CLI configuration

Have a look at the CLI configuration docs or Server configuration docs for more configuration options.

Wiping Restate

To start the Restate Server from a clean slate, stop the server and then delete the data directory:


rm -rf <BASE_DIR>/<NODE_NAME>

Useful dev CLI commands

Check if the CLI is installed correctly and can find the server:


restate whoami

Check if the CLI is installed correctly and can find the server:


restate whoami

Register a new service deployment.
When running Restate in a Docker, replace localhost with host.docker.internal.


restate deployments register localhost:9080

Register a new service deployment.
When running Restate in a Docker, replace localhost with host.docker.internal.


restate deployments register localhost:9080

Cancel a single invocation or a batch of invocations. Use --kill to kill the invocation. To remove all invocations, stop the server then do rm -rf <BASE_DIR>/<NODE_NAME>, which will effectively delete all state/data of the Restate server.


restate invocation cancel <INVOCATION_ID>
# also works with <SERVICE>/<SERVICE_KEY>/<HANDLER> or a subset of it

Cancel a single invocation or a batch of invocations. Use --kill to kill the invocation. To remove all invocations, stop the server then do rm -rf <BASE_DIR>/<NODE_NAME>, which will effectively delete all state/data of the Restate server.


restate invocation cancel <INVOCATION_ID>
# also works with <SERVICE>/<SERVICE_KEY>/<HANDLER> or a subset of it

Purge completed invocations from the state:


restate invocation purge <INVOCATION_ID>
# also works with <SERVICE>/<SERVICE_KEY>/<HANDLER> or a subset of it

Purge completed invocations from the state:


restate invocation purge <INVOCATION_ID>
# also works with <SERVICE>/<SERVICE_KEY>/<HANDLER> or a subset of it

Clear the K/V state of a Virtual Object or Workflows. To clear all state, stop the server then do rm -rf <BASE_DIR>/<NODE_NAME>, which will effectively delete all state/data of the Restate server.


restate kv clear <OBJECT_OR_WORKFLOW_NAME>
restate kv clear <OBJECT_OR_WORKFLOW_NAME>/<SERVICE_KEY>

Clear the K/V state of a Virtual Object or Workflows. To clear all state, stop the server then do rm -rf <BASE_DIR>/<NODE_NAME>, which will effectively delete all state/data of the Restate server.


restate kv clear <OBJECT_OR_WORKFLOW_NAME>
restate kv clear <OBJECT_OR_WORKFLOW_NAME>/<SERVICE_KEY>

Execute a SQL query on the invocation or application state. See SQL introspection docs for example queries. Use --json to get the output in json format.


restate sql "query"

Execute a SQL query on the invocation or application state. See SQL introspection docs for example queries. Use --json to get the output in json format.


restate sql "query"

Debugging and troubleshooting with the CLI

Have a look at the introspection page for a list of useful commands.