Architecture Overview (High-Level)

This document is the current architecture of Stella Ops Suite: where it sits, what runs, what talks to what, where the trust boundaries are, and how it behaves when something fails.

Audience: operators, architects, and integrators evaluating or deploying the platform. For the index into per-subsystem detail — module dossiers, API contracts, schemas — see ARCHITECTURE_REFERENCE.md. For a one-line-per-component map of the codebase, see Platform component map.

What Stella Ops Suite is

Stella Ops Suite is a centralized, auditable release control plane for non-Kubernetes container estates.

It sits between your CI and your runtime targets, governs promotion across environments, enforces security and policy gates, and produces verifiable evidence for every release decision.

CI Build → Registry → Stella (Scan + Release + Promote + Gate + Deploy) → Targets → Evidence
Build → Scan → Create Release → Request Promotion → Gate Evaluation → Deploy → Evidence
        ↑                              ↓
        └── Re-evaluate on CVE Updates ┘

Design principles

Deployment model and trust boundary

Stella Ops is self-hosted. Every service, the data plane it writes to, and the signing material it uses run inside the operator’s own boundary; there is no vendor-hosted control plane.

Inside that boundary Stella Ops supports multiple logical tenants — environments, business units, or logical scopes that share the same operator, security team, and incident-response authority. The current architecture does not support unrelated, mutually adversarial tenants on one shared deployment. See ADR-005; token-selection mechanics inside this posture are covered by ADR-002.

Trust zones, outside in:

ZoneContentsReachable from
Clientstella CLI, Angular console, CI pipelines, deployment agentsOperators and CI, over TLS
IngressRouter (StellaOps.Gateway.WebService) — TLS termination, token validation, tenant resolution, rate limitingClients only
Private service networkScanner, Concelier, Policy Engine, Release Orchestrator, Attestor, Authority and the restThe gateway and each other, least privilege with explicit allowlists
Stateful infrastructurePostgreSQL, Valkey, RustFS / S3-compatible object storageServices only; not directly internet-exposed

Externally reachable services enforce token validation (short-lived, tenant-scoped), sender constraints where configured (DPoP / mTLS), scope-based authorization, and tenant filtering on data access. The deployment bundles under devops/ are the authoritative source for the concrete network layout of a given profile.

Detail: Security boundaries · Platform topology · Data isolation model · Port registry · Scopes and roles

System map

Service tiers

TierServicesKey responsibilities
Edge / IdentityStellaOps.AuthorityIssues short-lived tokens (DPoP + mTLS), exposes OIDC flows, rotates JWKS
Release ControlStellaOps.ReleaseOrchestrator.* (the release-orchestrator service)Release bundles, promotion workflows, gate evaluation
Integration HubStellaOps.Integrations.WebService + StellaOps.Integrations.Plugin.* (the integrations-web service)SCM / CI / registry / Vault / Consul connectors as signed plugins, loaded by the default stack
Scan & AttestStellaOps.Scanner, StellaOps.Attestor (includes Signer)Accept SBOMs/images, produce DSSE bundles, transparency logging
Evidence GraphStellaOps.Concelier, StellaOps.Excititor, StellaOps.Policy.EngineAdvisories/VEX, linksets, lattice policy
DeploymentStellaOps.ReleaseOrchestrator.Deployment + StellaOps.Agent.* (the agent-core service)Deployment execution — Docker/Compose/SSH/WinRM live-verified; ECS and Nomad ship as built-in agent capabilities
ExperienceStellaOps.Web, StellaOps.Cli, StellaOps.Notify, StellaOps.ExportCenterOperator UX, automation, notifications
Data PlanePostgreSQL, Valkey, RustFS / object storageCanonical store, queues, artifact storage

Ownership that is easy to get wrong:

The full inventory, including which historical component names now run inside a parent service, is the Module matrix and docs/modules/.

Capability areas

Capabilities are grouped into themes — functional labels used for orientation. The project layout under src/ is mapped separately, in the Platform component map.

Analysis and evidence

ThemePurposeComponents
INGESTAdvisory ingestion and unified search retrievalConcelier, Advisory-AI, Unified Search
VEXOPSVEX document handlingExcititor, VEX Lens, VEX Hub
REASONPolicy and decisioningPolicy Engine, OPA Runtime
SCANENGScanning and SBOMScanner, SBOM Service, Reachability
EVIDENCEEvidence and attestationEvidence Locker, Attestor, Export Center
RUNTIMERuntime signalsSignals, Graph, Zastava
JOBCTRLJob orchestrationJobEngine (includes Scheduler, TaskRunner, PacksRegistry)
OBSERVEObservabilityNotifier, Telemetry
REPLAYDeterministic replayReplay Engine
DEVEXPDeveloper experienceCLI, Web UI, Tools (includes SDK)

Release orchestration

ThemePurposeStatus (verified against src/, 2026-07-28)
INTHUBIntegration hubShipped — StellaOps.Integrations.WebService plus signed connector plugins (Gitea, GitHub App, GitLab, Jenkins, Harbor, Nexus, Docker Registry, Vault, Consul) loaded by the default stack
ENVMGREnvironment managementShipped — persisted environment/target CRUD, health, freeze windows, and agent assignment
RELMANRelease managementShipped — release truth create/ready/update, component version registry, registry-driven version sync
WORKFLWorkflow enginePartial — workflow surfaces are live under Release Orchestrator (/api/v1/workflows); a general-purpose standalone workflow engine is not part of the default stack
PROMOTPromotion and approvalShipped — promote and deploy fail closed on release truth, approval quorum, and persisted gate results; DB-backed approval policies with a UI editor. Promotion runs via /api/v1/release-orchestrator/releases/{id}/promote
DEPLOYDeployment executionShipped — target executor, generated artifacts, and rollback; Docker/Compose/SSH/WinRM targets live-verified
AGENTSDeployment agentsShipped — built-in docker, compose, ssh, winrm, ecs, and nomad capabilities, plus Ansible playbook execution
PROGDLProgressive deliveryPartial — all-at-once, rolling, canary, and A/B strategies are test- and live-VM-proven; real router / load-balancer traffic data-plane integration is not claimed
RELEVIRelease evidenceShipped — signed deployment decision records, evidence threads, version stickers for drift detection
PLUGINPlugin infrastructureShipped — registry, host/loader, sandbox (including a gRPC plugin bridge), SDK, and manifest + signature verification

Data plane and required infrastructure

Required

Optional, and deliberately never load-bearing for core flows

Detail: Infrastructure dependencies · Schema mapping · Data schemas

End-to-end flows

Vulnerability scanning

  1. Evidence enters via Concelier and Excititor connectors (Aggregation-Only Contract).
  2. SBOM arrives from CLI/CI; Scanner deduplicates layers and enqueues work.
  3. Analyzer bundle runs inside the Worker and stores evidence in content-addressed caches.
  4. Policy Engine merges advisories, VEX, and inventory/usage facts; emits explain traces and stable dispositions.
  5. Signer + Attestor wrap outputs into DSSE bundles and, optionally, anchor them in a Rekor mirror.
  6. Console / CLI / Export surface findings and package verifiable evidence; Notify emits digests and incidents.

Release orchestration

  1. CI pushes an image to the registry by digest; a webhook triggers Stella.
  2. Stella scans the new digest and stores the verdict.
  3. Release created, bundling component digests with a semantic version.
  4. Promotion requested to move the release from Dev → Stage → Prod. The promote and deploy paths fail closed when release truth, approvals, or gate results are missing.
  5. Gate evaluation checks the security verdict, approval count, freeze windows, and custom policies.
  6. Decision record produced with evidence references, and signed.
  7. Deployment executed via an agent to the target (Docker, Compose, SSH/WinRM; ECS and Nomad as built-in agent capabilities).
  8. Version sticker written to the target for drift detection.
  9. Evidence packet sealed and stored.

Detail, including the per-hop sequence and where each hop persists state: Request and data flows · Data flows · End-to-end workflow flows

Signing, credentials, and anchored trust

Detail: Security hardening guide · Key rotation runbook · Verification key rotation · Attestor architecture · Signer architecture

Failure behaviour and recovery

Connected and air-gapped operation

The same deployment runs in three connectivity postures, and policy must stay compatible across all three:

ModeEgressTypical use
ConnectedFull egress to configured upstreamsStaging and connected estates
ConstrainedLimited egress to allowlisted registries and NTPRegulated networks
SealedDeny-all egress; only preloaded mirror and bootstrap bundlesAir-gapped estates

In sealed mode the Offline Kit carries vulnerability feeds, container images, signatures, and verification material, so the workflow is identical to the connected one. Authority and token verification remain local. Capabilities that genuinely differ between modes are enumerated rather than glossed over: see the degradation matrix.

Detail: Offline Kit · Air-gap overview · Air-gap operations runbook

Extension points

Integrations are plugins, and the evidence chain does not change when you add one.

Plugins contribute through three surfaces:

  1. Manifest — a static declaration of what the plugin provides (integrations, steps, agents, gates), signed and signature-verified before load.
  2. Sandboxed runtime — plugins execute in a process sandbox behind a gRPC plugin bridge.
  3. Execution contractIExecutionPlugin capabilities registered through the agent’s execution plugin catalog for workflow and deployment steps.

Plugin types: integration connectors (SCM — Gitea, GitHub App, GitLab; CI — Jenkins; registry — Harbor, Nexus, Docker Registry; secrets — Vault, Consul), step providers, agent types for new deployment targets, and gate providers such as the reachability promotion gate. A traffic/router plugin interface is defined for progressive delivery; a real load-balancer data-plane integration is not claimed.

Detail: Plugin SDK guide

Where the detailed architecture lives

You needGo to
The index into every subsystemARCHITECTURE_REFERENCE.md
Layer-by-layer service and infrastructure mapPlatform topology
Trust zones, authn/authz, network segmentation, CORS, auditabilitySecurity boundaries
Per-hop request and data flowsRequest and data flows
What infrastructure is required, and what is optionalInfrastructure dependencies
Schema ownership and tenant isolationData isolation model
Every component under src/, one line eachPlatform component map
Full module inventory and consolidation historyModule matrix
Per-module APIs, storage, lifecycle, failure modesdocs/modules/
API and CLI contractsAPI_CLI_REFERENCE.md
Air-gap operationOFFLINE_KIT.md