Layering
Infrastructure depends inward on domain and application contracts. Domain code does not depend on
Axum, SQLx, object-store clients, or web DTOs.
Composition
src/bootstrap/bootstrap.rs owns the build_state orchestration entry point. Cohesive builders
remain directly under src/bootstrap/—core, storage, query, iam, alerting,
agent, tracing, and platform—while role lifecycle and worker startup live in the
dedicated roles/ and workers/ modules.
The top-level AppState exposes the core application services and grouped feature states:
alerting, IAM, telemetry, storage, cluster, platform, and Agent. This keeps route access
feature-oriented instead of flattening every infrastructure repository into one global container.
Runtime roles
The[node].roles setting composes one or more roles into the process:
The same binary and configuration model serve every role. Changing roles requires restart.
Data path
Control and worker planes
Background workers handle compaction, alert evaluation, pipeline runs, search jobs, reports, service-graph aggregation, trials, ACME, and telemetry maintenance. Ownership follows the selected role so duplicate processes do not all perform the same job.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 mutation.Web architecture
The React router defines every product route. Product IA metadata and the capability snapshot control discovery. A hidden route is still protected by the backend permission check. Query pages share time context and correlation contracts. Settings and IAM use separate organization and system scopes.Core concepts
Learn signals, streams, organizations, and storage.
Distributed deployment
Deploy roles across Docker Compose or Kubernetes.