Type object
File match **/restate.toml **/restate-server.toml
Schema URL https://catalog.lintel.tools/schemas/schemastore/restate/latest.json
Source https://docs.restate.dev/schemas/restate-server-configuration-schema.json

Validate with Lintel

npx @lintel/lintel check
Type: object

Configuration for Restate server.

Properties

tracing-filter string required

Distributed tracing exporter filter. Check the RUST_LOG documentation for more details how to configure it.

additional-request-headers SerdeableHeaderHashMap | null

Headers that should be applied to all outgoing requests (HTTP and Lambda). Defaults to x-restate-cluster-name: <cluster name>.

admin object
14 nested properties
advertised-address AdvertisedAddress-admin-api-server | null

Address that other nodes will use to connect to this service.

The full prefix that will be used to advertise this service publicly. For example, if this is set to <https://my-host> then others will use this as base URL to connect to this service.

If unset, the advertised address will be inferred from public address of this node or it'll use the value supplied in advertised-host if set.

advertised-admin-endpoint AdvertisedAddress-admin-api-server | null

Optional advertised Admin API endpoint. [Deprecated] Use advertised-address instead.

advertised-host string | null

Hostname to advertise for this service

bind-address BindAddress-admin-api-server | null

The combination of bind-ip and bind-port that will be used to bind

This has precedence over bind-ip and bind-port

bind-ip string | null

Local interface IP address to listen on

format=ip
bind-port integer | null

Network port to listen on

format=uint16min=0max=65535
concurrent-api-requests-limit integer | null

Concurrency limit for the Admin APIs. Default is unlimited.

Default: null
format=uintmin=1
deployment-routing-headers string[]

List of header names considered routing headers.

These will be used during deployment creation to distinguish between an already existing deployment and a new deployment.

disable-cluster-controller boolean
Default: false
disable-web-ui boolean

Disable serving the Restate Web UI on the admin port. Default is false.

Default: false
heartbeat-interval string

Non-zero duration string in either jiff human friendly or ISO8601 format. Check https://docs.rs/jiff/latest/jiff/struct.Span.html#parsing-and-printing for more details.

Examples: "10 hours", "5 days", "5d", "1h 4m", "P40D"
minLength=1
listen-mode ListenMode | null

Listen on unix-sockets, TCP sockets, or both.

The default is to listen on both.

query-engine object
3 nested properties
memory-size string

Non-zero human-readable bytes

minLength=1pattern=^\d+(\.\d+)? ?[KMG]B$
query-parallelism integer | null

The degree of parallelism to use for query execution (Defaults to the number of available cores).

Default: null
format=uintmin=1
tmp-dir string | null

The path to spill to

Default: null
use-random-ports boolean | null

Use random ports instead of the default port

advertised-address AdvertisedAddress-tokio-console-server | null

Address that other nodes will use to connect to this service.

The full prefix that will be used to advertise this service publicly. For example, if this is set to <https://my-host> then others will use this as base URL to connect to this service.

If unset, the advertised address will be inferred from public address of this node or it'll use the value supplied in advertised-host if set.

advertised-host string | null

Hostname to advertise for this service

auto-provision boolean

If true, then this node is allowed to automatically provision as a new cluster. This node must have an admin role and a new nodes configuration will be created that includes this node.

auto-provision is allowed by default in development mode and is disabled if restate-server runs with --production flag to prevent cluster nodes from forming their own clusters, rather than forming a single cluster.

Use restatectl to provision the cluster/node if automatic provisioning is disabled.

This can also be explicitly disabled by setting this value to false.

Default: true

Default: true
aws-assume-role-external-id string | null

An external ID to apply to any AssumeRole operations taken by this client. https://docs.aws.amazon.com/IAM/latest/UserGuide/id_roles_create_for-user_externalid.html Can be overridden by the AWS_EXTERNAL_ID environment variable.

Default: null
aws-profile string | null

Name of the AWS profile to select. Defaults to 'AWS_PROFILE' env var, or otherwise the default profile.

Default: null
base-dir string | null

The working directory which this Restate node should use for relative paths. The default is restate-data under the current working directory.

Default: null
bifrost object
10 nested properties
append-retry-max-interval string

Non-zero duration string in either jiff human friendly or ISO8601 format. Check https://docs.rs/jiff/latest/jiff/struct.Span.html#parsing-and-printing for more details.

Examples: "10 hours", "5 days", "5d", "1h 4m", "P40D"
minLength=1
append-retry-min-interval string

Non-zero duration string in either jiff human friendly or ISO8601 format. Check https://docs.rs/jiff/latest/jiff/struct.Span.html#parsing-and-printing for more details.

Examples: "10 hours", "5 days", "5d", "1h 4m", "P40D"
minLength=1
auto-recovery-interval string

Non-zero duration string in either jiff human friendly or ISO8601 format. Check https://docs.rs/jiff/latest/jiff/struct.Span.html#parsing-and-printing for more details.

Examples: "10 hours", "5 days", "5d", "1h 4m", "P40D"
minLength=1
default-provider string | string

An enum with the list of supported loglet providers.

disable-auto-improvement string

When enabled, automatic improvement periodically checks with the loglet provider if the loglet configuration can be improved by performing a reconfiguration.

This allows the log to pick up replication property changes, apply better placement of replicas, or for other reasons.

Default: false
local string

Configuration of local loglet provider

Default:
{
  "rocksdb-disable-wal": false,
  "rocksdb-disable-wal-fsync": false,
  "rocksdb-log-keep-file-num": null,
  "rocksdb-log-level": null,
  "rocksdb-log-max-file-size": null,
  "rocksdb-memory-ratio": 0.5,
  "writer-batch-commit-count": 5000,
  "writer-batch-commit-duration": "0s"
}
read-retry-policy object | object | object

Definition of a retry policy

record-cache-memory-size string

Human-readable bytes

minLength=1pattern=^\d+(\.\d+)? ?[KMG]B$
replicated-loglet object
8 nested properties
log-server-retry-policy object | object | object

Definition of a retry policy

log-server-rpc-timeout string

Non-zero duration string in either jiff human friendly or ISO8601 format. Check https://docs.rs/jiff/latest/jiff/struct.Span.html#parsing-and-printing for more details.

Examples: "10 hours", "5 days", "5d", "1h 4m", "P40D"
minLength=1
maximum-inflight-records integer

Maximum number of inflight records sequencer can accept

Once this maximum is hit, sequencer will induce back pressure on clients. This controls the total number of records regardless of how many batches.

Note that this will be increased to fit the biggest batch of records being enqueued.

Default: 1000
format=uintmin=1
read-batch-size string

Non-zero human-readable bytes

minLength=1pattern=^\d+(\.\d+)? ?[KMG]B$
readahead-records integer

Maximum number of records to prefetch from log servers

The number of records bifrost will attempt to prefetch from replicated loglet's log-servers for every loglet reader (e.g. partition processor). Note that this mainly impacts readers that are not co-located with the loglet sequencer (i.e. partition processor followers).

Default: 20
format=uint16min=1max=65535
readahead-trigger-ratio number

Trigger to prefetch more records

When read-ahead is used (readahead-records), this value (percentage in float) will determine when readers should trigger a prefetch for another batch to fill up the buffer. For instance, if this value is 0.3, then bifrost will trigger a prefetch when 30% or more of the read-ahead slots become available (e.g. partition processor consumed records and freed up enough slots).

The higher the value is, the longer bifrost will wait before it triggers the next fetch, potentially fetching more records as a result.

To illustrate, if readahead-records is set to 100 and readahead-trigger-ratio is 1.0. Then bifrost will prefetch up to 100 records from log-servers and will not trigger the next prefetch unless the consumer consumes 100% of this buffer. This means that bifrost will read in batches but will not do while the consumer is still reading the previous batch.

Value must be between 0 and 1. It will be clamped at 1.0.

Default: 0.5
format=float
sequencer-inactivity-timeout string

Non-zero duration string in either jiff human friendly or ISO8601 format. Check https://docs.rs/jiff/latest/jiff/struct.Span.html#parsing-and-printing for more details.

Examples: "10 hours", "5 days", "5d", "1h 4m", "P40D"
minLength=1
sequencer-retry-policy object | object | object

Definition of a retry policy

seal-retry-interval string

Non-zero duration string in either jiff human friendly or ISO8601 format. Check https://docs.rs/jiff/latest/jiff/struct.Span.html#parsing-and-printing for more details.

Examples: "10 hours", "5 days", "5d", "1h 4m", "P40D"
minLength=1
bind-address BindAddress-tokio-console-server | null

The combination of bind-ip and bind-port that will be used to bind

This has precedence over bind-ip and bind-port

bind-ip string | null

Local interface IP address to listen on

format=ip
bind-port integer | null

Network port to listen on

format=uint16min=0max=65535
cluster-name string

A unique identifier for the cluster. All nodes in the same cluster should have the same.

Default: "localcluster"
connect-timeout string

Non-zero duration string in either jiff human friendly or ISO8601 format. Check https://docs.rs/jiff/latest/jiff/struct.Span.html#parsing-and-printing for more details.

Examples: "10 hours", "5 days", "5d", "1h 4m", "P40D"
minLength=1
default-journal-retention string

Duration string in either jiff human friendly or ISO8601 format. Check https://docs.rs/jiff/latest/jiff/struct.Span.html#parsing-and-printing for more details.

Examples: "10 hours", "5 days", "5d", "1h 4m", "P40D", "0"
minLength=1
default-num-partitions integer

Number of partitions that will be provisioned during initial cluster provisioning. partitions are the logical shards used to process messages.

Cannot be higher than 65535 (You should almost never need as many partitions anyway)

NOTE 1: This config entry only impacts the initial number of partitions, the value of this entry is ignored for provisioned nodes/clusters.

NOTE 2: This will be renamed to default-num-partitions by default as of v1.3+

Default: 24

Default: 24
format=uint16min=0max=65535
default-replication string

Configures the global default replication factor to be used by the the system.

Note that this value only impacts the cluster initial provisioning and will not be respected after the cluster has been provisioned.

To update existing clusters use the restatectl utility.

Default: 1
default-retry-policy object
5 nested properties
exponentiation-factor number

The factor to use to compute the next retry attempt. Default: 2.0.

Default: 2.0
format=float
initial-interval string

Non-zero duration string in either jiff human friendly or ISO8601 format. Check https://docs.rs/jiff/latest/jiff/struct.Span.html#parsing-and-printing for more details.

Examples: "10 hours", "5 days", "5d", "1h 4m", "P40D"
minLength=1
max-attempts string | integer
max-interval string

Non-zero duration string in either jiff human friendly or ISO8601 format. Check https://docs.rs/jiff/latest/jiff/struct.Span.html#parsing-and-printing for more details.

Examples: "10 hours", "5 days", "5d", "1h 4m", "P40D"
minLength=1
on-max-attempts string | string
default-thread-pool-size integer | null

Size of the default thread pool used to perform internal tasks. If not set, it defaults to the number of CPU cores.

Default: null
format=uintmin=0
disable-prometheus boolean

Disable prometheus metric recording and reporting. Default is false.

Default: false
disable-telemetry boolean

Restate uses Scarf to collect anonymous usage data to help us understand how the software is being used. You can set this flag to true to disable this collection. It can also be set with the environment variable DO_NOT_TRACK=1.

Default: false
experimental-kafka-batch-ingestion boolean

Use the new experimental kafka ingestion path which leverages batching for a faster kafka ingestion.

Set to true to enable the experimental ingestion mechanism.

The legacy path will be removed in v1.7.

Defaults to false in v1.6.

Default: false
experimental-shuffler-batch-ingestion boolean

Use the new experimental batch ingestion path.

Set to true to enable the experimental ingestion mechanism.

The legacy path will be removed in v1.7.

Defaults to false in v1.6.

Default: false
force-node-id integer | null

If set, the node insists on acquiring this node ID.

Default: null
format=uint32min=0
gossip-extras-exchange-frequency integer

In addition to basic health/liveness information, the gossip protocol is used to exchange extra information about the roles hosted by this node. For instance, which partitions are currently running, their configuration versions, and the durable LSN of the corresponding partition databases. This information is sent every Nth gossip message. This setting controls the frequency of this exchange. For instance, 10 means that every 10th gossip message will contain the extra information about.

Default: 10
format=uint32min=1
gossip-failure-threshold integer

Specifies how many gossip intervals of inactivity need to pass before considering a node as dead.

Default: 10
format=uint32min=1
gossip-fd-stability-threshold integer
Default: 3
format=uint32min=1
gossip-loneliness-threshold integer

How many intervals need to pass without receiving any gossip messages before considering this node as potentially isolated/dead. This threshold is used in the case where the node can still send gossip messages but did not receive any. This can rarely happen in asymmetric network partitions.

In this case, the node will advertise itself as dead in the gossip messages it sends out.

Note: this threshold does not apply to a cluster that's configured with a single node.

Default: 30
format=uint32min=1
gossip-num-peers integer

On every gossip interval, how many peers each node attempts to gossip with. The default is optimized for small clusters (less than 5 nodes). On larger clusters, if gossip overhead is noticeable, consider reducing this value to 1.

Default: 2
format=uint32min=1
gossip-suspect-interval string

Duration string in either jiff human friendly or ISO8601 format. Check https://docs.rs/jiff/latest/jiff/struct.Span.html#parsing-and-printing for more details.

Examples: "10 hours", "5 days", "5d", "1h 4m", "P40D", "0"
minLength=1
gossip-tick-interval string

Non-zero duration string in either jiff human friendly or ISO8601 format. Check https://docs.rs/jiff/latest/jiff/struct.Span.html#parsing-and-printing for more details.

Examples: "10 hours", "5 days", "5d", "1h 4m", "P40D"
minLength=1
gossip-time-skew-threshold string

Non-zero duration string in either jiff human friendly or ISO8601 format. Check https://docs.rs/jiff/latest/jiff/struct.Span.html#parsing-and-printing for more details.

Examples: "10 hours", "5 days", "5d", "1h 4m", "P40D"
minLength=1
hlc-max-drift string

Duration string in either jiff human friendly or ISO8601 format. Check https://docs.rs/jiff/latest/jiff/struct.Span.html#parsing-and-printing for more details.

Examples: "10 hours", "5 days", "5d", "1h 4m", "P40D", "0"
minLength=1
http-keep-alive-options object

Configuration for the HTTP/2 keep-alive mechanism, using PING frames.

Please note: most gateways don't propagate the HTTP/2 keep-alive between downstream and upstream hosts. In those environments, you need to make sure the gateway can detect a broken connection to the upstream deployment(s).

2 nested properties
interval string

Non-zero duration string in either jiff human friendly or ISO8601 format. Check https://docs.rs/jiff/latest/jiff/struct.Span.html#parsing-and-printing for more details.

Examples: "10 hours", "5 days", "5d", "1h 4m", "P40D"
minLength=1
timeout string

Non-zero duration string in either jiff human friendly or ISO8601 format. Check https://docs.rs/jiff/latest/jiff/struct.Span.html#parsing-and-printing for more details.

Examples: "10 hours", "5 days", "5d", "1h 4m", "P40D"
minLength=1
http-proxy string | null

A URI, such as <http://127.0.0.1:10001>, of a server to which all invocations should be sent, with the Host header set to the deployment URI. HTTPS proxy URIs are supported, but only HTTP endpoint traffic will be proxied currently. Can be overridden by the HTTP_PROXY environment variable.

Default: null
ingress object
11 nested properties
advertised-address AdvertisedAddress-http-ingress-server | null

Address that other nodes will use to connect to this service.

The full prefix that will be used to advertise this service publicly. For example, if this is set to <https://my-host> then others will use this as base URL to connect to this service.

If unset, the advertised address will be inferred from public address of this node or it'll use the value supplied in advertised-host if set.

advertised-host string | null

Hostname to advertise for this service

advertised-ingress-endpoint AdvertisedAddress-http-ingress-server | null

[Deprecated] Use advertised-address instead. Ingress endpoint that the Web UI should use to interact with.

bind-address BindAddress-http-ingress-server | null

The combination of bind-ip and bind-port that will be used to bind

This has precedence over bind-ip and bind-port

bind-ip string | null

Local interface IP address to listen on

format=ip
bind-port integer | null

Network port to listen on

format=uint16min=0max=65535
concurrent-api-requests-limit integer | null

Local concurrency limit to use to limit the amount of concurrent requests. If exceeded, the ingress will reply immediately with an appropriate status code. Default is unlimited.

Default: null
format=uintmin=1
ingestion object

Options for ingestion client

3 nested properties
connection-retry-policy object | object | object required

Definition of a retry policy

inflight-memory-budget string required

Non-zero human-readable bytes

minLength=1pattern=^\d+(\.\d+)? ?[KMG]B$
request-batch-size string required

Non-zero human-readable bytes

minLength=1pattern=^\d+(\.\d+)? ?[KMG]B$
kafka-clusters KafkaClusterOptions[]
Default:
[]
listen-mode ListenMode | null

Listen on unix-sockets, TCP sockets, or both.

The default is to listen on both.

use-random-ports boolean | null

Use random ports instead of the default port

initial-max-send-streams integer | null

Sets the initial maximum of locally initiated (send) streams.

This value will be overwritten by the value included in the initial SETTINGS frame received from the peer as part of a [connection preface].

Default: None

NOTE: Setting this value to None (default) users the default recommended value from HTTP2 specs

Default: null
format=uintmin=0
initialization-timeout string

Non-zero duration string in either jiff human friendly or ISO8601 format. Check https://docs.rs/jiff/latest/jiff/struct.Span.html#parsing-and-printing for more details.

Examples: "10 hours", "5 days", "5d", "1h 4m", "P40D"
minLength=1
listen-mode ListenMode | null

Listen on unix-sockets, TCP sockets, or both.

The default is to listen on both.

location string

Setting the location allows Restate to form a tree-like cluster topology. The value is written in the format of "region[.zone]" to assign this node to a specific region, or to a zone within a region.

The value of region and zone is arbitrary but whitespace and . are disallowed.

NOTE: It's strongly recommended to not change the node's location string after its initial registration. Changing the location may result in data loss or data inconsistency if log-server is enabled on this node.

When this value is not set, the node is considered to be in the default location. The default location means that the node is not assigned to any specific region or zone.

Examples

  • us-west -- the node is in the us-west region.
  • us-west.a1 -- the node is in the us-west region and in the a1 zone.
  • `` -- [default] the node is in the default location
log-disable-ansi-codes boolean

Disable ANSI terminal codes for logs. This is useful when the log collector doesn't support processing ANSI terminal codes.

Default: false
log-filter string

Log filter configuration. Can be overridden by the RUST_LOG environment variable. Check the RUST_LOG documentation for more details how to configure it.

Default: "warn,restate=info"
log-format string | string | string
log-server object

Configuration is only used on nodes running with log-server role.

18 nested properties
incoming-network-queue-length integer

The number of messages that can queue up on input network stream while request processor is busy.

Default: 1000
format=uintmin=1
rocksdb-block-size NonZeroHumanBytes | null

Uncompressed block size

Default: 64KiB

rocksdb-compaction-readahead-size NonZeroHumanBytes | null

If non-zero, we perform bigger reads when doing compaction. If you're running RocksDB on spinning disks, you should set this to at least 2MB. That way RocksDB's compaction is doing sequential instead of random reads.

rocksdb-disable-direct-io-for-flush-and-compactions boolean | null

Use O_DIRECT for writes in background flush and compactions.

rocksdb-disable-direct-io-for-reads boolean | null

Files will be opened in "direct I/O" mode which means that data r/w from the disk will not be cached or buffered. The hardware buffer of the devices may however still be used. Memory mapped files are not impacted by these parameters.

rocksdb-disable-statistics boolean | null

Disable rocksdb statistics collection

Default: False (statistics enabled)

rocksdb-disable-wal boolean | null

The default depends on the different rocksdb use-cases at Restate.

Supports hot-reloading (Partial / Bifrost only)

rocksdb-disable-wal-fsync boolean

Disable fsync of WAL on every batch

Default: false
rocksdb-log-keep-file-num integer | null

Number of info LOG files to keep

Default: 1

Default: null
format=uintmin=0
rocksdb-log-level RocksDbLogLevel | null

Verbosity of the LOG.

Default: "error"

Default: null
rocksdb-log-max-file-size NonZeroHumanBytes | null

Max size of info LOG file

Default: 64MB

Default: null
rocksdb-max-background-jobs integer | null

Default: the number of CPU cores on this node.

format=uint32min=1
rocksdb-max-sub-compactions integer

The maximum number of subcompactions to run in parallel.

Setting this to 1 means no sub-compactions are allowed (i.e. only 1 thread will do the compaction).

Default is 0 which maps to floor(number of CPU cores / 2)

Default: 0
format=uint32min=0
rocksdb-max-wal-size string

Human-readable bytes

minLength=1pattern=^\d+(\.\d+)? ?[KMG]B$
rocksdb-memory-budget NonZeroHumanBytes | null

The memory budget for rocksdb memtables in bytes

If this value is set, it overrides the ratio defined in rocksdb-memory-ratio.

rocksdb-memory-ratio number

The memory budget for rocksdb memtables as ratio

This defines the total memory for rocksdb as a ratio of all memory available to the log-server.

(See rocksdb-total-memtables-ratio in common).

Default: 0.5
format=float
rocksdb-statistics-level RocksbStatistics | null

StatsLevel can be used to reduce statistics overhead by skipping certain types of stats in the stats collection process.

Default: "except-detailed-timers"

writer-batch-commit-count integer

Trigger a commit when the batch size exceeds this threshold.

Set to 0 or 1 to commit the write batch on every command.

Default: 5000
format=uintmin=0
max-journal-retention FriendlyDuration | null

Maximum journal retention duration that can be configured. When discovering a service deployment, or when modifying the journal retention using the Admin API, the given value will be clamped.

Unset means no limit.

max-retry-policy-max-attempts integer | null

Maximum max attempts configurable in an invocation retry policy. When discovering a service deployment with configured retry policies, or when modifying the invocation retry policy using the Admin API, the given value will be clamped.

None means no limit, that is infinite retries is enabled.

format=uintmin=1
metadata-client object

The metadata client type to store metadata

One of: object object, object object, object object
5 nested properties
backoff-policy object | object | object

Definition of a retry policy

connect-timeout string

Non-zero duration string in either jiff human friendly or ISO8601 format. Check https://docs.rs/jiff/latest/jiff/struct.Span.html#parsing-and-printing for more details.

Examples: "10 hours", "5 days", "5d", "1h 4m", "P40D"
minLength=1
keep-alive-interval string

Non-zero duration string in either jiff human friendly or ISO8601 format. Check https://docs.rs/jiff/latest/jiff/struct.Span.html#parsing-and-printing for more details.

Examples: "10 hours", "5 days", "5d", "1h 4m", "P40D"
minLength=1
keep-alive-timeout string

Non-zero duration string in either jiff human friendly or ISO8601 format. Check https://docs.rs/jiff/latest/jiff/struct.Span.html#parsing-and-printing for more details.

Examples: "10 hours", "5 days", "5d", "1h 4m", "P40D"
minLength=1
message-size-limit NonZeroHumanBytes | null

Maximum size of network messages that metadata client can receive from a metadata server.

If unset, defaults to networking.message-size-limit. If set, it will be clamped at the value of networking.message-size-limit since larger messages cannot be transmitted over the cluster internal network.

metadata-fetch-from-peer-timeout string

Non-zero duration string in either jiff human friendly or ISO8601 format. Check https://docs.rs/jiff/latest/jiff/struct.Span.html#parsing-and-printing for more details.

Examples: "10 hours", "5 days", "5d", "1h 4m", "P40D"
minLength=1
metadata-server object
20 nested properties
auto-join boolean

Auto join the metadata cluster when being started

Defines whether this node should auto join the metadata store cluster when being started for the first time.

Default: true
log-trim-threshold integer | null

The threshold for trimming the raft log. The log will be trimmed if the number of apply entries exceeds this threshold. The default value is 1000.

Default: 1000
format=uint64min=0
raft-election-tick integer

The number of ticks before triggering an election

The number of ticks before triggering an election. The value must be larger than raft_heartbeat_tick. It's recommended to set raft_election_tick = 10 * raft_heartbeat_tick. Decrease this value if you want to react faster to failed leaders. Note, decreasing this value too much can lead to cluster instabilities due to falsely detecting dead leaders.

Default: 10
format=uintmin=1
raft-heartbeat-tick integer

The number of ticks before sending a heartbeat

A leader sends heartbeat messages to maintain its leadership every heartbeat ticks. Decrease this value to send heartbeats more often.

Default: 2
format=uintmin=1
raft-tick-interval string

Non-zero duration string in either jiff human friendly or ISO8601 format. Check https://docs.rs/jiff/latest/jiff/struct.Span.html#parsing-and-printing for more details.

Examples: "10 hours", "5 days", "5d", "1h 4m", "P40D"
minLength=1
request-queue-length integer

Limit number of in-flight requests

Number of in-flight metadata store requests.

Default: 32
format=uintmin=1
rocksdb-block-size NonZeroHumanBytes | null

Uncompressed block size

Default: 64KiB

rocksdb-compaction-readahead-size NonZeroHumanBytes | null

If non-zero, we perform bigger reads when doing compaction. If you're running RocksDB on spinning disks, you should set this to at least 2MB. That way RocksDB's compaction is doing sequential instead of random reads.

rocksdb-disable-direct-io-for-flush-and-compactions boolean | null

Use O_DIRECT for writes in background flush and compactions.

rocksdb-disable-direct-io-for-reads boolean | null

Files will be opened in "direct I/O" mode which means that data r/w from the disk will not be cached or buffered. The hardware buffer of the devices may however still be used. Memory mapped files are not impacted by these parameters.

rocksdb-disable-statistics boolean | null

Disable rocksdb statistics collection

Default: False (statistics enabled)

rocksdb-disable-wal boolean | null

The default depends on the different rocksdb use-cases at Restate.

Supports hot-reloading (Partial / Bifrost only)

rocksdb-log-keep-file-num integer | null

Number of info LOG files to keep

Default: 1

Default: null
format=uintmin=0
rocksdb-log-level RocksDbLogLevel | null

Verbosity of the LOG.

Default: "error"

Default: null
rocksdb-log-max-file-size NonZeroHumanBytes | null

Max size of info LOG file

Default: 64MB

Default: null
rocksdb-max-background-jobs integer | null

Default: the number of CPU cores on this node.

format=uint32min=1
rocksdb-memory-budget NonZeroHumanBytes | null

The memory budget for rocksdb memtables in bytes

If this value is set, it overrides the ratio defined in rocksdb-memory-ratio.

rocksdb-memory-ratio number

The memory budget for rocksdb memtables as ratio

This defines the total memory for rocksdb as a ratio of all memory available to memtables (See rocksdb-total-memtables-ratio in common).

Default: 0.009999999776482582
format=float
rocksdb-statistics-level RocksbStatistics | null

StatsLevel can be used to reduce statistics overhead by skipping certain types of stats in the stats collection process.

Default: "except-detailed-timers"

status-update-interval string

Non-zero duration string in either jiff human friendly or ISO8601 format. Check https://docs.rs/jiff/latest/jiff/struct.Span.html#parsing-and-printing for more details.

Examples: "10 hours", "5 days", "5d", "1h 4m", "P40D"
minLength=1
metadata-update-interval string

Non-zero duration string in either jiff human friendly or ISO8601 format. Check https://docs.rs/jiff/latest/jiff/struct.Span.html#parsing-and-printing for more details.

Examples: "10 hours", "5 days", "5d", "1h 4m", "P40D"
minLength=1
network-error-retry-policy object | object | object

Definition of a retry policy

networking object

Common network configuration options for communicating with Restate cluster nodes. Note that similar keys are present in other config sections, such as in Service Client options.

9 nested properties
connect-retry-policy object | object | object

Definition of a retry policy

connect-timeout string

Non-zero duration string in either jiff human friendly or ISO8601 format. Check https://docs.rs/jiff/latest/jiff/struct.Span.html#parsing-and-printing for more details.

Examples: "10 hours", "5 days", "5d", "1h 4m", "P40D"
minLength=1
data-stream-window-size string

Non-zero human-readable bytes

minLength=1pattern=^\d+(\.\d+)? ?[KMG]B$
disable-compression boolean

Disables Zstd compression for internal gRPC network connections

Default: false
handshake-timeout string

Non-zero duration string in either jiff human friendly or ISO8601 format. Check https://docs.rs/jiff/latest/jiff/struct.Span.html#parsing-and-printing for more details.

Examples: "10 hours", "5 days", "5d", "1h 4m", "P40D"
minLength=1
http2-adaptive-window boolean
Default: true
http2-keep-alive-interval string

Non-zero duration string in either jiff human friendly or ISO8601 format. Check https://docs.rs/jiff/latest/jiff/struct.Span.html#parsing-and-printing for more details.

Examples: "10 hours", "5 days", "5d", "1h 4m", "P40D"
minLength=1
http2-keep-alive-timeout string

Non-zero duration string in either jiff human friendly or ISO8601 format. Check https://docs.rs/jiff/latest/jiff/struct.Span.html#parsing-and-printing for more details.

Examples: "10 hours", "5 days", "5d", "1h 4m", "P40D"
minLength=1
message-size-limit string

Non-zero human-readable bytes

minLength=1pattern=^\d+(\.\d+)? ?[KMG]B$
no-proxy string | null

IP subnets, addresses, and domain names eg localhost,restate.dev,127.0.0.1,::1,192.168.1.0/24 that should not be proxied by the http_proxy. IP addresses must not have ports, and IPv6 addresses must not be wrapped in '[]'. Subdomains are also matched. An entry “*” matches all hostnames. Can be overridden by the NO_PROXY environment variable, which supports comma separated values.

Default: null
node-name string | null

Unique name for this node in the cluster. The node must not change unless it's started with empty local store. It defaults to the node's hostname.

Default: null
request-compression-threshold HumanBytes | null

Request minimum size to enable compression. The request size includes the total of the journal replay and its framing using Restate service protocol, without accounting for the json envelope and the base 64 encoding.

Default: 4MB (The default AWS Lambda Limit is 6MB, 4MB roughly accounts for +33% of Base64 and the json envelope).

Default: "4.0 MiB"
request-identity-private-key-pem-file string | null

A path to a file, such as "/var/secrets/key.pem", which contains exactly one ed25519 private key in PEM format. Such a file can be generated with openssl genpkey -algorithm ed25519. If provided, this key will be used to attach JWTs to requests from this client which SDKs may optionally verify, proving that the caller is a particular Restate instance.

This file is currently only read on client creation, but this may change in future. Parsed public keys will be logged at INFO level in the same format that SDKs expect.

Default: null
rocksdb-bg-threads integer | null

The number of threads to reserve to Rocksdb background tasks. Defaults to the number of cores on the machine.

format=uint32min=1
rocksdb-block-size NonZeroHumanBytes | null

Uncompressed block size

Default: 64KiB

rocksdb-compaction-readahead-size NonZeroHumanBytes | null

If non-zero, we perform bigger reads when doing compaction. If you're running RocksDB on spinning disks, you should set this to at least 2MB. That way RocksDB's compaction is doing sequential instead of random reads.

rocksdb-disable-direct-io-for-flush-and-compactions boolean | null

Use O_DIRECT for writes in background flush and compactions.

rocksdb-disable-direct-io-for-reads boolean | null

Files will be opened in "direct I/O" mode which means that data r/w from the disk will not be cached or buffered. The hardware buffer of the devices may however still be used. Memory mapped files are not impacted by these parameters.

rocksdb-disable-statistics boolean | null

Disable rocksdb statistics collection

Default: False (statistics enabled)

rocksdb-disable-wal boolean | null

The default depends on the different rocksdb use-cases at Restate.

Supports hot-reloading (Partial / Bifrost only)

rocksdb-high-priority-bg-threads integer

The number of threads to reserve to high priority Rocksdb background tasks.

Default: 2
format=uint32min=1
rocksdb-log-keep-file-num integer | null

Number of info LOG files to keep

Default: 1

Default: null
format=uintmin=0
rocksdb-log-level RocksDbLogLevel | null

Verbosity of the LOG.

Default: "error"

Default: null
rocksdb-log-max-file-size NonZeroHumanBytes | null

Max size of info LOG file

Default: 64MB

Default: null
rocksdb-max-background-jobs integer | null

Default: the number of CPU cores on this node.

format=uint32min=1
rocksdb-perf-level string | string | string | string | string
rocksdb-statistics-level RocksbStatistics | null

StatsLevel can be used to reduce statistics overhead by skipping certain types of stats in the stats collection process.

Default: "except-detailed-timers"

rocksdb-total-memory-size string

Non-zero human-readable bytes

minLength=1pattern=^\d+(\.\d+)? ?[KMG]B$
rocksdb-total-memtables-ratio number

The memory size used across all memtables (ratio between 0 to 1.0). This limits how much memory memtables can eat up from the value in rocksdb-total-memory-limit. When set to 0, memtables can take all available memory up to the value specified in rocksdb-total-memory-limit. This value will be sanitized to 1.0 if outside the valid bounds.

Default: 0.8500000238418579
format=float
roles Role[]

Defines the roles which this Restate node should run, by default the node starts with all roles.

Default:
[
  "http-ingress",
  "admin",
  "worker",
  "log-server",
  "metadata-server"
]
shutdown-timeout string

Non-zero duration string in either jiff human friendly or ISO8601 format. Check https://docs.rs/jiff/latest/jiff/struct.Span.html#parsing-and-printing for more details.

Examples: "10 hours", "5 days", "5d", "1h 4m", "P40D"
minLength=1
storage-high-priority-bg-threads integer | null

Storage high priority thread pool

This configures the restate-managed storage thread pool for performing high-priority or latency-sensitive storage tasks when the IO operation cannot be performed on in-memory caches.

format=uintmin=1
storage-low-priority-bg-threads integer | null

Storage low priority thread pool

This configures the restate-managed storage thread pool for performing low-priority or latency-insensitive storage tasks.

format=uintmin=1
tokio-console-bind-address string

Address to bind for the tokio-console tracing subscriber. If unset and restate-server is built with tokio-console support, it'll listen on 0.0.0.0:6669.

tracing-endpoint string | null

This is a shortcut to set both [Self::tracing_runtime_endpoint], and [Self::tracing_services_endpoint].

Specify the tracing endpoint to send runtime traces to. Traces will be exported using OTLP gRPC through opentelemetry_otlp.

To configure the sampling, please refer to the opentelemetry autoconfigure docs.

tracing-headers Record<string, string>

Proxy type to implement HashMap<HeaderName, HeaderValue> ser/de Use it directly or with #[serde(with = "serde_with::As::<serde_with::FromInto<restate_serde_util::SerdeableHeaderMap>>")].

tracing-json-path string | null

If set, an exporter will be configured to write traces to files using the Jaeger JSON format. Each trace file will start with the trace prefix.

If unset, no traces will be written to file.

It can be used to export traces in a structured format without configuring a Jaeger agent.

To inspect the traces, open the Jaeger UI and use the Upload JSON feature to load and inspect them.

tracing-runtime-endpoint string | null

Overrides [Self::tracing_endpoint] for runtime traces

Specify the tracing endpoint to send runtime traces to. Traces will be exported using OTLP gRPC through opentelemetry_otlp.

To configure the sampling, please refer to the opentelemetry autoconfigure docs.

tracing-services-endpoint string | null

Overrides [Self::tracing_endpoint] for services traces

Specify the tracing endpoint to send services traces to. Traces will be exported using OTLP gRPC through opentelemetry_otlp.

To configure the sampling, please refer to the opentelemetry autoconfigure docs.

use-random-ports boolean | null

Use random ports instead of the default port

worker object
10 nested properties
cleanup-interval string

Non-zero duration string in either jiff human friendly or ISO8601 format. Check https://docs.rs/jiff/latest/jiff/struct.Span.html#parsing-and-printing for more details.

Examples: "10 hours", "5 days", "5d", "1h 4m", "P40D"
minLength=1
durability-mode DurabilityMode | null

Every partition store is backed up by a durable log that is used to recover the state of the partition on restart or failover. The durability mode defines the criteria used to determine whether a partition is considered fully durable or not at a given point in the log history. Once a partition is fully durable, its backing log is allowed to be trimmed to the durability point.

This helps keeping the log's disk usage under control but it forces nodes that need to restore the state of the partition to fetch a snapshot of that partition that covers the changes up to and including the "durability point".

Since v1.4.2 (not compatible with earlier versions)

internal-queue-length integer
Default: 1000
format=uintmin=1
invoker object
9 nested properties
abort-timeout string

Duration string in either jiff human friendly or ISO8601 format. Check https://docs.rs/jiff/latest/jiff/struct.Span.html#parsing-and-printing for more details.

Examples: "10 hours", "5 days", "5d", "1h 4m", "P40D", "0"
minLength=1
action-throttling ThrottlingOptions | null

Configures rate limiting for service actions at the node level. This throttling mechanism uses a token bucket algorithm to control the rate at which actions can be processed, helping to prevent resource exhaustion and maintain system stability under high load.

The throttling limit is shared across all partitions running on this node, providing a global rate limit for the entire node rather than per-partition limits. When unset, no throttling is applied and actions are processed without throttling.

Default: null
concurrent-invocations-limit integer | null

Number of concurrent invocations that can be processed by the invoker.

Default: 1000
format=uintmin=1
in-memory-queue-length-limit integer

Defines the threshold after which queues invocations will spill to disk at the path defined in tmp-dir. In other words, this is the number of invocations that can be kept in memory before spilling to disk. This is a per-partition limit.

Default: 66049
format=uintmin=1
inactivity-timeout string

Duration string in either jiff human friendly or ISO8601 format. Check https://docs.rs/jiff/latest/jiff/struct.Span.html#parsing-and-printing for more details.

Examples: "10 hours", "5 days", "5d", "1h 4m", "P40D", "0"
minLength=1
invocation-throttling ThrottlingOptions | null

Configures throttling for service invocations at the node level. This throttling mechanism uses a token bucket algorithm to control the rate at which invocations can be processed, helping to prevent resource exhaustion and maintain system stability under high load.

The throttling limit is shared across all partitions running on this node, providing a global rate limit for the entire node rather than per-partition limits. When unset, no throttling is applied and invocations are processed without throttling.

Default: null
message-size-limit NonZeroHumanBytes | null

Maximum size of journal messages that can be received from a service. If a service sends a message larger than this limit, the invocation will fail.

If unset, defaults to networking.message-size-limit. If set, it will be clamped at the value of networking.message-size-limit since larger messages cannot be transmitted over the cluster internal network.

message-size-warning string

Non-zero human-readable bytes

minLength=1pattern=^\d+(\.\d+)? ?[KMG]B$
tmp-dir string | null

Temporary directory to use for the invoker temporary files. If empty, the system temporary directory will be used instead.

Default: null
max-command-batch-size integer

The maximum number of commands a partition processor will apply in a batch. The larger this value is, the higher the throughput and latency are.

Default: 32
format=uintmin=1
num-timers-in-memory-limit integer | null

The number of timers in memory limit is used to bound the amount of timers loaded in memory. If this limit is set, when exceeding it, the timers farther in the future will be spilled to disk.

Default: null
format=uintmin=1
shuffle object

Options for ingestion client

3 nested properties
connection-retry-policy object | object | object required

Definition of a retry policy

inflight-memory-budget string required

Non-zero human-readable bytes

minLength=1pattern=^\d+(\.\d+)? ?[KMG]B$
request-batch-size string required

Non-zero human-readable bytes

minLength=1pattern=^\d+(\.\d+)? ?[KMG]B$
snapshots object

Partition store object-store snapshotting settings. At a minimum, set destination to enable manual snapshotting via restatectl. Additionally, snapshot-interval and snapshot-interval-num-records can be used to configure automated periodic snapshots. For a complete example, see Snapshots.

12 nested properties
aws-access-key-id string | null

Username for Minio, or consult the service documentation for other S3-compatible stores.

aws-allow-http boolean | null

Allow plain HTTP to be used with the object store endpoint. Required when the endpoint URL that isn't using HTTPS.

aws-endpoint-url string | null

When you use Amazon S3, this is typically inferred from the region and there is no need to set it. With other object stores, you will have to provide an appropriate HTTP(S) endpoint. If not using HTTPS, also set aws-allow-http to true.

aws-profile string | null

The AWS configuration profile to use for S3 object store destinations. If you use named profiles in your AWS configuration, you can replace all the other settings with a single profile reference. See the [AWS documentation on profiles] (https://docs.aws.amazon.com/sdkref/latest/guide/file-format.html) for more.

aws-region string | null

AWS region to use with S3 object store destinations. This may be inferred from the environment, for example the current region when running in EC2. Because of the request signing algorithm this must have a value. For Minio, you can generally set this to any string, such as us-east-1.

aws-secret-access-key string | null

Password for Minio, or consult the service documentation for other S3-compatible stores.

aws-session-token string | null

This is only needed with short-term STS session credentials.

destination string | null

Base URL for cluster snapshots. Currently only supports the s3:// protocol scheme. S3-compatible object stores must support ETag-based conditional writes.

Default: None

Default: null
enable-cleanup boolean
Default: true
object-store-retry-policy object | object | object

Definition of a retry policy

snapshot-interval FriendlyDuration | null

A time interval at which partition snapshots will be created. If snapshot-interval-num-records is also set, it will be treated as an additional requirement before a snapshot is taken. Use both time-based and record-based intervals to reduce the number of snapshots created during times of low activity.

Snapshot intervals are calculated based on the wall clock timestamps reported by cluster nodes, assuming a basic level of clock synchronization within the cluster.

This setting does not influence explicitly requested snapshots triggered using restatectl.

Default: None - automatic snapshots are disabled

snapshot-interval-num-records integer | null

Number of log records that trigger a snapshot to be created.

As snapshots are created asynchronously, the actual number of new records that will trigger a snapshot will vary. The counter for the subsequent snapshot begins from the LSN at which the previous snapshot export was initiated.

This setting does not influence explicitly requested snapshots triggered using restatectl.

Default: None - automatic snapshots are disabled

Default: null
format=uint64min=1
storage object
14 nested properties
rocksdb-block-size NonZeroHumanBytes | null

Uncompressed block size

Default: 64KiB

rocksdb-compaction-readahead-size NonZeroHumanBytes | null

If non-zero, we perform bigger reads when doing compaction. If you're running RocksDB on spinning disks, you should set this to at least 2MB. That way RocksDB's compaction is doing sequential instead of random reads.

rocksdb-disable-compact-on-deletion boolean

When set to true, disables RocksDB's CompactOnDeletionCollector for partition stores. The collector automatically triggers compaction when SST files accumulate a high density of tombstones (deletion markers), helping reclaim disk space after bulk deletions.

This helps control space amplification when invocation journal retention expires and the cleaner purges completed invocations.

Consider disabling this if you observe frequent unnecessary compactions triggered by the collector causing performance issues.

rocksdb-disable-direct-io-for-flush-and-compactions boolean | null

Use O_DIRECT for writes in background flush and compactions.

rocksdb-disable-direct-io-for-reads boolean | null

Files will be opened in "direct I/O" mode which means that data r/w from the disk will not be cached or buffered. The hardware buffer of the devices may however still be used. Memory mapped files are not impacted by these parameters.

rocksdb-disable-statistics boolean | null

Disable rocksdb statistics collection

Default: False (statistics enabled)

rocksdb-disable-wal boolean | null

The default depends on the different rocksdb use-cases at Restate.

Supports hot-reloading (Partial / Bifrost only)

rocksdb-log-keep-file-num integer | null

Number of info LOG files to keep

Default: 1

Default: null
format=uintmin=0
rocksdb-log-level RocksDbLogLevel | null

Verbosity of the LOG.

Default: "error"

Default: null
rocksdb-log-max-file-size NonZeroHumanBytes | null

Max size of info LOG file

Default: 64MB

Default: null
rocksdb-max-background-jobs integer | null

Default: the number of CPU cores on this node.

format=uint32min=1
rocksdb-memory-budget NonZeroHumanBytes | null

The memory budget for rocksdb memtables in bytes

The total is divided evenly across partitions. The server will rebalance the memory budget periodically depending on the number of running partitions on this node.

If this value is set, it overrides the ratio defined in rocksdb-memory-ratio.

rocksdb-memory-ratio number

The memory budget for rocksdb memtables as ratio

This defines the total memory for rocksdb as a ratio of all memory available to memtables (See rocksdb-total-memtables-ratio in common). The budget is then divided evenly across partitions.

Default: 0.4900000095367432
format=float
rocksdb-statistics-level RocksbStatistics | null

StatsLevel can be used to reduce statistics overhead by skipping certain types of stats in the stats collection process.

Default: "except-detailed-timers"

trim-delay-interval string

Duration string in either jiff human friendly or ISO8601 format. Check https://docs.rs/jiff/latest/jiff/struct.Span.html#parsing-and-printing for more details.

Examples: "10 hours", "5 days", "5d", "1h 4m", "P40D", "0"
minLength=1

Definitions

AdminOptions object
advertised-address AdvertisedAddress-admin-api-server | null

Address that other nodes will use to connect to this service.

The full prefix that will be used to advertise this service publicly. For example, if this is set to <https://my-host> then others will use this as base URL to connect to this service.

If unset, the advertised address will be inferred from public address of this node or it'll use the value supplied in advertised-host if set.

advertised-admin-endpoint AdvertisedAddress-admin-api-server | null

Optional advertised Admin API endpoint. [Deprecated] Use advertised-address instead.

advertised-host string | null

Hostname to advertise for this service

bind-address BindAddress-admin-api-server | null

The combination of bind-ip and bind-port that will be used to bind

This has precedence over bind-ip and bind-port

bind-ip string | null

Local interface IP address to listen on

format=ip
bind-port integer | null

Network port to listen on

format=uint16min=0max=65535
concurrent-api-requests-limit integer | null

Concurrency limit for the Admin APIs. Default is unlimited.

Default: null
format=uintmin=1
deployment-routing-headers string[]

List of header names considered routing headers.

These will be used during deployment creation to distinguish between an already existing deployment and a new deployment.

disable-cluster-controller boolean
Default: false
disable-web-ui boolean

Disable serving the Restate Web UI on the admin port. Default is false.

Default: false
heartbeat-interval string

Non-zero duration string in either jiff human friendly or ISO8601 format. Check https://docs.rs/jiff/latest/jiff/struct.Span.html#parsing-and-printing for more details.

Examples: "10 hours", "5 days", "5d", "1h 4m", "P40D"
minLength=1
listen-mode ListenMode | null

Listen on unix-sockets, TCP sockets, or both.

The default is to listen on both.

query-engine object
3 nested properties
memory-size string

Non-zero human-readable bytes

minLength=1pattern=^\d+(\.\d+)? ?[KMG]B$
query-parallelism integer | null

The degree of parallelism to use for query execution (Defaults to the number of available cores).

Default: null
format=uintmin=1
tmp-dir string | null

The path to spill to

Default: null
use-random-ports boolean | null

Use random ports instead of the default port

AdvertisedAddress-admin-api-server string

An externally accessible URI address for admin-api-server. This can be set to unix:restate-data/admin.sock to advertise the automatically created unix-socket instead of using tcp if needed

Examples:
  • "http//127.0.0.1:9070/"
  • "https://my-host/"
  • "unix:/data/restate-data/admin.sock"
AdvertisedAddress-http-ingress-server string

An externally accessible URI address for http-ingress-server. This can be set to unix:restate-data/ingress.sock to advertise the automatically created unix-socket instead of using tcp if needed

Examples:
  • "http//127.0.0.1:8080/"
  • "https://my-host/"
  • "unix:/data/restate-data/ingress.sock"
AdvertisedAddress-message-fabric-server string

An externally accessible URI address for message-fabric-server. This can be set to unix:restate-data/fabric.sock to advertise the automatically created unix-socket instead of using tcp if needed

Examples:
  • "http//127.0.0.1:5122/"
  • "https://my-host/"
  • "unix:/data/restate-data/fabric.sock"
AdvertisedAddress-tokio-console-server string

An externally accessible URI address for tokio-console-server. This can be set to unix:restate-data/tokio.sock to advertise the automatically created unix-socket instead of using tcp if needed

Examples:
  • "http//127.0.0.1:6669/"
  • "https://my-host/"
  • "unix:/data/restate-data/tokio.sock"
BifrostOptions object
append-retry-max-interval string

Non-zero duration string in either jiff human friendly or ISO8601 format. Check https://docs.rs/jiff/latest/jiff/struct.Span.html#parsing-and-printing for more details.

Examples: "10 hours", "5 days", "5d", "1h 4m", "P40D"
minLength=1
append-retry-min-interval string

Non-zero duration string in either jiff human friendly or ISO8601 format. Check https://docs.rs/jiff/latest/jiff/struct.Span.html#parsing-and-printing for more details.

Examples: "10 hours", "5 days", "5d", "1h 4m", "P40D"
minLength=1
auto-recovery-interval string

Non-zero duration string in either jiff human friendly or ISO8601 format. Check https://docs.rs/jiff/latest/jiff/struct.Span.html#parsing-and-printing for more details.

Examples: "10 hours", "5 days", "5d", "1h 4m", "P40D"
minLength=1
default-provider string | string

An enum with the list of supported loglet providers.

disable-auto-improvement string

When enabled, automatic improvement periodically checks with the loglet provider if the loglet configuration can be improved by performing a reconfiguration.

This allows the log to pick up replication property changes, apply better placement of replicas, or for other reasons.

Default: false
local string

Configuration of local loglet provider

Default:
{
  "rocksdb-disable-wal": false,
  "rocksdb-disable-wal-fsync": false,
  "rocksdb-log-keep-file-num": null,
  "rocksdb-log-level": null,
  "rocksdb-log-max-file-size": null,
  "rocksdb-memory-ratio": 0.5,
  "writer-batch-commit-count": 5000,
  "writer-batch-commit-duration": "0s"
}
read-retry-policy object | object | object

Definition of a retry policy

record-cache-memory-size string

Human-readable bytes

minLength=1pattern=^\d+(\.\d+)? ?[KMG]B$
replicated-loglet object
8 nested properties
log-server-retry-policy object | object | object

Definition of a retry policy

log-server-rpc-timeout string

Non-zero duration string in either jiff human friendly or ISO8601 format. Check https://docs.rs/jiff/latest/jiff/struct.Span.html#parsing-and-printing for more details.

Examples: "10 hours", "5 days", "5d", "1h 4m", "P40D"
minLength=1
maximum-inflight-records integer

Maximum number of inflight records sequencer can accept

Once this maximum is hit, sequencer will induce back pressure on clients. This controls the total number of records regardless of how many batches.

Note that this will be increased to fit the biggest batch of records being enqueued.

Default: 1000
format=uintmin=1
read-batch-size string

Non-zero human-readable bytes

minLength=1pattern=^\d+(\.\d+)? ?[KMG]B$
readahead-records integer

Maximum number of records to prefetch from log servers

The number of records bifrost will attempt to prefetch from replicated loglet's log-servers for every loglet reader (e.g. partition processor). Note that this mainly impacts readers that are not co-located with the loglet sequencer (i.e. partition processor followers).

Default: 20
format=uint16min=1max=65535
readahead-trigger-ratio number

Trigger to prefetch more records

When read-ahead is used (readahead-records), this value (percentage in float) will determine when readers should trigger a prefetch for another batch to fill up the buffer. For instance, if this value is 0.3, then bifrost will trigger a prefetch when 30% or more of the read-ahead slots become available (e.g. partition processor consumed records and freed up enough slots).

The higher the value is, the longer bifrost will wait before it triggers the next fetch, potentially fetching more records as a result.

To illustrate, if readahead-records is set to 100 and readahead-trigger-ratio is 1.0. Then bifrost will prefetch up to 100 records from log-servers and will not trigger the next prefetch unless the consumer consumes 100% of this buffer. This means that bifrost will read in batches but will not do while the consumer is still reading the previous batch.

Value must be between 0 and 1. It will be clamped at 1.0.

Default: 0.5
format=float
sequencer-inactivity-timeout string

Non-zero duration string in either jiff human friendly or ISO8601 format. Check https://docs.rs/jiff/latest/jiff/struct.Span.html#parsing-and-printing for more details.

Examples: "10 hours", "5 days", "5d", "1h 4m", "P40D"
minLength=1
sequencer-retry-policy object | object | object

Definition of a retry policy

seal-retry-interval string

Non-zero duration string in either jiff human friendly or ISO8601 format. Check https://docs.rs/jiff/latest/jiff/struct.Span.html#parsing-and-printing for more details.

Examples: "10 hours", "5 days", "5d", "1h 4m", "P40D"
minLength=1
BindAddress-admin-api-server string

The local network address to bind on for admin-api-server. This service uses default port 9070 and will create a unix-socket file at the data directory under the name admin.sock

Examples:
  • "0.0.0.0:9070"
  • "127.0.0.1:9070"
BindAddress-http-ingress-server string

The local network address to bind on for http-ingress-server. This service uses default port 8080 and will create a unix-socket file at the data directory under the name ingress.sock

Examples:
  • "0.0.0.0:8080"
  • "127.0.0.1:8080"
BindAddress-message-fabric-server string

The local network address to bind on for message-fabric-server. This service uses default port 5122 and will create a unix-socket file at the data directory under the name fabric.sock

Examples:
  • "0.0.0.0:5122"
  • "127.0.0.1:5122"
BindAddress-tokio-console-server string

The local network address to bind on for tokio-console-server. This service uses default port 6669 and will create a unix-socket file at the data directory under the name tokio.sock

Examples:
  • "0.0.0.0:6669"
  • "127.0.0.1:6669"
DurabilityMode string | string | string | string | string
FriendlyDuration string

Duration string in either jiff human friendly or ISO8601 format. Check https://docs.rs/jiff/latest/jiff/struct.Span.html#parsing-and-printing for more details.

Examples:
  • "10 hours"
  • "5 days"
  • "5d"
  • "1h 4m"
  • "P40D"
  • "0"
Http2KeepAliveOptions object

Configuration for the HTTP/2 keep-alive mechanism, using PING frames.

Please note: most gateways don't propagate the HTTP/2 keep-alive between downstream and upstream hosts. In those environments, you need to make sure the gateway can detect a broken connection to the upstream deployment(s).

interval string

Non-zero duration string in either jiff human friendly or ISO8601 format. Check https://docs.rs/jiff/latest/jiff/struct.Span.html#parsing-and-printing for more details.

Examples: "10 hours", "5 days", "5d", "1h 4m", "P40D"
minLength=1
timeout string

Non-zero duration string in either jiff human friendly or ISO8601 format. Check https://docs.rs/jiff/latest/jiff/struct.Span.html#parsing-and-printing for more details.

Examples: "10 hours", "5 days", "5d", "1h 4m", "P40D"
minLength=1
HumanBytes string

Human-readable bytes

IngestionOptions object

Options for ingestion client

connection-retry-policy object | object | object required

Definition of a retry policy

inflight-memory-budget string required

Non-zero human-readable bytes

minLength=1pattern=^\d+(\.\d+)? ?[KMG]B$
request-batch-size string required

Non-zero human-readable bytes

minLength=1pattern=^\d+(\.\d+)? ?[KMG]B$
IngressOptions object
advertised-address AdvertisedAddress-http-ingress-server | null

Address that other nodes will use to connect to this service.

The full prefix that will be used to advertise this service publicly. For example, if this is set to <https://my-host> then others will use this as base URL to connect to this service.

If unset, the advertised address will be inferred from public address of this node or it'll use the value supplied in advertised-host if set.

advertised-host string | null

Hostname to advertise for this service

advertised-ingress-endpoint AdvertisedAddress-http-ingress-server | null

[Deprecated] Use advertised-address instead. Ingress endpoint that the Web UI should use to interact with.

bind-address BindAddress-http-ingress-server | null

The combination of bind-ip and bind-port that will be used to bind

This has precedence over bind-ip and bind-port

bind-ip string | null

Local interface IP address to listen on

format=ip
bind-port integer | null

Network port to listen on

format=uint16min=0max=65535
concurrent-api-requests-limit integer | null

Local concurrency limit to use to limit the amount of concurrent requests. If exceeded, the ingress will reply immediately with an appropriate status code. Default is unlimited.

Default: null
format=uintmin=1
ingestion object

Options for ingestion client

3 nested properties
connection-retry-policy object | object | object required

Definition of a retry policy

inflight-memory-budget string required

Non-zero human-readable bytes

minLength=1pattern=^\d+(\.\d+)? ?[KMG]B$
request-batch-size string required

Non-zero human-readable bytes

minLength=1pattern=^\d+(\.\d+)? ?[KMG]B$
kafka-clusters KafkaClusterOptions[]
Default:
[]
listen-mode ListenMode | null

Listen on unix-sockets, TCP sockets, or both.

The default is to listen on both.

use-random-ports boolean | null

Use random ports instead of the default port

InvocationRetryPolicyOptions object
exponentiation-factor number

The factor to use to compute the next retry attempt. Default: 2.0.

Default: 2.0
format=float
initial-interval string

Non-zero duration string in either jiff human friendly or ISO8601 format. Check https://docs.rs/jiff/latest/jiff/struct.Span.html#parsing-and-printing for more details.

Examples: "10 hours", "5 days", "5d", "1h 4m", "P40D"
minLength=1
max-attempts string | integer
max-interval string

Non-zero duration string in either jiff human friendly or ISO8601 format. Check https://docs.rs/jiff/latest/jiff/struct.Span.html#parsing-and-printing for more details.

Examples: "10 hours", "5 days", "5d", "1h 4m", "P40D"
minLength=1
on-max-attempts string | string
InvokerOptions object
abort-timeout string

Duration string in either jiff human friendly or ISO8601 format. Check https://docs.rs/jiff/latest/jiff/struct.Span.html#parsing-and-printing for more details.

Examples: "10 hours", "5 days", "5d", "1h 4m", "P40D", "0"
minLength=1
action-throttling ThrottlingOptions | null

Configures rate limiting for service actions at the node level. This throttling mechanism uses a token bucket algorithm to control the rate at which actions can be processed, helping to prevent resource exhaustion and maintain system stability under high load.

The throttling limit is shared across all partitions running on this node, providing a global rate limit for the entire node rather than per-partition limits. When unset, no throttling is applied and actions are processed without throttling.

Default: null
concurrent-invocations-limit integer | null

Number of concurrent invocations that can be processed by the invoker.

Default: 1000
format=uintmin=1
in-memory-queue-length-limit integer

Defines the threshold after which queues invocations will spill to disk at the path defined in tmp-dir. In other words, this is the number of invocations that can be kept in memory before spilling to disk. This is a per-partition limit.

Default: 66049
format=uintmin=1
inactivity-timeout string

Duration string in either jiff human friendly or ISO8601 format. Check https://docs.rs/jiff/latest/jiff/struct.Span.html#parsing-and-printing for more details.

Examples: "10 hours", "5 days", "5d", "1h 4m", "P40D", "0"
minLength=1
invocation-throttling ThrottlingOptions | null

Configures throttling for service invocations at the node level. This throttling mechanism uses a token bucket algorithm to control the rate at which invocations can be processed, helping to prevent resource exhaustion and maintain system stability under high load.

The throttling limit is shared across all partitions running on this node, providing a global rate limit for the entire node rather than per-partition limits. When unset, no throttling is applied and invocations are processed without throttling.

Default: null
message-size-limit NonZeroHumanBytes | null

Maximum size of journal messages that can be received from a service. If a service sends a message larger than this limit, the invocation will fail.

If unset, defaults to networking.message-size-limit. If set, it will be clamped at the value of networking.message-size-limit since larger messages cannot be transmitted over the cluster internal network.

message-size-warning string

Non-zero human-readable bytes

minLength=1pattern=^\d+(\.\d+)? ?[KMG]B$
tmp-dir string | null

Temporary directory to use for the invoker temporary files. If empty, the system temporary directory will be used instead.

Default: null
KafkaClusterOptions Record<string, string>

Configuration options to connect to a Kafka cluster.

brokers string[] required

Initial list of brokers (host or host:port).

name string required

Cluster name (Used to identify subscriptions).

ListenMode string | string | string
LogFormat string | string | string
LogServer object

Configuration is only used on nodes running with log-server role.

incoming-network-queue-length integer

The number of messages that can queue up on input network stream while request processor is busy.

Default: 1000
format=uintmin=1
rocksdb-block-size NonZeroHumanBytes | null

Uncompressed block size

Default: 64KiB

rocksdb-compaction-readahead-size NonZeroHumanBytes | null

If non-zero, we perform bigger reads when doing compaction. If you're running RocksDB on spinning disks, you should set this to at least 2MB. That way RocksDB's compaction is doing sequential instead of random reads.

rocksdb-disable-direct-io-for-flush-and-compactions boolean | null

Use O_DIRECT for writes in background flush and compactions.

rocksdb-disable-direct-io-for-reads boolean | null

Files will be opened in "direct I/O" mode which means that data r/w from the disk will not be cached or buffered. The hardware buffer of the devices may however still be used. Memory mapped files are not impacted by these parameters.

rocksdb-disable-statistics boolean | null

Disable rocksdb statistics collection

Default: False (statistics enabled)

rocksdb-disable-wal boolean | null

The default depends on the different rocksdb use-cases at Restate.

Supports hot-reloading (Partial / Bifrost only)

rocksdb-disable-wal-fsync boolean

Disable fsync of WAL on every batch

Default: false
rocksdb-log-keep-file-num integer | null

Number of info LOG files to keep

Default: 1

Default: null
format=uintmin=0
rocksdb-log-level RocksDbLogLevel | null

Verbosity of the LOG.

Default: "error"

Default: null
rocksdb-log-max-file-size NonZeroHumanBytes | null

Max size of info LOG file

Default: 64MB

Default: null
rocksdb-max-background-jobs integer | null

Default: the number of CPU cores on this node.

format=uint32min=1
rocksdb-max-sub-compactions integer

The maximum number of subcompactions to run in parallel.

Setting this to 1 means no sub-compactions are allowed (i.e. only 1 thread will do the compaction).

Default is 0 which maps to floor(number of CPU cores / 2)

Default: 0
format=uint32min=0
rocksdb-max-wal-size string

Human-readable bytes

minLength=1pattern=^\d+(\.\d+)? ?[KMG]B$
rocksdb-memory-budget NonZeroHumanBytes | null

The memory budget for rocksdb memtables in bytes

If this value is set, it overrides the ratio defined in rocksdb-memory-ratio.

rocksdb-memory-ratio number

The memory budget for rocksdb memtables as ratio

This defines the total memory for rocksdb as a ratio of all memory available to the log-server.

(See rocksdb-total-memtables-ratio in common).

Default: 0.5
format=float
rocksdb-statistics-level RocksbStatistics | null

StatsLevel can be used to reduce statistics overhead by skipping certain types of stats in the stats collection process.

Default: "except-detailed-timers"

writer-batch-commit-count integer

Trigger a commit when the batch size exceeds this threshold.

Set to 0 or 1 to commit the write batch on every command.

Default: 5000
format=uintmin=0
MaxAttempts string | integer
MetadataClientOptions object

The metadata client type to store metadata

backoff-policy object | object | object

Definition of a retry policy

connect-timeout string

Non-zero duration string in either jiff human friendly or ISO8601 format. Check https://docs.rs/jiff/latest/jiff/struct.Span.html#parsing-and-printing for more details.

Examples: "10 hours", "5 days", "5d", "1h 4m", "P40D"
minLength=1
keep-alive-interval string

Non-zero duration string in either jiff human friendly or ISO8601 format. Check https://docs.rs/jiff/latest/jiff/struct.Span.html#parsing-and-printing for more details.

Examples: "10 hours", "5 days", "5d", "1h 4m", "P40D"
minLength=1
keep-alive-timeout string

Non-zero duration string in either jiff human friendly or ISO8601 format. Check https://docs.rs/jiff/latest/jiff/struct.Span.html#parsing-and-printing for more details.

Examples: "10 hours", "5 days", "5d", "1h 4m", "P40D"
minLength=1
message-size-limit NonZeroHumanBytes | null

Maximum size of network messages that metadata client can receive from a metadata server.

If unset, defaults to networking.message-size-limit. If set, it will be clamped at the value of networking.message-size-limit since larger messages cannot be transmitted over the cluster internal network.

MetadataServerOptions object
auto-join boolean

Auto join the metadata cluster when being started

Defines whether this node should auto join the metadata store cluster when being started for the first time.

Default: true
log-trim-threshold integer | null

The threshold for trimming the raft log. The log will be trimmed if the number of apply entries exceeds this threshold. The default value is 1000.

Default: 1000
format=uint64min=0
raft-election-tick integer

The number of ticks before triggering an election

The number of ticks before triggering an election. The value must be larger than raft_heartbeat_tick. It's recommended to set raft_election_tick = 10 * raft_heartbeat_tick. Decrease this value if you want to react faster to failed leaders. Note, decreasing this value too much can lead to cluster instabilities due to falsely detecting dead leaders.

Default: 10
format=uintmin=1
raft-heartbeat-tick integer

The number of ticks before sending a heartbeat

A leader sends heartbeat messages to maintain its leadership every heartbeat ticks. Decrease this value to send heartbeats more often.

Default: 2
format=uintmin=1
raft-tick-interval string

Non-zero duration string in either jiff human friendly or ISO8601 format. Check https://docs.rs/jiff/latest/jiff/struct.Span.html#parsing-and-printing for more details.

Examples: "10 hours", "5 days", "5d", "1h 4m", "P40D"
minLength=1
request-queue-length integer

Limit number of in-flight requests

Number of in-flight metadata store requests.

Default: 32
format=uintmin=1
rocksdb-block-size NonZeroHumanBytes | null

Uncompressed block size

Default: 64KiB

rocksdb-compaction-readahead-size NonZeroHumanBytes | null

If non-zero, we perform bigger reads when doing compaction. If you're running RocksDB on spinning disks, you should set this to at least 2MB. That way RocksDB's compaction is doing sequential instead of random reads.

rocksdb-disable-direct-io-for-flush-and-compactions boolean | null

Use O_DIRECT for writes in background flush and compactions.

rocksdb-disable-direct-io-for-reads boolean | null

Files will be opened in "direct I/O" mode which means that data r/w from the disk will not be cached or buffered. The hardware buffer of the devices may however still be used. Memory mapped files are not impacted by these parameters.

rocksdb-disable-statistics boolean | null

Disable rocksdb statistics collection

Default: False (statistics enabled)

rocksdb-disable-wal boolean | null

The default depends on the different rocksdb use-cases at Restate.

Supports hot-reloading (Partial / Bifrost only)

rocksdb-log-keep-file-num integer | null

Number of info LOG files to keep

Default: 1

Default: null
format=uintmin=0
rocksdb-log-level RocksDbLogLevel | null

Verbosity of the LOG.

Default: "error"

Default: null
rocksdb-log-max-file-size NonZeroHumanBytes | null

Max size of info LOG file

Default: 64MB

Default: null
rocksdb-max-background-jobs integer | null

Default: the number of CPU cores on this node.

format=uint32min=1
rocksdb-memory-budget NonZeroHumanBytes | null

The memory budget for rocksdb memtables in bytes

If this value is set, it overrides the ratio defined in rocksdb-memory-ratio.

rocksdb-memory-ratio number

The memory budget for rocksdb memtables as ratio

This defines the total memory for rocksdb as a ratio of all memory available to memtables (See rocksdb-total-memtables-ratio in common).

Default: 0.009999999776482582
format=float
rocksdb-statistics-level RocksbStatistics | null

StatsLevel can be used to reduce statistics overhead by skipping certain types of stats in the stats collection process.

Default: "except-detailed-timers"

status-update-interval string

Non-zero duration string in either jiff human friendly or ISO8601 format. Check https://docs.rs/jiff/latest/jiff/struct.Span.html#parsing-and-printing for more details.

Examples: "10 hours", "5 days", "5d", "1h 4m", "P40D"
minLength=1
NetworkingOptions object

Common network configuration options for communicating with Restate cluster nodes. Note that similar keys are present in other config sections, such as in Service Client options.

connect-retry-policy object | object | object

Definition of a retry policy

connect-timeout string

Non-zero duration string in either jiff human friendly or ISO8601 format. Check https://docs.rs/jiff/latest/jiff/struct.Span.html#parsing-and-printing for more details.

Examples: "10 hours", "5 days", "5d", "1h 4m", "P40D"
minLength=1
data-stream-window-size string

Non-zero human-readable bytes

minLength=1pattern=^\d+(\.\d+)? ?[KMG]B$
disable-compression boolean

Disables Zstd compression for internal gRPC network connections

Default: false
handshake-timeout string

Non-zero duration string in either jiff human friendly or ISO8601 format. Check https://docs.rs/jiff/latest/jiff/struct.Span.html#parsing-and-printing for more details.

Examples: "10 hours", "5 days", "5d", "1h 4m", "P40D"
minLength=1
http2-adaptive-window boolean
Default: true
http2-keep-alive-interval string

Non-zero duration string in either jiff human friendly or ISO8601 format. Check https://docs.rs/jiff/latest/jiff/struct.Span.html#parsing-and-printing for more details.

Examples: "10 hours", "5 days", "5d", "1h 4m", "P40D"
minLength=1
http2-keep-alive-timeout string

Non-zero duration string in either jiff human friendly or ISO8601 format. Check https://docs.rs/jiff/latest/jiff/struct.Span.html#parsing-and-printing for more details.

Examples: "10 hours", "5 days", "5d", "1h 4m", "P40D"
minLength=1
message-size-limit string

Non-zero human-readable bytes

minLength=1pattern=^\d+(\.\d+)? ?[KMG]B$
NonZeroFriendlyDuration string

Non-zero duration string in either jiff human friendly or ISO8601 format. Check https://docs.rs/jiff/latest/jiff/struct.Span.html#parsing-and-printing for more details.

Examples:
  • "10 hours"
  • "5 days"
  • "5d"
  • "1h 4m"
  • "P40D"
NonZeroHumanBytes string

Non-zero human-readable bytes

OnMaxAttempts string | string
ProviderKind string | string

An enum with the list of supported loglet providers.

QueryEngineOptions object
memory-size string

Non-zero human-readable bytes

minLength=1pattern=^\d+(\.\d+)? ?[KMG]B$
query-parallelism integer | null

The degree of parallelism to use for query execution (Defaults to the number of available cores).

Default: null
format=uintmin=1
tmp-dir string | null

The path to spill to

Default: null
ReplicatedLoglet object
log-server-retry-policy object | object | object

Definition of a retry policy

log-server-rpc-timeout string

Non-zero duration string in either jiff human friendly or ISO8601 format. Check https://docs.rs/jiff/latest/jiff/struct.Span.html#parsing-and-printing for more details.

Examples: "10 hours", "5 days", "5d", "1h 4m", "P40D"
minLength=1
maximum-inflight-records integer

Maximum number of inflight records sequencer can accept

Once this maximum is hit, sequencer will induce back pressure on clients. This controls the total number of records regardless of how many batches.

Note that this will be increased to fit the biggest batch of records being enqueued.

Default: 1000
format=uintmin=1
read-batch-size string

Non-zero human-readable bytes

minLength=1pattern=^\d+(\.\d+)? ?[KMG]B$
readahead-records integer

Maximum number of records to prefetch from log servers

The number of records bifrost will attempt to prefetch from replicated loglet's log-servers for every loglet reader (e.g. partition processor). Note that this mainly impacts readers that are not co-located with the loglet sequencer (i.e. partition processor followers).

Default: 20
format=uint16min=1max=65535
readahead-trigger-ratio number

Trigger to prefetch more records

When read-ahead is used (readahead-records), this value (percentage in float) will determine when readers should trigger a prefetch for another batch to fill up the buffer. For instance, if this value is 0.3, then bifrost will trigger a prefetch when 30% or more of the read-ahead slots become available (e.g. partition processor consumed records and freed up enough slots).

The higher the value is, the longer bifrost will wait before it triggers the next fetch, potentially fetching more records as a result.

To illustrate, if readahead-records is set to 100 and readahead-trigger-ratio is 1.0. Then bifrost will prefetch up to 100 records from log-servers and will not trigger the next prefetch unless the consumer consumes 100% of this buffer. This means that bifrost will read in batches but will not do while the consumer is still reading the previous batch.

Value must be between 0 and 1. It will be clamped at 1.0.

Default: 0.5
format=float
sequencer-inactivity-timeout string

Non-zero duration string in either jiff human friendly or ISO8601 format. Check https://docs.rs/jiff/latest/jiff/struct.Span.html#parsing-and-printing for more details.

Examples: "10 hours", "5 days", "5d", "1h 4m", "P40D"
minLength=1
sequencer-retry-policy object | object | object

Definition of a retry policy

RetryPolicy object | object | object

Definition of a retry policy

RocksDbLogLevel string

Verbosity of the LOG.

RocksbPerfStatisticsLevel string | string | string | string | string
RocksbStatistics string | string | string | string | string | string
Role string | string | string | string | string
SerdeableHeaderHashMap Record<string, string>

Proxy type to implement HashMap<HeaderName, HeaderValue> ser/de Use it directly or with #[serde(with = "serde_with::As::<serde_with::FromInto<restate_serde_util::SerdeableHeaderMap>>")].

SnapshotsOptions object

Partition store object-store snapshotting settings. At a minimum, set destination to enable manual snapshotting via restatectl. Additionally, snapshot-interval and snapshot-interval-num-records can be used to configure automated periodic snapshots. For a complete example, see Snapshots.

aws-access-key-id string | null

Username for Minio, or consult the service documentation for other S3-compatible stores.

aws-allow-http boolean | null

Allow plain HTTP to be used with the object store endpoint. Required when the endpoint URL that isn't using HTTPS.

aws-endpoint-url string | null

When you use Amazon S3, this is typically inferred from the region and there is no need to set it. With other object stores, you will have to provide an appropriate HTTP(S) endpoint. If not using HTTPS, also set aws-allow-http to true.

aws-profile string | null

The AWS configuration profile to use for S3 object store destinations. If you use named profiles in your AWS configuration, you can replace all the other settings with a single profile reference. See the [AWS documentation on profiles] (https://docs.aws.amazon.com/sdkref/latest/guide/file-format.html) for more.

aws-region string | null

AWS region to use with S3 object store destinations. This may be inferred from the environment, for example the current region when running in EC2. Because of the request signing algorithm this must have a value. For Minio, you can generally set this to any string, such as us-east-1.

aws-secret-access-key string | null

Password for Minio, or consult the service documentation for other S3-compatible stores.

aws-session-token string | null

This is only needed with short-term STS session credentials.

destination string | null

Base URL for cluster snapshots. Currently only supports the s3:// protocol scheme. S3-compatible object stores must support ETag-based conditional writes.

Default: None

Default: null
enable-cleanup boolean
Default: true
object-store-retry-policy object | object | object

Definition of a retry policy

snapshot-interval FriendlyDuration | null

A time interval at which partition snapshots will be created. If snapshot-interval-num-records is also set, it will be treated as an additional requirement before a snapshot is taken. Use both time-based and record-based intervals to reduce the number of snapshots created during times of low activity.

Snapshot intervals are calculated based on the wall clock timestamps reported by cluster nodes, assuming a basic level of clock synchronization within the cluster.

This setting does not influence explicitly requested snapshots triggered using restatectl.

Default: None - automatic snapshots are disabled

snapshot-interval-num-records integer | null

Number of log records that trigger a snapshot to be created.

As snapshots are created asynchronously, the actual number of new records that will trigger a snapshot will vary. The counter for the subsequent snapshot begins from the LSN at which the previous snapshot export was initiated.

This setting does not influence explicitly requested snapshots triggered using restatectl.

Default: None - automatic snapshots are disabled

Default: null
format=uint64min=1
StorageOptions object
rocksdb-block-size NonZeroHumanBytes | null

Uncompressed block size

Default: 64KiB

rocksdb-compaction-readahead-size NonZeroHumanBytes | null

If non-zero, we perform bigger reads when doing compaction. If you're running RocksDB on spinning disks, you should set this to at least 2MB. That way RocksDB's compaction is doing sequential instead of random reads.

rocksdb-disable-compact-on-deletion boolean

When set to true, disables RocksDB's CompactOnDeletionCollector for partition stores. The collector automatically triggers compaction when SST files accumulate a high density of tombstones (deletion markers), helping reclaim disk space after bulk deletions.

This helps control space amplification when invocation journal retention expires and the cleaner purges completed invocations.

Consider disabling this if you observe frequent unnecessary compactions triggered by the collector causing performance issues.

rocksdb-disable-direct-io-for-flush-and-compactions boolean | null

Use O_DIRECT for writes in background flush and compactions.

rocksdb-disable-direct-io-for-reads boolean | null

Files will be opened in "direct I/O" mode which means that data r/w from the disk will not be cached or buffered. The hardware buffer of the devices may however still be used. Memory mapped files are not impacted by these parameters.

rocksdb-disable-statistics boolean | null

Disable rocksdb statistics collection

Default: False (statistics enabled)

rocksdb-disable-wal boolean | null

The default depends on the different rocksdb use-cases at Restate.

Supports hot-reloading (Partial / Bifrost only)

rocksdb-log-keep-file-num integer | null

Number of info LOG files to keep

Default: 1

Default: null
format=uintmin=0
rocksdb-log-level RocksDbLogLevel | null

Verbosity of the LOG.

Default: "error"

Default: null
rocksdb-log-max-file-size NonZeroHumanBytes | null

Max size of info LOG file

Default: 64MB

Default: null
rocksdb-max-background-jobs integer | null

Default: the number of CPU cores on this node.

format=uint32min=1
rocksdb-memory-budget NonZeroHumanBytes | null

The memory budget for rocksdb memtables in bytes

The total is divided evenly across partitions. The server will rebalance the memory budget periodically depending on the number of running partitions on this node.

If this value is set, it overrides the ratio defined in rocksdb-memory-ratio.

rocksdb-memory-ratio number

The memory budget for rocksdb memtables as ratio

This defines the total memory for rocksdb as a ratio of all memory available to memtables (See rocksdb-total-memtables-ratio in common). The budget is then divided evenly across partitions.

Default: 0.4900000095367432
format=float
rocksdb-statistics-level RocksbStatistics | null

StatsLevel can be used to reduce statistics overhead by skipping certain types of stats in the stats collection process.

Default: "except-detailed-timers"

ThrottlingOptions object

Throttling options per invoker.

rate string required

The rate at which the tokens are replenished.

Syntax: <rate>/<unit> where <unit> is s|sec|second, m|min|minute, or h|hr|hour. unit defaults to per second if not specified.

capacity integer | null

The maximum number of tokens the bucket can hold. Default to the rate value if not specified.

format=uint32min=1
WorkerOptions object
cleanup-interval string

Non-zero duration string in either jiff human friendly or ISO8601 format. Check https://docs.rs/jiff/latest/jiff/struct.Span.html#parsing-and-printing for more details.

Examples: "10 hours", "5 days", "5d", "1h 4m", "P40D"
minLength=1
durability-mode DurabilityMode | null

Every partition store is backed up by a durable log that is used to recover the state of the partition on restart or failover. The durability mode defines the criteria used to determine whether a partition is considered fully durable or not at a given point in the log history. Once a partition is fully durable, its backing log is allowed to be trimmed to the durability point.

This helps keeping the log's disk usage under control but it forces nodes that need to restore the state of the partition to fetch a snapshot of that partition that covers the changes up to and including the "durability point".

Since v1.4.2 (not compatible with earlier versions)

internal-queue-length integer
Default: 1000
format=uintmin=1
invoker object
9 nested properties
abort-timeout string

Duration string in either jiff human friendly or ISO8601 format. Check https://docs.rs/jiff/latest/jiff/struct.Span.html#parsing-and-printing for more details.

Examples: "10 hours", "5 days", "5d", "1h 4m", "P40D", "0"
minLength=1
action-throttling ThrottlingOptions | null

Configures rate limiting for service actions at the node level. This throttling mechanism uses a token bucket algorithm to control the rate at which actions can be processed, helping to prevent resource exhaustion and maintain system stability under high load.

The throttling limit is shared across all partitions running on this node, providing a global rate limit for the entire node rather than per-partition limits. When unset, no throttling is applied and actions are processed without throttling.

Default: null
concurrent-invocations-limit integer | null

Number of concurrent invocations that can be processed by the invoker.

Default: 1000
format=uintmin=1
in-memory-queue-length-limit integer

Defines the threshold after which queues invocations will spill to disk at the path defined in tmp-dir. In other words, this is the number of invocations that can be kept in memory before spilling to disk. This is a per-partition limit.

Default: 66049
format=uintmin=1
inactivity-timeout string

Duration string in either jiff human friendly or ISO8601 format. Check https://docs.rs/jiff/latest/jiff/struct.Span.html#parsing-and-printing for more details.

Examples: "10 hours", "5 days", "5d", "1h 4m", "P40D", "0"
minLength=1
invocation-throttling ThrottlingOptions | null

Configures throttling for service invocations at the node level. This throttling mechanism uses a token bucket algorithm to control the rate at which invocations can be processed, helping to prevent resource exhaustion and maintain system stability under high load.

The throttling limit is shared across all partitions running on this node, providing a global rate limit for the entire node rather than per-partition limits. When unset, no throttling is applied and invocations are processed without throttling.

Default: null
message-size-limit NonZeroHumanBytes | null

Maximum size of journal messages that can be received from a service. If a service sends a message larger than this limit, the invocation will fail.

If unset, defaults to networking.message-size-limit. If set, it will be clamped at the value of networking.message-size-limit since larger messages cannot be transmitted over the cluster internal network.

message-size-warning string

Non-zero human-readable bytes

minLength=1pattern=^\d+(\.\d+)? ?[KMG]B$
tmp-dir string | null

Temporary directory to use for the invoker temporary files. If empty, the system temporary directory will be used instead.

Default: null
max-command-batch-size integer

The maximum number of commands a partition processor will apply in a batch. The larger this value is, the higher the throughput and latency are.

Default: 32
format=uintmin=1
num-timers-in-memory-limit integer | null

The number of timers in memory limit is used to bound the amount of timers loaded in memory. If this limit is set, when exceeding it, the timers farther in the future will be spilled to disk.

Default: null
format=uintmin=1
shuffle object

Options for ingestion client

3 nested properties
connection-retry-policy object | object | object required

Definition of a retry policy

inflight-memory-budget string required

Non-zero human-readable bytes

minLength=1pattern=^\d+(\.\d+)? ?[KMG]B$
request-batch-size string required

Non-zero human-readable bytes

minLength=1pattern=^\d+(\.\d+)? ?[KMG]B$
snapshots object

Partition store object-store snapshotting settings. At a minimum, set destination to enable manual snapshotting via restatectl. Additionally, snapshot-interval and snapshot-interval-num-records can be used to configure automated periodic snapshots. For a complete example, see Snapshots.

12 nested properties
aws-access-key-id string | null

Username for Minio, or consult the service documentation for other S3-compatible stores.

aws-allow-http boolean | null

Allow plain HTTP to be used with the object store endpoint. Required when the endpoint URL that isn't using HTTPS.

aws-endpoint-url string | null

When you use Amazon S3, this is typically inferred from the region and there is no need to set it. With other object stores, you will have to provide an appropriate HTTP(S) endpoint. If not using HTTPS, also set aws-allow-http to true.

aws-profile string | null

The AWS configuration profile to use for S3 object store destinations. If you use named profiles in your AWS configuration, you can replace all the other settings with a single profile reference. See the [AWS documentation on profiles] (https://docs.aws.amazon.com/sdkref/latest/guide/file-format.html) for more.

aws-region string | null

AWS region to use with S3 object store destinations. This may be inferred from the environment, for example the current region when running in EC2. Because of the request signing algorithm this must have a value. For Minio, you can generally set this to any string, such as us-east-1.

aws-secret-access-key string | null

Password for Minio, or consult the service documentation for other S3-compatible stores.

aws-session-token string | null

This is only needed with short-term STS session credentials.

destination string | null

Base URL for cluster snapshots. Currently only supports the s3:// protocol scheme. S3-compatible object stores must support ETag-based conditional writes.

Default: None

Default: null
enable-cleanup boolean
Default: true
object-store-retry-policy object | object | object

Definition of a retry policy

snapshot-interval FriendlyDuration | null

A time interval at which partition snapshots will be created. If snapshot-interval-num-records is also set, it will be treated as an additional requirement before a snapshot is taken. Use both time-based and record-based intervals to reduce the number of snapshots created during times of low activity.

Snapshot intervals are calculated based on the wall clock timestamps reported by cluster nodes, assuming a basic level of clock synchronization within the cluster.

This setting does not influence explicitly requested snapshots triggered using restatectl.

Default: None - automatic snapshots are disabled

snapshot-interval-num-records integer | null

Number of log records that trigger a snapshot to be created.

As snapshots are created asynchronously, the actual number of new records that will trigger a snapshot will vary. The counter for the subsequent snapshot begins from the LSN at which the previous snapshot export was initiated.

This setting does not influence explicitly requested snapshots triggered using restatectl.

Default: None - automatic snapshots are disabled

Default: null
format=uint64min=1
storage object
14 nested properties
rocksdb-block-size NonZeroHumanBytes | null

Uncompressed block size

Default: 64KiB

rocksdb-compaction-readahead-size NonZeroHumanBytes | null

If non-zero, we perform bigger reads when doing compaction. If you're running RocksDB on spinning disks, you should set this to at least 2MB. That way RocksDB's compaction is doing sequential instead of random reads.

rocksdb-disable-compact-on-deletion boolean

When set to true, disables RocksDB's CompactOnDeletionCollector for partition stores. The collector automatically triggers compaction when SST files accumulate a high density of tombstones (deletion markers), helping reclaim disk space after bulk deletions.

This helps control space amplification when invocation journal retention expires and the cleaner purges completed invocations.

Consider disabling this if you observe frequent unnecessary compactions triggered by the collector causing performance issues.

rocksdb-disable-direct-io-for-flush-and-compactions boolean | null

Use O_DIRECT for writes in background flush and compactions.

rocksdb-disable-direct-io-for-reads boolean | null

Files will be opened in "direct I/O" mode which means that data r/w from the disk will not be cached or buffered. The hardware buffer of the devices may however still be used. Memory mapped files are not impacted by these parameters.

rocksdb-disable-statistics boolean | null

Disable rocksdb statistics collection

Default: False (statistics enabled)

rocksdb-disable-wal boolean | null

The default depends on the different rocksdb use-cases at Restate.

Supports hot-reloading (Partial / Bifrost only)

rocksdb-log-keep-file-num integer | null

Number of info LOG files to keep

Default: 1

Default: null
format=uintmin=0
rocksdb-log-level RocksDbLogLevel | null

Verbosity of the LOG.

Default: "error"

Default: null
rocksdb-log-max-file-size NonZeroHumanBytes | null

Max size of info LOG file

Default: 64MB

Default: null
rocksdb-max-background-jobs integer | null

Default: the number of CPU cores on this node.

format=uint32min=1
rocksdb-memory-budget NonZeroHumanBytes | null

The memory budget for rocksdb memtables in bytes

The total is divided evenly across partitions. The server will rebalance the memory budget periodically depending on the number of running partitions on this node.

If this value is set, it overrides the ratio defined in rocksdb-memory-ratio.

rocksdb-memory-ratio number

The memory budget for rocksdb memtables as ratio

This defines the total memory for rocksdb as a ratio of all memory available to memtables (See rocksdb-total-memtables-ratio in common). The budget is then divided evenly across partitions.

Default: 0.4900000095367432
format=float
rocksdb-statistics-level RocksbStatistics | null

StatsLevel can be used to reduce statistics overhead by skipping certain types of stats in the stats collection process.

Default: "except-detailed-timers"

trim-delay-interval string

Duration string in either jiff human friendly or ISO8601 format. Check https://docs.rs/jiff/latest/jiff/struct.Span.html#parsing-and-printing for more details.

Examples: "10 hours", "5 days", "5d", "1h 4m", "P40D", "0"
minLength=1