Skip to content

Settings reference

IndraMQTT settings reference

Every setting has exactly one typed home in the configuration schema. Wrong types and out-of-range values are startup errors naming the setting.

flowchart LR
G0["node + operate"] -- "set" --> Kernel["kernel"]
G1["listeners"] -- "set" --> Kernel["kernel"]
G2["session + quotas"] -- "set" --> Kernel["kernel"]
G3["rules + delayed"] -- "set" --> Kernel["kernel"]
G4["auth + user stores"] -- "set" --> Kernel["kernel"]

node

SettingTypeDefaultRangeDescription
node.idstringindra-node-1stringUnique identifier for this broker node within the cluster.
node.data_dirstring./datastringDirectory holding kernel persistent state (state.toml). Created on boot when missing.
node.brokerlink_bindstring127.0.0.1:18883stringDeprecated. Ignored. The kernel serves clients directly.

listeners

SettingTypeDefaultRangeDescription
listeners.tcp.enabledbooleantruebooleanWhether the plaintext MQTT listener accepts connections.
listeners.tcp.bindstring0.0.0.0:1883stringBind address for the plaintext MQTT listener.
listeners.tcp.max_connectionsinteger10000001..=10000000Maximum concurrent connections on the plaintext MQTT listener.
listeners.tcp.backloginteger10241..=65536Listener accept backlog for the plaintext MQTT listener.
listeners.tcp.nativebooleanfalsebooleanDeprecated. Ignored. The kernel always serves this listener.
listeners.tls.enabledbooleanfalsebooleanWhether the secure TLS MQTT listener accepts connections.
listeners.tls.bindstring0.0.0.0:8883stringBind address for the secure TLS MQTT listener.
listeners.tls.cert_filestring“stringPath to the PEM server certificate for the TLS listener.
listeners.tls.key_filestring“stringPath to the PEM private key for the TLS listener.
listeners.tls.nativebooleanfalsebooleanDeprecated. Ignored. The kernel always serves this listener.
listeners.tls.psk_enabledbooleanfalsebooleanWhether the kernel TLS listener accepts pre-shared-key handshakes. Off keeps certificate handshakes unchanged. On serves PSK suites from the identity store with no certificate.
listeners.tls.psk_keys_filestring“stringPath to the PSK identity file of the kernel TLS listener. Use it only when PSK is on. Empty keeps the store empty, so every handshake fails closed.
listeners.tls.verify_client_certbooleanfalsebooleanWhether the TLS listener requests and verifies a client certificate.
listeners.tls.verifystringverify_none[“verify_none”,“verify_peer”]Client certificate chain check mode of the TLS listener.
listeners.tls.cacertfilestring“stringCA file for client certificate checks of the TLS listener.
listeners.tls.fail_if_no_peer_certbooleanfalsebooleanWhether the TLS listener refuses a handshake without a certificate.
listeners.tls.peer_cert_as_usernamestringdisabled[“disabled”,“cn”,“dn”]Source for the bind username from the client certificate.
listeners.tls.peer_cert_as_clientidstringdisabled[“disabled”,“cn”,“dn”]Source for the bind client identifier from the client certificate.
listeners.ws.enabledbooleantruebooleanWhether the MQTT-over-WebSocket listener accepts connections.
listeners.ws.bindstring0.0.0.0:8083stringBind address for the MQTT-over-WebSocket listener.
listeners.ws.pathstring/mqttstringHTTP path serving MQTT-over-WebSocket traffic.
listeners.ws.nativebooleanfalsebooleanDeprecated. Ignored. The kernel always serves this listener.
listeners.wss.enabledbooleanfalsebooleanWhether the secure WebSocket listener accepts connections.
listeners.wss.bindstring0.0.0.0:8084stringBind address for the secure WebSocket listener.
listeners.wss.pathstring/mqttstringHTTP path serving secure WebSocket traffic.
listeners.wss.cert_filestring“stringPath to the PEM server certificate for the secure WebSocket listener.
listeners.wss.key_filestring“stringPath to the PEM private key for the secure WebSocket listener.
listeners.wss.nativebooleanfalsebooleanDeprecated. Ignored. The kernel always serves this listener.
listeners.wss.verify_client_certbooleanfalsebooleanWhether the secure WebSocket listener requests and verifies a client certificate.
listeners.wss.verifystringverify_none[“verify_none”,“verify_peer”]Client certificate chain check mode of the secure WebSocket listener.
listeners.wss.cacertfilestring“stringCA file for client certificate checks of the secure WebSocket listener.
listeners.wss.fail_if_no_peer_certbooleanfalsebooleanWhether the secure WebSocket listener refuses a handshake without a certificate.
listeners.wss.peer_cert_as_usernamestringdisabled[“disabled”,“cn”,“dn”]Source for the bind username from the client certificate.
listeners.wss.peer_cert_as_clientidstringdisabled[“disabled”,“cn”,“dn”]Source for the bind client identifier from the client certificate.
listeners.api.enabledbooleantruebooleanWhether the management REST API and dashboard serve requests.
listeners.api.bindstring0.0.0.0:18083stringBind address for the management REST API. Empty disables the API.

quotas

SettingTypeDefaultRangeDescription
quotas.default_max_connectionsinteger100000..=1000000Default max connections per authenticated username (0 = unlimited).
quotas.default_max_publish_rateinteger500000..=10000000Default token-bucket publish rate limit in messages per second (0 = unlimited).
quotas.burst_multipliernumber2.01.0..=10.0Token bucket burst multiplier (allows bursts up to burst times rate).
quotas.max_connections_per_tenantinteger00..=1000000Default max live connections per tenant (0 = unlimited).
quotas.max_sessions_per_tenantinteger00..=100000Default max sessions per tenant (0 = unlimited).
quotas.max_retained_per_tenantinteger00..=100000Default max retained topics per tenant (0 = unlimited).

session

SettingTypeDefaultRangeDescription
session.max_session_expiry_secsinteger864000..=2592000Max session expiry interval in seconds.
session.max_offline_queueinteger500001..=1000000Maximum queued offline messages per session.
session.max_inflight_messagesinteger655351..=65535Maximum inflight unacknowledged QoS 1 and QoS 2 messages.
session.max_qos0_backloginteger10001..=100000Per-subscriber QoS 0 egress backlog bound; past it the oldest queued QoS 0 frame drops.
session.max_qos1_inflightinteger1001..=100000Per-session QoS 1 inflight window bound.
session.max_qos1_spillinteger10001..=100000Per-session QoS 1 spill bound past the window.
session.topic_alias_maximuminteger100..=65535Inbound topic-alias maximum advertised in CONNACK.
session.max_packet_sizeinteger10485761..=268435455Largest MQTT packet in bytes. Sets the read limit and the WS frame cap. Advertised in CONNACK.
session.keep_alive_gracenumber1.51.0..=5.0Keep-alive grace multiplier before disconnect.

logging

SettingTypeDefaultRangeDescription
logging.levelstringinfo[“trace”,“debug”,“info”,“warn”,“error”]Logging verbosity for the kernel (trace, debug, info, warn, error).

rules_engine

SettingTypeDefaultRangeDescription
rules_engine.window_channel_depthinteger655361..=1000000Ingress ring buffer channel depth for stateful window worker tasks.
rules_engine.backpressure_policystringDropOldest[“Block”,“DropNewest”,“DropOldest”,“SpillToDisk”,“RejectPublisher”]Default memory backpressure policy when the rule buffer is full.
rules_engine.spill_dirstring“stringRule ingress spill directory.

auth

SettingTypeDefaultRangeDescription
auth.enabledbooleantruebooleanWhether authentication checks apply to client connects.
auth.password_hashstringsha256[“sha256”,“bcrypt”]Password hashing algorithm for stored credentials.
auth.allow_anonymousbooleanfalsebooleanWhether anonymous connections are accepted while no users are configured.
auth.superusersarray["admin","root"]arraySuperuser usernames bypassing ACL rules.

cluster

SettingTypeDefaultRangeDescription
cluster.enabledbooleanfalsebooleanRefused clustering switch. The broker fails boot when true.
cluster.bindstring127.0.0.1:19883stringCluster SWIM UDP bind address for peer discovery and membership.
cluster.gossip_bindstring0.0.0.0:7946stringAccepted gossip bind. The broker stores it. It binds clustering from —cluster-bind only.
cluster.quic_bindstring0.0.0.0:9092stringAccepted data plane bind. The broker stores it. It binds clustering from —cluster-bind only.
cluster.seed_nodesarray[]arrayRefused seed list. The broker fails boot when not empty.

licence

SettingTypeDefaultRangeDescription
licence.license_filestring/etc/indramqtt/license.keystringPath to the enterprise cryptographic license key file.
licence.license_keystring“stringEnterprise commercial license key for multi-node clustering.
licence.trusted_keys_pathstring“stringTrusted licence-signing keys: a JSON file or directory of JSON files.
licence.request_outstring“stringWrite the installation licence request to this path and exit.
licence.install_filestring“stringInstall the licence token read from this path and exit.
licence.expiry_warn_daysinteger300..=365Days before expiry that the approaching-expiry alarm and log warning start.

gateway

SettingTypeDefaultRangeDescription
gateway.coap_bindstring“stringCoAP gateway UDP listen address. Empty disables the gateway.

persistence

SettingTypeDefaultRangeDescription
persistence.stream_dirstring“stringDurable stream journal directory. Empty disables journaling.

ldap

SettingTypeDefaultRangeDescription
ldap.server_urlstring“stringDirectory server URL for LDAP authentication. Empty disables LDAP.
ldap.base_dnstring“stringBase DN under which directory users are searched.
ldap.bind_dnstring“stringService account DN used for the initial bind plus search.
ldap.bind_passwordstring“stringService account password for the initial bind.
ldap.user_filterstring(uid={username})stringUser search filter with a {username} placeholder, escaped per RFC 4515.
ldap.group_attributestringmemberOfstringUser-entry attribute listing directory groups.
ldap.required_groupstring“stringRequired group DN: the entry must list this DN to connect.
ldap.ca_cert_pathstring“stringPath to a PEM CA certificate for private directories.
ldap.pool_sizeinteger81..=32Bound on concurrent directory authentications.
ldap.connect_timeout_msinteger5000100..=60000Timeout covering TCP connect plus TLS handshake.
ldap.read_timeout_msinteger5000100..=60000Timeout covering each directory bind/search round-trip.

kerberos

SettingTypeDefaultRangeDescription
kerberos.keytab_pathstring“stringKeytab file for Kerberos authentication. Empty disables Kerberos.
kerberos.service_principalstring“stringService principal name held in the keytab.
kerberos.realmstring“stringExpected service realm. Empty disables the realm check on the service name.
kerberos.allowed_realmsarray[]arrayTrusted client realms. Empty allows any realm that verifies.
kerberos.clock_skew_secsinteger3001..=3600Clock-skew allowance in seconds for ticket validity and authenticator timestamps.
kerberos.role_mapstring“stringComma-separated principal=role mappings for verified client principals.
kerberos.replay_max_entriesinteger102416..=8192Replay-cache bound for Kerberos authenticators.

delayed

SettingTypeDefaultRangeDescription
delayed.max_secsinteger864001..=86400Upper bound for delayed deferrals in seconds.

observability

SettingTypeDefaultRangeDescription
observability.monitor_sample_secsinteger100..=3600Monitor sampling interval in seconds.

mcp

SettingTypeDefaultRangeDescription
mcp.enabledbooleantruebooleanWhether the MCP endpoint on the management listener serves tool calls.
mcp.read_onlybooleanfalsebooleanWhether the MCP endpoint refuses mutating tool calls; only read-only tools stay available.

jwks

SettingTypeDefaultRangeDescription
jwks.urlstring“stringJWKS endpoint URL for JWT authentication.
jwks.issuerstring“stringExpected JWT issuer.
jwks.audiencestring“stringExpected JWT audience.
jwks.refresh_period_secsinteger3001..=86400Seconds between background JWKS refreshes.
jwks.fetch_timeout_msinteger5000100..=60000Timeout for one JWKS fetch in milliseconds.
jwks.refresh_timeout_msinteger5000100..=60000Longest a CONNECT waits for a JWKS refresh in milliseconds.
jwks.cache_max_keysinteger321..=256Most JWKS keys held in the cache.
jwks.cache_ttl_secsinteger3001..=86400Seconds a cached JWKS key stays valid.
jwks.clock_skew_secsinteger600..=3600Clock skew tolerated when checking token times, in seconds.
jwks.ca_certstring“stringExtra CA certificate trusted for the JWKS endpoint.

dbauth

SettingTypeDefaultRangeDescription
dbauth.postgres_urlstring“stringPostgreSQL URL for database authentication.
dbauth.mysql_urlstring“stringMySQL URL for database authentication.
dbauth.redis_urlstring“stringRedis URL for database authentication.
dbauth.mongodb_urlstring“stringMongoDB URL for database authentication.
dbauth.pool_sizeinteger81..=32Connections kept per authentication database.
dbauth.connect_timeout_msinteger3000100..=60000Timeout for connecting to an authentication database in milliseconds.
dbauth.read_timeout_msinteger3000100..=60000Timeout for one authentication lookup in milliseconds.
dbauth.cache_sizeinteger10240..=100000Cached database verdicts per source; 0 disables the cache.
dbauth.cache_ttl_secsinteger600..=3600Seconds a cached database verdict stays valid.

webhook

SettingTypeDefaultRangeDescription
webhook.urlstring“stringHTTP webhook verdict endpoint.
webhook.pool_sizeinteger81..=32Concurrent requests allowed to the webhook endpoint.
webhook.timeout_msinteger2000100..=60000Timeout for one webhook request in milliseconds.
webhook.breaker_thresholdinteger51..=100Consecutive webhook failures that open the circuit breaker.
webhook.breaker_reset_msinteger300001000..=600000Milliseconds an open circuit breaker waits before retrying the webhook.
webhook.cache_sizeinteger10240..=100000Cached webhook verdicts; 0 disables the cache.
webhook.cache_ttl_secsinteger600..=3600Seconds a cached webhook verdict stays valid.

prometheus

SettingTypeDefaultRangeDescription
prometheus.enable_basic_authbooleantruebooleanRequire credentials on the scrape endpoints.
prometheus.latency_bucketsstring10ms, 100ms, 1s, 5s, 30sstringLatency histogram buckets for the exposition.
prometheus.push_gateway.enablebooleanfalsebooleanStored push intent. The broker runs no push client.
prometheus.push_gateway.urlstringhttp://127.0.0.1:9091stringPush target URL for the exposition.
prometheus.push_gateway.intervalstring15sstringPush interval for the exposition.
prometheus.push_gateway.job_namestring${name}/instance/${name}~${host}stringJob name template for each push.
prometheus.push_gateway.methodstringput[“put”,“post”]Push method for the exposition.
prometheus.collectors.mnesiastringdisabled[“enabled”,“disabled”]Stored collector name. The broker keeps it and shows it. No sampler reads it.
prometheus.collectors.vm_diststringdisabled[“enabled”,“disabled”]Stored collector name. The broker keeps it and shows it. No sampler reads it.
prometheus.collectors.vm_memorystringdisabled[“enabled”,“disabled”]Stored collector name. The broker keeps it and shows it. No sampler reads it.
prometheus.collectors.vm_msaccstringdisabled[“enabled”,“disabled”]Stored collector name. The broker keeps it and shows it. No sampler reads it.
prometheus.collectors.vm_statisticsstringdisabled[“enabled”,“disabled”]Stored collector name. The broker keeps it and shows it. No sampler reads it.
prometheus.collectors.vm_system_infostringdisabled[“enabled”,“disabled”]Stored collector name. The broker keeps it and shows it. No sampler reads it.