Skip to main content
MoleSignal is a single binary that serves every role; you choose which roles a process runs. That makes it equally comfortable as a one-command sandbox or a horizontally-scaled cluster.

Architecture

The crucial point: logs, metrics, and traces land in the same columnar files (different streams, one physical store), so a single query joins across them natively — no cross-store federation.

Node roles

RoleWhat it runsState
standaloneHTTP API + all workers in one process
routerReverse proxy + rate limitingstateless
ingesterData ingest + durable write-ahead log + buffer + periodic flush to columnar fileslocal log (≤ flush window)
querierDistributed scan endpoint + query executionstateless
compactorPeriodic file merge + retention cleanupstateless
alert_managerRule evaluation + escalation dispatchstateless
Roles are selected with the [node].roles config (or MS_NODE.ROLES). Only the ingester holds local state — a WAL within the flush window — so every other role scales freely.

Deployment options

The repo ships two profiles:
# Everything in one process — great for evaluation
docker compose -f deploy/docker/docker-compose.yaml --profile standalone up

# Separate roles — closer to production
docker compose -f deploy/docker/docker-compose.yaml --profile multirole up

Dependencies

  • Postgres — metadata (FileMeta, streams, alerts, identity).
  • Object storelocal, s3 (and S3-compatible: MinIO, R2, Aliyun OSS), azure, or gcs.

Operations

  • Single binary, same image for all roles.
  • Prometheus /metrics with rich cache / object_store / ingester / compactor metrics.
  • Health probes — readiness is gated by ingester WAL replay plus an object-store round-trip probe.
  • TLS + ACME — optional automatic certificates via [http.tls] (HTTP-01 challenge, Let’s Encrypt).
See Configuration for the full settings reference.