Architecture Overview (High-Level)

This document describes Stella Ops Suite’s ownership boundaries and governed release workflow. The implementation limits below distinguish serving contracts from the remaining acceptance work.

Ownership and flow references verified against 60913a04352cb4899ab6443e596811b11cc3f01a on 2026-09-30. This was a source review, not a deployment or acceptance run. Recheck the service map with python tools/scripts/generate/service-inventory.py --check and the serving contracts linked below before applying this description to an installation.

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 CI and runtime targets. The product outcome is a governed release whose artifact, policy decision, approval, execution observations, recovery and evidence remain attributable. A later risk assessment must retain the original decision, and a separate reader must be able to verify the selected evidence offline with its declared trust material.

CI artifact → Scan and policy → Scoped approval → Target execution and observation → Exact evidence
                                                       ↓                              ↓
                                                Owned recovery                 Offline verification
New advisory / VEX / runtime evidence → Current risk assessment → Accountable action
                                      (historical decision and proof remain unchanged)

The Console confidence decisions define this scope. Its acceptance contract requires real restricted roles, target observations, interrupted-operation recovery and independent proof. Those scenarios are not claimed passed by this document.

Implementation status and remaining proof

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, Vulnerabilities, Policy, Release Orchestrator, Evidence, Signer, Authority and the other serving ownersThe 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
Scanningscanner-web, scanner-worker, sbomserviceScan attempts/results, SBOM documents and artifact identity
Evidence and signingevidence-web, evidence-worker; separate signerEvidence custody, attestation and transparency; Signer owns key custody and signing
Security decision inputsvulnerabilities-web, vulnerabilities-worker, policy-engine, findings-web, signals, graph-apiAdvisory/VEX observations, effective risk, policy evaluation and runtime/graph facts
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
Experience and exchangeWeb, CLI, Notify and OfflineKit familiesOperator UX, automation, notifications and offline exchange
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 generated service inventory, 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 search retrievalVulnerabilities; AdvisoryAI for explanation and search
VEXOPSVEX document handlingVulnerabilities hub and its carried VEX libraries
REASONPolicy and decisioningPolicy Engine, OPA Runtime
SCANENGScanning and SBOMScanner, SBOM Service, Reachability
EVIDENCEEvidence and attestationEvidence; separate Signer; OfflineKit exchange
RUNTIMERuntime signalsSignals, Graph, Zastava
JOBCTRLJob orchestrationJobEngine (includes Scheduler, TaskRunner, PacksRegistry)
OBSERVEObservabilityNotify, service Doctor checks and telemetry
REPLAYDeterministic replayReplay Engine
DEVEXPDeveloper experienceCLI, Web UI, Tools (includes SDK)

Release orchestration

The following is a dated capability inventory, not current end-to-end acceptance. Validate the selected installation through the core acceptance contract above; source, published images and deployed behavior can differ.

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 evidenceDecision records, evidence threads and target observations exist; complete revision-bound proof and failure recovery remain subject to CCP-010–012 and CCP-050 acceptance
PLUGINPlugin infrastructureShipped — registry, host/loader, sandbox (including a gRPC plugin bridge), SDK, and manifest + signature verification

Data plane and required infrastructure

Required

Profile-dependent infrastructure

Detail: Infrastructure dependencies · Schema mapping · Data schemas

End-to-end flows

Vulnerability scanning

  1. Advisory and VEX evidence enters through the Vulnerabilities hub’s carried connectors.
  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. Evidence and the configured signing provider produce the applicable attestation/proof material; Signer remains a separate key owner. Missing or failed proof stays visible.
  6. Console / CLI / Export surface findings and package verifiable evidence; Notify emits digests and incidents.

Release orchestration

This is the required workflow; its complete positive and negative cases remain acceptance work.

  1. CI publishes an immutable artifact and attributable build evidence through supported producers.
  2. Scanner records scan attempts/results. Policy evaluates the exact subject using complete required inputs; absent or stale knowledge retains its configured non-success outcome.
  3. Release Orchestrator binds component digests, source identity, target environment and policy version. Contributor ownership and approval authority are checked independently.
  4. Promotion records its gate basis and approval result. Dispatch rechecks the owner’s current authorization, evidence and target prerequisites.
  5. The executor reports target execution and health. The UI identifies the observer and keeps requested, accepted, running, partially failed and completed outcomes distinct.
  6. Retry or rollback follows the existing authorized recovery path, retaining both the original failure and the recovery result with the target digest/configuration observations.
  7. Evidence binds the exact finalized decision revision. Sealing failure remains a proof gap; recovery must not repeat deployment or introduce automatic rollback because proof is missing.
  8. A separate reader exports and verifies the identified packet offline using its declared trust material. Decision replay requires its recorded inputs, pack and version.
  9. Later advisory, VEX or runtime changes produce a current assessment and accountable action without rewriting the original release decision or proof.

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 OfflineKit carries the supported feeds, images, signatures and verification material. The release identity and authorization rules remain the same; input availability and recovery procedures depend on the packaged material. 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 contract — IExecutionPlugin 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