Skip to main content
Version: 2.3-dev

Configuration

MaestroHub Lite can be configured using a YAML configuration file, environment variables, or a combination of both.

Configuration File

MaestroHub Lite ships with a bundled config.yaml that covers the most common settings pre-filled with their default values. You can use this file as a starting point and adjust the sections relevant to your deployment. For a full list of available fields, see the reference tables below.

At startup, MaestroHub Lite looks for a config.yaml in the same directory as the binary. To use a different location, pass the --config flag:

maestrohub-lite --config /path/to/config.yaml

Environment Variables

Every configuration key can be set via an environment variable using the MAESTROHUB_ prefix. The dotted YAML path is converted to uppercase with dots replaced by underscores:

  • http.portMAESTROHUB_HTTP_PORT
  • modules.auth.jwt.accessSecretMAESTROHUB_MODULES_AUTH_JWT_ACCESSSECRET

Precedence

When the same setting is defined in multiple places, the following precedence applies (highest to lowest):

  1. Environment variables
  2. Configuration file
  3. Built-in defaults

Reference

The tables below list every configuration field grouped by section.

http

Configures the built-in HTTP server that serves the API and UI.

KeyTypeDefaultDescription
hoststringlocalhostThe network address to listen on.
portint8080The TCP port to listen on.
readTimeoutduration30sThe maximum duration for reading an entire request including the body.
writeTimeoutduration30sThe maximum duration for writing a response.
shutdownTimeoutduration30sThe maximum duration to wait for in-flight requests during graceful shutdown.
corsOrigins[]string[*]The list of allowed origins for cross-origin requests. Use "*" to allow all.
Default YAML example
http:
host: localhost
port: 8080
readTimeout: 30s
writeTimeout: 30s
shutdownTimeout: 30s
corsOrigins: [*]

infrastructure

Configures connections to external services such as NATS. These connections are created once at startup and shared across all components.

KeyTypeDefaultDescription
enabledboolfalseActivates external infrastructure connections. When disabled, all components fall back to local in-memory implementations.
nats.urlstringnats://localhost:4222The NATS server address.
nats.usernamestring""For NATS authentication.
nats.passwordstring""For NATS authentication.
nats.namestringmaestrohub-liteThe client name sent to the NATS server for identification.
nats.maxReconnectsint-1The maximum number of reconnection attempts. Use -1 for unlimited.
nats.reconnectWaitduration2sThe delay between reconnection attempts.
Default YAML example
infrastructure:
enabled: false
nats:
url: nats://localhost:4222
username: ""
password: ""
name: maestrohub-lite
maxReconnects: -1
reconnectWait: 2s

messenger

Configures the internal messaging layer used for request-reply communication between components.

KeyTypeDefaultDescription
typestringlocalSelects the messenger backend: local for in-memory or nats for distributed.
nats.queueGroupstringmaestrohubThe NATS queue group name for load balancing across replicas.
nats.requestTimeoutduration30sThe maximum duration to wait for a reply.
Default YAML example
messenger:
type: local
nats:
queueGroup: maestrohub
requestTimeout: 30s

eventbus

Configures the event bus used for publishing and subscribing to domain events across components.

KeyTypeDefaultDescription
enabledbooltrueActivates the event bus.
typestringlocalSelects the event bus backend: local for in-memory or nats for distributed.
nats.serviceNamestringmaestrohubThe prefix used for NATS JetStream stream naming.
nats.handlerTimeoutduration5sThe maximum duration allowed for a single event handler execution.
local.bufferSizeint10000The capacity of the internal event queue.
local.maxWorkersint100The maximum number of concurrent event handler goroutines.
local.handlerTimeoutduration20sThe maximum duration allowed for a single event handler execution.
Default YAML example
eventbus:
enabled: true
type: local
nats:
serviceName: maestrohub
handlerTimeout: 5s
local:
bufferSize: 10000
maxWorkers: 100
handlerTimeout: 20s

coordination

Configures distributed coordination for multi-replica deployments, including leader election. Only needed when running more than one instance.

KeyTypeDefaultDescription
enabledboolfalseActivates distributed coordination.
typestringlocalSelects the coordination backend: local for single-instance or nats for distributed.
nats.bucketstringcoordinationThe NATS KV bucket name used for coordination state.
nats.replicaIdstringmaestrohub-liteThe unique identifier for this replica in the cluster.
nats.leaderTtlduration30sHow long a leader lease is valid before it must be renewed.
nats.leaderRenewIntervalduration10sHow often the current leader renews its lease.
Default YAML example
coordination:
enabled: false
type: local
nats:
bucket: coordination
replicaId: maestrohub-lite
leaderTtl: 30s
leaderRenewInterval: 10s

metrics

Configures application metrics collection and export.

KeyTypeDefaultDescription
enabledbooltrueActivates metrics collection.
modestringprometheusSelects the metrics backend: prometheus.
prometheus.namespacestringmaestrohubThe prefix added to all exported metric names.
Default YAML example
metrics:
enabled: true
mode: prometheus
prometheus:
namespace: maestrohub

queue

Configures the execution queue used for pipeline processing.

KeyTypeDefaultDescription
typestringlocalSelects the queue backend: local for in-memory.
local.workerCountint100The number of concurrent workers processing queued pipelines.
local.pollIntervalduration10msHow often idle workers check for new work.
local.handlerTimeoutduration5mThe maximum execution time allowed per pipeline run.
Default YAML example
queue:
type: local
local:
workerCount: 100
pollInterval: 10ms
handlerTimeout: 5m

logging

Configures structured logging output including console, database, and file destinations.

KeyTypeDefaultDescription
levelstringinfoSets the minimum log level: debug, info, warn, error
console.enabledbooltrueControls whether logs are written to stdout
console.jsonboolfalseOutputs logs as JSON instead of human-readable format. Enable when logs are parsed by external collectors (Fluentd, ELK).
database.typestringsqliteSelects the database storage type: sqlite or disabled.
database.enabledbooltrueControls whether logs are stored in a local database. Set true for standalone deployments, false when using external collectors. Ignored when Type is "memory".
database.pathstring./data/logs.dbTo the SQLite database file
database.tablestringlogsThe database table name for storing log entries.
database.bufferSizeint1024The number of log entries to buffer before flushing to the database.
database.retentionDurationduration24hHow long to keep logs before automatic cleanup.
file.enabledboolfalseControls whether logs are written to a file
file.pathstring""To the log file
file.maxSizeMBint0The maximum log file size in megabytes before rotation.
file.maxBackupsint0The number of rotated log files to retain.
file.maxAgeDaysint0The maximum number of days to retain rotated log files.
file.compressboolfalseEnables gzip compression of rotated files
fieldsmap[string]string{}Key-value pairs added to every log entry
Default YAML example
logging:
level: info
console:
enabled: true
json: false
database:
type: sqlite
enabled: true
path: ./data/logs.db
table: logs
bufferSize: 1024
retentionDuration: 24h
file:
enabled: false
path: ""
maxSizeMB: 0
maxBackups: 0
maxAgeDays: 0
compress: false
fields: {}

ui

Controls whether the embedded web UI is served alongside the API.

KeyTypeDefaultDescription
enabledbooltrueActivates the embedded web UI.
Default YAML example
ui:
enabled: true

mcp

Configures the Model Context Protocol (MCP) server endpoint.

KeyTypeDefaultDescription
enabledbooltrueActivates the MCP endpoint.
pathstring/mcpThe HTTP path where the MCP endpoint is served.
Default YAML example
mcp:
enabled: true
path: /mcp

modules.auth

Configures authentication including JWT tokens, password policies, and user storage.

KeyTypeDefaultDescription
enabledbooltrueActivates this module.
storageTypestringsqliteSelects the storage backend: sqlite or postgres.
sqlite.pathstring./data/auth.dbThe path to the SQLite database file.
sqlite.walModeboolfalseEnables Write-Ahead Logging for better concurrency.
postgres.hoststringlocalhostThe database server hostname.
postgres.portint5432The database server port.
postgres.databasestringmaestrohubThe database name.
postgres.usernamestringpostgresThe database user.
postgres.passwordstring""The database password.
postgres.sslModestringdisableThe SSL mode (disable, require, verify-ca, verify-full).
postgres.maxOpenConnsint10The maximum number of open connections.
postgres.maxIdleConnsint5The maximum number of idle connections.
jwt.accessSecretstring""The secret key for signing access tokens. Required.
jwt.refreshSecretstring""The secret key for signing refresh tokens. Required.
jwt.passwordResetSecretstring""The secret key for signing password reset tokens. Required.
jwt.accessTokenDurationduration15mThe lifetime of access tokens.
jwt.refreshTokenDurationduration24hThe lifetime of refresh tokens.
jwt.rememberMeRefreshDurationduration168hThe extended lifetime when "remember me" is enabled.
jwt.passwordResetDurationduration30mThe lifetime of password reset tokens.
password.minLengthint8The minimum password length required.
password.bcryptCostint12The cost factor for bcrypt hashing (higher = more secure but slower).
password.requireUppercasebooltrueRequires at least one uppercase letter.
password.requireLowercasebooltrueRequires at least one lowercase letter.
password.requireNumberbooltrueRequires at least one digit.
password.requireSpecialboolfalseRequires at least one special character.
authorization.enableAuditbooltrueEnables logging of authorization decisions.
authorization.cachePermissionsbooltrueEnables caching of user permissions.
authorization.cacheTTLduration5mThe time-to-live for cached permissions.
authorization.defaultDenyMessagestringAccess denied: insufficient permissionsThe message shown when access is denied.
oidc.enabledbooltrueDetermines whether OIDC authentication is active.
ldap.enabledbooltrueDetermines whether LDAP authentication is active.
saml.enabledbooltrueDetermines whether SAML authentication is active.
passwordResetURLstring""The base URL for password reset links.
Default YAML example
modules:
auth:
enabled: true
storageType: sqlite
sqlite:
path: ./data/auth.db
walMode: false
postgres:
host: localhost
port: 5432
database: maestrohub
username: postgres
password: ""
sslMode: disable
maxOpenConns: 10
maxIdleConns: 5
jwt:
accessSecret: ""
refreshSecret: ""
passwordResetSecret: ""
accessTokenDuration: 15m
refreshTokenDuration: 24h
rememberMeRefreshDuration: 168h
passwordResetDuration: 30m
password:
minLength: 8
bcryptCost: 12
requireUppercase: true
requireLowercase: true
requireNumber: true
requireSpecial: false
authorization:
enableAudit: true
cachePermissions: true
cacheTTL: 5m
defaultDenyMessage: Access denied: insufficient permissions
oidc:
enabled: true
ldap:
enabled: true
saml:
enabled: true
passwordResetURL: ""

modules.authz

Configures role-based access control (RBAC) and permission storage.

KeyTypeDefaultDescription
enabledbooltrueActivates this module.
storageTypestringsqliteSelects the storage backend: sqlite or postgres.
sqlite.pathstring./data/authz.dbThe path to the SQLite database file.
sqlite.walModeboolfalseEnables Write-Ahead Logging for better concurrency.
postgres.hoststringlocalhostThe database server hostname.
postgres.portint5432The database server port.
postgres.databasestringmaestrohubThe database name.
postgres.usernamestringpostgresThe database user.
postgres.passwordstring""The database password.
postgres.sslModestringdisableThe SSL mode (disable, require, verify-ca, verify-full).
postgres.maxOpenConnsint10The maximum number of open connections.
postgres.maxIdleConnsint5The maximum number of idle connections.
modelTypestringdefaultDetermines which Casbin model to use: default, ownership, or simple.
initializeBuiltInRolesbooltrueCreates built-in roles on startup.
Default YAML example
modules:
authz:
enabled: true
storageType: sqlite
sqlite:
path: ./data/authz.db
walMode: false
postgres:
host: localhost
port: 5432
database: maestrohub
username: postgres
password: ""
sslMode: disable
maxOpenConns: 10
maxIdleConns: 5
modelType: default
initializeBuiltInRoles: true

modules.oauth2

Configures OAuth2 and OpenID Connect (OIDC) authentication providers.

KeyTypeDefaultDescription
enabledbooltrueActivates this module.
issuerstring""The OAuth2/OIDC issuer URL.
secretstring""The fosite system secret for HMAC operations (must be 32+ bytes).
storageTypestringsqliteSelects the storage backend: sqlite.
sqlite.pathstring./data/oauth2.dbThe path to the SQLite database file.
accessTokenTTLduration1hThe lifetime of access tokens.
refreshTokenTTLduration24hThe lifetime of refresh tokens.
authCodeTTLduration10mThe lifetime of authorization codes.
Default YAML example
modules:
oauth2:
enabled: true
issuer: ""
secret: ""
storageType: sqlite
sqlite:
path: ./data/oauth2.db
accessTokenTTL: 1h
refreshTokenTTL: 24h
authCodeTTL: 10m

modules.connectors

Configures connector management and storage for external system integrations.

KeyTypeDefaultDescription
enabledbooltrueActivates this module.
storageTypestringsqliteSelects the storage backend: sqlite or postgres.
sqlite.pathstring./data/connectors.dbThe path to the SQLite database file.
sqlite.walModeboolfalseEnables Write-Ahead Logging for better concurrency.
postgres.hoststringlocalhostThe database server hostname.
postgres.portint5432The database server port.
postgres.databasestringmaestrohubThe database name.
postgres.usernamestringpostgresThe database user.
postgres.passwordstring""The database password.
postgres.sslModestringdisableThe SSL mode (disable, require, verify-ca, verify-full).
postgres.maxOpenConnsint10The maximum number of open connections.
postgres.maxIdleConnsint5The maximum number of idle connections.
encryptionKeystring""The AES key for encrypting connection secrets at rest. Required. Must be exactly 16, 24, or 32 bytes (for AES-128, AES-192, or AES-256).
runtimeEnabledbooltrueControls whether connection runtime management is active
autoStartConnectionsbooltrueControls whether connections auto-start on module init
ownershipEnabledboolfalseControls whether ownership checking is enforced. When false, all connections run on all replicas (single-binary mode). When true, exclusive connections are coordinated via the OwnershipManager.
Default YAML example
modules:
connectors:
enabled: true
storageType: sqlite
sqlite:
path: ./data/connectors.db
walMode: false
postgres:
host: localhost
port: 5432
database: maestrohub
username: postgres
password: ""
sslMode: disable
maxOpenConns: 10
maxIdleConns: 5
encryptionKey: ""
runtimeEnabled: true
autoStartConnections: true
ownershipEnabled: false

modules.dependencies

Configures dependency tracking between resources.

KeyTypeDefaultDescription
enabledbooltrueActivates this module.
storageTypestringsqliteSelects the storage backend: sqlite or postgres.
sqlite.pathstring./data/dependencies.dbThe path to the SQLite database file.
sqlite.walModeboolfalseEnables Write-Ahead Logging for better concurrency.
postgres.hoststringlocalhostThe database server hostname.
postgres.portint5432The database server port.
postgres.databasestringmaestrohubThe database name.
postgres.usernamestringpostgresThe database user.
postgres.passwordstring""The database password.
postgres.sslModestringdisableThe SSL mode (disable, require, verify-ca, verify-full).
postgres.maxOpenConnsint10The maximum number of open connections.
postgres.maxIdleConnsint5The maximum number of idle connections.
Default YAML example
modules:
dependencies:
enabled: true
storageType: sqlite
sqlite:
path: ./data/dependencies.db
walMode: false
postgres:
host: localhost
port: 5432
database: maestrohub
username: postgres
password: ""
sslMode: disable
maxOpenConns: 10
maxIdleConns: 5

modules.email

Configures the email notification service and template storage.

KeyTypeDefaultDescription
enabledbooltrueActivates this module.
storageTypestringsqliteSelects the storage backend: sqlite or postgres.
sqlite.pathstring./data/email.dbThe path to the SQLite database file.
sqlite.walModeboolfalseEnables Write-Ahead Logging for better concurrency.
postgres.hoststringlocalhostThe database server hostname.
postgres.portint5432The database server port.
postgres.databasestringmaestrohubThe database name.
postgres.usernamestringpostgresThe database user.
postgres.passwordstring""The database password.
postgres.sslModestringdisableThe SSL mode (disable, require, verify-ca, verify-full).
postgres.maxOpenConnsint10The maximum number of open connections.
postgres.maxIdleConnsint5The maximum number of idle connections.
Default YAML example
modules:
email:
enabled: true
storageType: sqlite
sqlite:
path: ./data/email.db
walMode: false
postgres:
host: localhost
port: 5432
database: maestrohub
username: postgres
password: ""
sslMode: disable
maxOpenConns: 10
maxIdleConns: 5

modules.license

Configures license management and enforcement.

KeyTypeDefaultDescription
enabledbooltrueActivates this module.
storageTypestringsqliteSelects the storage backend: sqlite or postgres.
sqlite.pathstring./data/license.dbThe path to the SQLite database file.
sqlite.walModeboolfalseEnables Write-Ahead Logging for better concurrency.
postgres.hoststringlocalhostThe database server hostname.
postgres.portint5432The database server port.
postgres.databasestringmaestrohubThe database name.
postgres.usernamestringpostgresThe database user.
postgres.passwordstring""The database password.
postgres.sslModestringdisableThe SSL mode (disable, require, verify-ca, verify-full).
postgres.maxOpenConnsint10The maximum number of open connections.
postgres.maxIdleConnsint5The maximum number of idle connections.
Default YAML example
modules:
license:
enabled: true
storageType: sqlite
sqlite:
path: ./data/license.db
walMode: false
postgres:
host: localhost
port: 5432
database: maestrohub
username: postgres
password: ""
sslMode: disable
maxOpenConns: 10
maxIdleConns: 5

modules.logs

Configures structured log collection and storage for pipeline execution and system events.

KeyTypeDefaultDescription
enabledbooltrueActivates this module.
providerstringsqliteSpecifies which log provider to use: memory, sqlite, postgres, or elasticsearch
sqlite.pathstring./data/logs.dbThe path to the SQLite database file
sqlite.tableNamestringlogsThe name of the logs table.
sqlite.maxLogsWindowint10000The maximum result window for pagination.
postgres.hoststringlocalhostThe database server hostname
postgres.portint5432The database server port
postgres.databasestringmaestrohub_logsThe database name
postgres.usernamestringpostgresThe database user
postgres.passwordstring""The database password
postgres.sslModestringdisableThe SSL mode (disable, require, verify-ca, verify-full)
postgres.maxOpenConnsint10The maximum number of open connections
postgres.maxIdleConnsint5The maximum number of idle connections
postgres.tableNamestringlogsThe name of the logs table.
postgres.maxLogsWindowint10000The maximum result window for pagination.
elasticsearch.urlstringhttp://localhost:9200The Elasticsearch server URL
elasticsearch.indexPatternstringlogs-*The pattern for log indices (e.g., "logs-*")
elasticsearch.usernamestring""For authentication (optional)
elasticsearch.passwordstring""For authentication (optional)
elasticsearch.apiKeystring""For authentication (optional, alternative to username/password)
elasticsearch.tlsSkipVerifyboolfalseSkips TLS certificate verification (not recommended for production)
Default YAML example
modules:
logs:
enabled: true
provider: sqlite
sqlite:
path: ./data/logs.db
tableName: logs
maxLogsWindow: 10000
postgres:
host: localhost
port: 5432
database: maestrohub_logs
username: postgres
password: ""
sslMode: disable
maxOpenConns: 10
maxIdleConns: 5
tableName: logs
maxLogsWindow: 10000
elasticsearch:
url: http://localhost:9200
indexPattern: logs-*
username: ""
password: ""
apiKey: ""
tlsSkipVerify: false

modules.organizations

Configures multi-tenant organization management.

KeyTypeDefaultDescription
enabledbooltrueActivates this module.
storageTypestringsqliteSelects the storage backend: sqlite or postgres.
sqlite.pathstring./data/organizations.dbThe path to the SQLite database file.
sqlite.walModeboolfalseEnables Write-Ahead Logging for better concurrency.
postgres.hoststringlocalhostThe database server hostname.
postgres.portint5432The database server port.
postgres.databasestringmaestrohubThe database name.
postgres.usernamestringpostgresThe database user.
postgres.passwordstring""The database password.
postgres.sslModestringdisableThe SSL mode (disable, require, verify-ca, verify-full).
postgres.maxOpenConnsint10The maximum number of open connections.
postgres.maxIdleConnsint5The maximum number of idle connections.
Default YAML example
modules:
organizations:
enabled: true
storageType: sqlite
sqlite:
path: ./data/organizations.db
walMode: false
postgres:
host: localhost
port: 5432
database: maestrohub
username: postgres
password: ""
sslMode: disable
maxOpenConns: 10
maxIdleConns: 5

modules.phonehome

Configures anonymous usage telemetry reporting.

KeyTypeDefaultDescription
enabledbooltrueActivates this module.
Default YAML example
modules:
phonehome:
enabled: true

modules.pipelineEngine

Configures the pipeline execution engine and run history storage.

KeyTypeDefaultDescription
enabledbooltrueActivates this module.
storageTypestringsqliteSelects the storage backend: sqlite, postgres, or memory.
sqlite.pathstring./data/pipeline.dbThe path to the SQLite database file.
sqlite.walModeboolfalseEnables Write-Ahead Logging for better concurrency.
postgres.hoststringlocalhostThe database server hostname.
postgres.portint5432The database server port.
postgres.databasestringmaestrohubThe database name.
postgres.usernamestringpostgresThe database user.
postgres.passwordstring""The database password.
postgres.sslModestringdisableThe SSL mode (disable, require, verify-ca, verify-full).
postgres.maxOpenConnsint10The maximum number of open connections.
postgres.maxIdleConnsint5The maximum number of idle connections.
executionRepository.typestringsqliteSelects the execution repository backend: memory or sqlite.
executionRepository.memory.maxItemsint10000The maximum number of executions to keep. When the limit is reached, the oldest completed/failed executions are evicted. Set to 0 for unlimited.
executionRepository.sqlite.pathstring./data/execution.dbThe path to the SQLite database file for execution history.
executionRepository.sqlite.retentionduration24hThe duration to retain execution history. Executions older than this will be automatically deleted. Set to 0 for unlimited retention.
Default YAML example
modules:
pipelineEngine:
enabled: true
storageType: sqlite
sqlite:
path: ./data/pipeline.db
walMode: false
postgres:
host: localhost
port: 5432
database: maestrohub
username: postgres
password: ""
sslMode: disable
maxOpenConns: 10
maxIdleConns: 5
executionRepository:
type: sqlite
memory:
maxItems: 10000
sqlite:
path: ./data/execution.db
retention: 24h

modules.scheduler

Configures the cron-based pipeline scheduler.

KeyTypeDefaultDescription
enabledbooltrueActivates this module.
replicaIdstringmaestrohub-liteThe unique identifier for this scheduler instance. Used for leader election (distributed mode) and execution request tracking. Falls back to hostname if not specified.
Default YAML example
modules:
scheduler:
enabled: true
replicaId: maestrohub-lite

modules.universalSearch

Configures full-text search across all resources.

KeyTypeDefaultDescription
enabledbooltrueActivates this module.
storageTypestringsqliteSelects the storage backend: sqlite or elasticsearch.
sqlite.pathstring./data/search.dbThe path to the SQLite database file. Use ":memory:" for an in-memory database.
sqlite.walModeboolfalseEnables Write-Ahead Logging for better concurrency.
postgres.hoststringlocalhostThe database server hostname.
postgres.portint5432The database server port.
postgres.databasestringmaestrohubThe database name.
postgres.usernamestringpostgresThe database user.
postgres.passwordstring""The database password.
postgres.sslModestringdisableThe SSL mode (disable, require, verify-ca, verify-full).
postgres.maxOpenConnsint10The maximum number of open connections.
postgres.maxIdleConnsint5The maximum number of idle connections.
elasticsearch.urls[]string[http://localhost:9200]A list of Elasticsearch node URLs. Example: ["http://localhost:9200"]
elasticsearch.indexstringmaestrohub_searchThe name of the Elasticsearch index to use.
elasticsearch.usernamestring""For basic authentication (optional).
elasticsearch.passwordstring""For basic authentication (optional).
elasticsearch.apiKeystring""For API key authentication (optional, alternative to username/password).
elasticsearch.cloudIdstring""For Elastic Cloud deployments (optional).
elasticsearch.tls.enabledboolfalseDetermines whether TLS is enabled.
elasticsearch.tls.insecureSkipVerifyboolfalseSkips certificate verification (not recommended for production).
elasticsearch.tls.caCertPathstring""The path to the CA certificate file.
elasticsearch.tls.certPathstring""The path to the client certificate file.
elasticsearch.tls.keyPathstring""The path to the client key file.
Default YAML example
modules:
universalSearch:
enabled: true
storageType: sqlite
sqlite:
path: ./data/search.db
walMode: false
postgres:
host: localhost
port: 5432
database: maestrohub
username: postgres
password: ""
sslMode: disable
maxOpenConns: 10
maxIdleConns: 5
elasticsearch:
urls: [http://localhost:9200]
index: maestrohub_search
username: ""
password: ""
apiKey: ""
cloudId: ""
tls:
enabled: false
insecureSkipVerify: false
caCertPath: ""
certPath: ""
keyPath: ""

modules.uns

Configures the Unified Namespace for real-time data collection via MQTT and OPC UA.

KeyTypeDefaultDescription
enabledbooltrueActivates this module.
storage.typestringpebbleSelects the storage backend: memory, timescale, or pebble.
storage.timescale.hoststringlocalhostThe database server hostname.
storage.timescale.portint5432The database server port.
storage.timescale.databasestringunsThe database name.
storage.timescale.usernamestring""For authentication.
storage.timescale.passwordstring""For authentication.
storage.timescale.sslModestringdisableThe SSL mode: disable, require
storage.timescale.maxOpenConnsint50The maximum number of open connections in the pool.
storage.timescale.chunkTimeIntervalstring1 dayThe time interval for hypertable chunks. Valid values: 1 day, 3 days, 7 days
storage.timescale.retentionPolicystring7 daysThe data retention period. Valid values: 1 day, 3 days, 7 days, `` (no retention)
storage.timescale.partitionStrategystringtimeDetermines how data is partitioned. Valid values: time (partition by time only), time_topic (partition by time and topic)
storage.pebble.pathstringdata/unsdataThe directory path for PebbleDB data storage.
storage.pebble.metadataPathstringdata/uns.dbThe directory path for SQLite metadata storage.
storage.pebble.retentionduration24hThe data retention duration.
mqtt.modestringembeddedSelects the MQTT mode: embedded, external, or disabled.
mqtt.embedded.tcpPortint1883The TCP listener port for MQTT connections.
mqtt.embedded.hoststring0.0.0.0The address to bind to.
mqtt.embedded.auth.enabledboolfalseDetermines whether authentication is required.
mqtt.embedded.auth.usernamestring""For authentication.
mqtt.embedded.auth.passwordstring""For authentication.
mqtt.embedded.auth.allowAnonymousboolfalseAllows connections without credentials when auth is enabled.
mqtt.external.urlstringtcp://localhost:1883The broker connection URL. Examples: "tcp://broker:1883", "ssl://broker:8883", "ws://broker:8083/mqtt"
mqtt.external.clientIdstring""The MQTT client ID.
mqtt.external.usernamestring""For authentication (optional).
mqtt.external.passwordstring""For authentication (optional).
mqtt.external.tls.enabledboolfalseDetermines whether TLS is enabled.
mqtt.external.tls.insecureSkipVerifyboolfalseSkips certificate verification (not recommended for production).
mqtt.external.tls.caCertPathstring""The path to the CA certificate file.
mqtt.external.tls.certPathstring""The path to the client certificate file.
mqtt.external.tls.keyPathstring""The path to the client key file.
mqtt.external.keepAliveint60The keep-alive interval in seconds.
mqtt.external.cleanSessionbooltrueDetermines whether to start a clean session.
mqtt.external.autoReconnectbooltrueEnables automatic reconnection.
encryptionKeystring""The AES key for encrypting sensitive fields at rest. Required. Must be exactly 16, 24, or 32 bytes (for AES-128, AES-192, or AES-256).
Default YAML example
modules:
uns:
enabled: true
storage:
type: pebble
timescale:
host: localhost
port: 5432
database: uns
username: ""
password: ""
sslMode: disable
maxOpenConns: 50
chunkTimeInterval: 1 day
retentionPolicy: 7 days
partitionStrategy: time
pebble:
path: data/unsdata
metadataPath: data/uns.db
retention: 24h
mqtt:
mode: embedded
embedded:
tcpPort: 1883
host: 0.0.0.0
auth:
enabled: false
username: ""
password: ""
allowAnonymous: false
external:
url: tcp://localhost:1883
clientId: ""
username: ""
password: ""
tls:
enabled: false
insecureSkipVerify: false
caCertPath: ""
certPath: ""
keyPath: ""
keepAlive: 60
cleanSession: true
autoReconnect: true
encryptionKey: ""

modules.websocket

Configures WebSocket support for real-time client notifications and live updates.

KeyTypeDefaultDescription
enabledbooltrueActivates this module.
writeWaitduration10sThe time allowed to write a message to the peer.
pongWaitduration1mThe time allowed to read the next pong message from the peer.
pingPeriodduration54sThe interval for sending ping messages.
maxMessageSizeint6465536The maximum size in bytes of incoming messages.
sendChannelBufferint256The buffer size for the send channel.
readBufferSizeint4096The size of the read buffer for WebSocket connections.
writeBufferSizeint16384The size of the write buffer for WebSocket connections.
enableSmartSubscriptionsbooltrueEnables subscribing to EventBus only when clients are interested.
Default YAML example
modules:
websocket:
enabled: true
writeWait: 10s
pongWait: 1m
pingPeriod: 54s
maxMessageSize: 65536
sendChannelBuffer: 256
readBufferSize: 4096
writeBufferSize: 16384
enableSmartSubscriptions: true