Skip to main content
MoleSignal is one Rust binary that embeds the web application. The [node].roles setting decides which responsibilities a process carries. Two external services hold all durable state: PostgreSQL and object storage.

Components

There is no Kafka, Redis, or consensus service. Caches live in process memory and on local disk.

Runtime roles

The [node].roles setting composes one or more roles into the process: The same binary and configuration model serve every role, and changing roles requires a restart. See Role-based deployment.

Data path

A flush uploads the files first and records them in the catalog afterwards, then truncates the flushed WAL segments. A query reads the catalog to find the files that overlap its time range and stream, so only those files are fetched from object storage.

What lives where

Streams and organizations are logical: a stream is a dataset in object storage and a row of metadata in PostgreSQL, and an organization is a prefix and a scope that the query planner enforces.

Background workers

Ownership follows the selected role, so duplicate processes do not all perform the same job. Several compactor nodes divide their work by stream and by organization, and several alert nodes divide theirs by rule, report, pipeline, and connector. See Role-based deployment and Work division between alert nodes. See Configuration for every interval.

Authorization

Authentication produces an IAM context. Authorization reads database-backed permissions, roles, resource relationships, and explicit cross-organization grants. Resource handlers load the target, verify organization ownership, and authorize the requested action before a change. See Security and multi-tenancy.

Web application

The web application ships inside the binary and shares the HTTP port. The capability snapshot controls which menu items appear. A hidden item is still protected by the permission check of the backend.

Core concepts

Learn signals, streams, organizations, and storage.

Role-based deployment

Run roles in separate processes.
Last modified on October 26, 2026