Skip to content

Coordinator

Configures the cluster coordinator for inter-node communication.

This object can be configured from the WebUI under Settings › Cluster › Coordinator

Coordinator is a multi-variant object: each instance has an @type discriminator selecting one of the variants below, and each variant carries its own set of fields.

Disabled

Use in-memory store (Redis only)

Kafka

Type: Set<String> · min items: 1

Kafka bootstrap brokers, as host:port pairs

Type: String · required

Consumer group ID prefix. Each node joins its own consumer group, named after this prefix followed by a dash and the node ID, so that every node receives every notification

Type: Duration · default: 5000

Timeout for message processing

Type: Duration · default: 5000

Timeout for session

Type: Boolean · default: false

Use TLS to connect to the Kafka brokers

Type: Boolean · default: false

Allow invalid TLS certificates when connecting to the Kafka brokers

NATS

Type: Set<String> · default: {"127.0.0.1:4222":true} · min items: 1

NATS servers to connect to, as host:port pairs

Type: UnsignedInt?

Maximum number of times to attempt to reconnect to the server

Type: Duration · default: 5000

Timeout for establishing a connection to the server

Type: Duration · default: 10000

Timeout for requests to the server

Type: Duration · default: 60000

Interval between pings to the server

Type: UnsignedInt · default: 2048 · min: 1

By default, Client dispatches op’s to the Client onto the channel with capacity of 2048. This option enables overriding it

Type: UnsignedInt · default: 65535 · min: 1

Sets the initial capacity of the read buffer. Which is a buffer used to gather partial protocol messages.

Type: UnsignedInt · default: 65536 · min: 1

Sets the capacity for Subscribers. Exceeding it will trigger slow consumer error callback and drop messages.

Type: Boolean · default: true

Disables delivering messages that were published from the same connection.

Type: Boolean · default: false

Use TLS to connect to the NATS server

Type: Boolean · default: false

Allow invalid TLS certificates when connecting to the NATS server

Type: SecretKeyOptional · default: {"@type":"None"}

Password to connect to the store

Type: String? · default: "stalwart"

Username to connect to the store

Type: SecretTextOptional · default: {"@type":"None"}

String containing the JWT credentials

Eclipse Zenoh

Type: Text · required

Zenoh configuration string

Redis

Type: Uri · default: "redis://127.0.0.1"

URL of the Redis server

Type: Duration · default: 10000

Maximum time to wait for a new connection to the Redis server to be established

Type: Boolean · default: false

Allow invalid TLS certificates when connecting to the Redis server

Type: UnsignedInt · default: 10 · max: 8192 · min: 1

Maximum number of connections to the store

Type: Duration? · default: 30000

Timeout for creating a new connection

Type: Duration? · default: 30000

Timeout for waiting for a connection from the pool

Type: Duration? · default: 30000

Timeout for recycling a connection

Redis Cluster

Type: Set<Uri> · default: {"redis://127.0.0.1":true}

URL(s) of the Redis server(s)

Type: Duration · default: 10000

Maximum time to wait for a new connection to the Redis server to be established

Type: Boolean · default: false

Allow invalid TLS certificates when connecting to the Redis server

Type: String?

Username to connect to the store

Type: SecretKeyOptional · default: {"@type":"None"}

Password to connect to the store

Type: Duration? · max: 1024 · min: 1

Maximum time to wait between retries

Type: Duration? · max: 1024 · min: 1

Minimum time to wait between retries

Type: UnsignedInt? · max: 1024 · min: 1

Number of retries to connect to the Redis cluster

Type: Boolean · default: true

Whether to read from replicas

Type: RedisProtocol · default: "resp2"

Protocol Version

Type: UnsignedInt · default: 10 · max: 8192 · min: 1

Maximum number of connections to the store

Type: Duration? · default: 30000

Timeout for creating a new connection

Type: Duration? · default: 30000

Timeout for waiting for a connection from the pool

Type: Duration? · default: 30000

Timeout for recycling a connection

Redis Sentinel

Type: Set<Uri> · default: {"redis://127.0.0.1:26379":true}

Address(es) of the Sentinel node(s)

Type: String · default: "mymaster"

Name of the monitored master (service) to query via the Sentinels

Type: Duration · default: 10000

Maximum time to wait for a new connection to the Redis server to be established

Type: Boolean · default: false

Allow invalid TLS certificates when connecting to the Redis server

Type: String?

Username to connect to the data nodes

Type: SecretKeyOptional · default: {"@type":"None"}

Password to connect to the data nodes

Type: String?

Username to connect to the Sentinel nodes

Type: SecretKeyOptional · default: {"@type":"None"}

Password to connect to the Sentinel nodes

Type: RedisProtocol · default: "resp2"

Protocol Version

Type: UnsignedInt · default: 10 · max: 8192 · min: 1

Maximum number of connections to the store

Type: Duration? · default: 30000

Timeout for creating a new connection

Type: Duration? · default: 30000

Timeout for waiting for a connection from the pool

Type: Duration? · default: 30000

Timeout for recycling a connection

The Coordinator singleton is available via the urn:stalwart:jmap capability.

This is a standard Foo/get method as defined in RFC 8620, Section 5.1.

For singletons, the ids argument should be the literal singleton (or null to return the single instance).

This method requires the sysCoordinatorGet permission.

Terminal window
curl -X POST https://mail.example.com/jmap/ \
-H 'Authorization: Bearer $TOKEN' \
-H 'Content-Type: application/json' \
-d '{
"methodCalls": [
[
"x:Coordinator/get",
{
"ids": [
"singleton"
]
},
"c1"
]
],
"using": [
"urn:ietf:params:jmap:core",
"urn:stalwart:jmap"
]
}'

This is a standard Foo/set method as defined in RFC 8620, Section 5.3.

For singletons, only the update argument with id singleton is accepted; create and destroy arguments are rejected.

This method requires the sysCoordinatorUpdate permission.

Terminal window
curl -X POST https://mail.example.com/jmap/ \
-H 'Authorization: Bearer $TOKEN' \
-H 'Content-Type: application/json' \
-d '{
"methodCalls": [
[
"x:Coordinator/set",
{
"update": {
"singleton": {
"description": "updated value"
}
}
},
"c1"
]
],
"using": [
"urn:ietf:params:jmap:core",
"urn:stalwart:jmap"
]
}'

stalwart-cli wraps the same JMAP calls. See the CLI reference for installation, authentication, and general usage.

Terminal window
stalwart-cli get Coordinator
Terminal window
stalwart-cli update Coordinator --field description='updated value'

An optional secret value, or none.

  • None: No secret. No additional fields.
  • Value: Secret value. Carries the fields of SecretKeyValue.
  • EnvironmentVariable: Secret read from environment variable. Carries the fields of SecretKeyEnvironmentVariable.
  • File: Secret read from file. Carries the fields of SecretKeyFile.

A secret value provided directly.

Type: String · required · secret

Password or secret value

A secret value read from an environment variable.

Type: String · required

Environment variable name to read the secret from

A secret value read from a file.

Type: String · required

File path to read the secret from

An optional secret text value, or none.

A secret text value provided directly.

Type: Text · required · secret

Password or secret value

ValueLabel
resp2RESP2
resp3RESP3