Skip to main content
Start MoleSignal with one TOML file:
Configuration is applied in this order, with later sources overriding earlier ones:
  1. built-in Rust defaults;
  2. the file passed through --config;
  3. MS_ environment variables.
Structured environment names use a dot between sections:
The schema is defined under src/config/. The repository’s maintained production-oriented sample is conf/config.toml; review the file when upgrading because newly added settings receive code defaults when absent.

Secret-only values

Keep these outside TOML when possible: Production Mole Agent providers should normally be created in Mole Agent → Agent settings. Provider keys are encrypted, write-only, and resolved from PostgreSQL before the environment fallback.

Node roles

Choose from standalone, router, intake, querier, compactor, and alert_manager. standalone composes the complete service. An empty id is generated at startup. Shutdown waits up to drain_timeout_secs for pending intake data to flush.

Network listeners

HTTP and TLS

Set external_url to the public origin when a reverse proxy changes the host or scheme. Enabling TLS starts the ACME HTTP-01 listener and rustls SNI endpoint.

Internal gRPC, Flight SQL, and OTLP

Do not expose 5082 to untrusted networks. External OTLP and Flight SQL require bearer authentication; terminate TLS before public exposure.

Metadata and object storage

Built-in development defaults use SQLite and the local filesystem. The repository sample uses PostgreSQL for metadata.
Object backends are local, s3, azure, and gcs. Credential precedence is environment, credentials file, then inline TOML. Use shared object storage and PostgreSQL for multi-node deployments.

Intake, WAL, query, and retention

concurrency = 0 uses the available CPUs. A query estimate above auto_async_threshold_rows becomes an asynchronous search job; set the threshold to 0 to disable automatic conversion. Per-stream retention overrides the compactor default.

Cluster and rate limits

Set advertise_addr to an address reachable by every peer. A rate of 0 disables that limit. Remote cluster definitions and organization mappings are managed in the database, not this block.

Alerts and email

SMTP is enabled when host is non-empty. Slack, webhook channels, notification templates, schedules, and escalation policies are organization resources managed through the UI or API.

Authentication and licenses

JWT signing keys are persisted in PostgreSQL. The old [auth].jwt_secret setting is ignored and should be removed. License content is never embedded in TOML. The two license switches only control whether MS_LICENSE_FILE may seed an empty database or recover from a broken active version.

Self-observability and profiling

Process logs use [telemetry]. Tail sampling, protected _sys intake, external trace export, and the pprof listener use these nested sections:
The complete tail limits, slow thresholds, per-signal retention, exporter TLS, and profile schedule are shown in conf/config.toml. See Self-observability before changing these settings.

Search jobs, cache, and cold metadata

The following sections tune query admission and operational storage:
  • [search.admission] sets node and cluster concurrency by workgroup.
  • [search] max_result_rows guards unbounded non-aggregate results.
  • [search.stream_agg_cache] caches closed PromQL windows; capacity = 0 disables the cache.
  • [search_jobs] controls worker count, idle polling, and cleanup.
  • [cache.*] sizes FileMeta, Parquet metadata, query-result, Tantivy, footer, and cold-dump caches.
  • [cache.disk_cache] max_size_gb = 0 disables the local Parquet cache.
  • [storage.file_meta_dump] moves old FileMeta partitions to object storage.
Use the canonical sample for the full cache keys and defaults.

Functions, reports, and Agent

VRL is always available. JavaScript requires a build with js-runtime and has no separate runtime configuration switch. llm_eval_enabled permits per-event model evaluation in pipelines and can increase intake latency and cost. PDF and PNG reports require an enabled renderer and reachable Web base_url. [agent].enabled is a local development unlock. Production uses a signed agent entitlement plus IAM permissions. Model providers, prompts, tools, MCP servers, and approval policy are stored in PostgreSQL and managed in the product.

Database-managed settings

Do not add removed TOML sections for SSO or product policy. OIDC/SAML providers, signup and sharing policy, remote clusters, domains, cipher keys, model pricing, Agent settings, channels, and most other organization configuration are stored in PostgreSQL and changed through the UI or API.
Last modified on August 9, 2026