Coordinator
Configures the cluster coordinator for inter-node communication.
This object can be configured from the WebUI under Settings › Cluster › Coordinator
Fields
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.
@type: "Disabled"
Disabled
@type: "Default"
Use in-memory store (Redis only)
@type: "Kafka"
Kafka
brokers
Type:
String[]· min items: 1List of Kafka brokers
groupId
Type:
String· requiredConsumer group ID
timeoutMessage
Type:
Duration· default:"5s"Timeout for message processing
timeoutSession
Type:
Duration· default:"5s"Timeout for session
@type: "Nats"
NATS
addresses
Type:
String[]· default:["127.0.0.1:4444"]· min items: 1Address of the NATS server
maxReconnects
Type:
UnsignedInt?Maximum number of times to attempt to reconnect to the server
timeoutConnection
Type:
Duration· default:"5s"Timeout for establishing a connection to the server
timeoutRequest
Type:
Duration· default:"10s"Timeout for requests to the server
pingInterval
Type:
Duration· default:"60s"Interval between pings to the server
capacityClient
Type:
UnsignedInt· default:2048· min: 1By default, Client dispatches op's to the Client onto the channel with capacity of 2048. This option enables overriding it
capacityReadBuffer
Type:
UnsignedInt· default:65535· min: 1Sets the initial capacity of the read buffer. Which is a buffer used to gather partial protocol messages.
capacitySubscription
Type:
UnsignedInt· default:65536· min: 1Sets the capacity for Subscribers. Exceeding it will trigger slow consumer error callback and drop messages.
noEcho
Type:
Boolean· default:trueDisables delivering messages that were published from the same connection.
useTls
Type:
Boolean· default:falseUse TLS to connect to the store
authSecret
Type:
SecretKeyOptional· requiredPassword to connect to the store
authUsername
Type:
String?· default:"stalwart"Username to connect to the store
credentials
Type:
SecretTextOptional· requiredString containing the JWT credentials
@type: "Zenoh"
Eclipse Zenoh
config
Type:
Text· requiredZenoh configuration string
@type: "Redis"
Redis
url
Type:
Uri· default:"redis://127.0.0.1"URL of the Redis server
timeout
Type:
Duration· default:"10s"Connection timeout to the database
poolMaxConnections
Type:
UnsignedInt· default:10· max: 8192 · min: 1Maximum number of connections to the store
poolTimeoutCreate
Type:
Duration?· default:"30s"Timeout for creating a new connection
poolTimeoutWait
Type:
Duration?· default:"30s"Timeout for waiting for a connection from the pool
poolTimeoutRecycle
Type:
Duration?· default:"30s"Timeout for recycling a connection
@type: "RedisCluster"
Redis Cluster
urls
Type:
Uri[]· default:["redis://127.0.0.1"]URL(s) of the Redis server(s)
timeout
Type:
Duration· default:"10s"Connection timeout to the database
authUsername
Type:
String?· default:"stalwart"Username to connect to the store
authSecret
Type:
SecretKeyOptional· requiredPassword to connect to the store
maxRetryWait
Type:
Duration?· max: 1024 · min: 1Maximum time to wait between retries
minRetryWait
Type:
Duration?· max: 1024 · min: 1Minimum time to wait between retries
maxRetries
Type:
UnsignedInt?· max: 1024 · min: 1Number of retries to connect to the Redis cluster
readFromReplicas
Type:
Boolean· default:trueWhether to read from replicas
protocolVersion
Type:
RedisProtocol· default:"resp2"Protocol Version
poolMaxConnections
Type:
UnsignedInt· default:10· max: 8192 · min: 1Maximum number of connections to the store
poolTimeoutCreate
Type:
Duration?· default:"30s"Timeout for creating a new connection
poolTimeoutWait
Type:
Duration?· default:"30s"Timeout for waiting for a connection from the pool
poolTimeoutRecycle
Type:
Duration?· default:"30s"Timeout for recycling a connection
JMAP API
The Coordinator singleton is available via the urn:stalwart:jmap capability.
x:Coordinator/get
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.
curl -X POST https://mail.example.com/api \
-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"
]
}'
x:Coordinator/set
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.
curl -X POST https://mail.example.com/api \
-H 'Authorization: Bearer $TOKEN' \
-H 'Content-Type: application/json' \
-d '{
"methodCalls": [
[
"x:Coordinator/set",
{
"update": {
"singleton": {
"id": "id1"
}
}
},
"c1"
]
],
"using": [
"urn:ietf:params:jmap:core",
"urn:stalwart:jmap"
]
}'
CLI
stalwart-cli wraps the same JMAP calls. See the CLI reference for installation, authentication, and general usage.
Fetch
stalwart-cli get coordinator
Update
stalwart-cli update coordinator --field description='Updated'
Nested types
SecretKeyOptional
An optional secret value, or none.
None: No secret. No additional fields.Value: Secret value. Carries the fields ofSecretKeyValue.EnvironmentVariable: Secret read from environment variable. Carries the fields ofSecretKeyEnvironmentVariable.File: Secret read from file. Carries the fields ofSecretKeyFile.
SecretKeyValue
A secret value provided directly.
secret
Type:
String· required · secretPassword or secret value
SecretKeyEnvironmentVariable
A secret value read from an environment variable.
variableName
Type:
String· requiredEnvironment variable name to read the secret from
SecretKeyFile
A secret value read from a file.
filePath
Type:
String· requiredFile path to read the secret from
SecretTextOptional
An optional secret text value, or none.
None: No secret. No additional fields.Text: Secret value. Carries the fields ofSecretTextValue.EnvironmentVariable: Secret read from environment variable. Carries the fields ofSecretKeyEnvironmentVariable.File: Secret read from file. Carries the fields ofSecretKeyFile.
SecretTextValue
A secret text value provided directly.
secret
Type:
Text· required · secretPassword or secret value
Enums
RedisProtocol
| Value | Label |
|---|---|
resp2 | RESP2 |
resp3 | RESP3 |