Skip to main content
MoleSignal has a single configuration source: a TOML file, passed with molesignal --config /path/to/config.toml. Any field can be overridden by an environment variable of the form MS_<SECTION>.<FIELD> — the prefix is a single underscore, and section/field are joined with a dot.
# These two are equivalent to setting [http].port = 5081 and [store.meta].dsn = ...
export MS_HTTP.PORT=5081
export MS_STORE.META.DSN="postgres://user:pass@db:5432/molesignal"
The schema is defined in crates/config/src/settings.rs; the repo default is conf/config.toml.

Node

[node]
# Composable roles: standalone / router / ingester / querier / compactor / alert_manager
# `standalone` enables every role in one process.
roles = ["standalone"]
# Unique node id; left empty, a KSUID is generated at startup.
id = ""

HTTP and gRPC

[http]
bind = "0.0.0.0"
port = 5080
gzip = true              # disable behind a reverse proxy

[grpc]
bind = "0.0.0.0"
port = 5082
max_message_size_mb = 32

TLS + automatic certificates

[http.tls]
enabled = false              # master switch; when false, plain HTTP only
plain_port = 80              # HTTP-01 challenge + 80→443 redirect
port = 443                   # rustls serving port
acme_directory = "production" # production | staging | a custom CA URL (e.g. Pebble)
account_email = ""           # required by Let's Encrypt
key_storage_dir = "/var/lib/molesignal/acme"

Storage

[store.meta]
backend = "postgres"
dsn = "postgres://molesignal:molesignal@localhost:5432/molesignal"
max_connections = 16

[store.object]
# Columnar data landing: local | s3 | azure | gcs
backend = "local"
root = "./data/objects"
# For S3 / S3-compatible (MinIO, R2, Aliyun OSS):
# bucket = "molesignal"
# region = "us-east-1"
# endpoint = ""            # e.g. http://localhost:9000 for MinIO
# access_key = ""
# secret_key = ""
# Credentials resolve in order: env > credentials_file > inline TOML.
# credentials_file = "/etc/molesignal/object-store.toml"
Azure uses AZURE_STORAGE_ACCOUNT / AZURE_STORAGE_ACCESS_KEY; GCS uses GOOGLE_APPLICATION_CREDENTIALS.

Telemetry (self-observability)

[telemetry]
log_level = "info"
log_format = "text"        # text | json
otlp_endpoint = ""         # empty → no trace export
metrics_enabled = true
log_output = "console"     # console | file
# log_directory = "logs"          # only when log_output = "file"
# log_rotation = "daily"          # minutely | hourly | daily | never
# log_max_files = 7

Functions

[functions]
# Opt-in JavaScript runtime. Requires the build feature
# `--features molesignal-bootstrap/js-runtime` as well.
js_runtime_enabled = false

Cache

A parquet disk cache is enabled by default (./data/cache/parquet, 10 GB LRU). Tune or disable it via [cache.disk_cache]. FileMeta cold-tier spillover serializes partitions older than [storage.file_meta_dump].cold_after_days (default 30) to object storage so the metadata table stays small.