Architecture Overview (High-Level)
This document is the 10-minute tour of Stella Ops Suite: what the components are, how they fit together, and what “release control plane + security gates + evidence-linked decisions” means in practice.
Audience: anyone forming a first mental model of the platform — operators, integrators, and engineers. For the full reference map (services, boundaries, detailed flows), see ARCHITECTURE_REFERENCE.md.
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
Guiding Principles
- Digest-first releases: a release is an immutable set of OCI digests, never mutable tags.
- Deterministic replay: the same inputs yield the same outputs (stable ordering, canonical hashing, UTC timestamps).
- Evidence-linked decisions: every release decision links to concrete evidence artifacts (scan verdicts, approvals, policy evaluations).
- Pluggable everything: integrations are plugins; the core orchestration engine is stable.
- Offline-first: all core operations work in air-gapped environments.
- No feature gating: all plans include all features; limits are environments + new digests/day.
Tenancy Model
Stella Ops supports multiple logical tenants inside one operator’s trust boundary. Tenants are 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 SaaS deployment. See ADR-005; token-selection mechanics inside this posture are covered by ADR-002.
System Map
Release-Centric Flow
Build → Scan → Create Release → Request Promotion → Gate Evaluation → Deploy → Evidence
↑ ↓
└── Re-evaluate on CVE Updates ┘
Platform Themes
Stella Ops Suite organizes capabilities into themes (functional areas):
Analysis & Evidence Themes (Operational)
| Theme | Purpose | Key Modules |
|---|---|---|
| INGEST | Advisory ingestion and unified search retrieval | Concelier, Advisory-AI, Unified Search |
| VEXOPS | VEX document handling | Excititor, VEX Lens, VEX Hub |
| REASON | Policy and decisioning | Policy Engine, OPA Runtime |
| SCANENG | Scanning and SBOM | Scanner, SBOM Service, Reachability |
| EVIDENCE | Evidence and attestation | Evidence Locker, Attestor, Export Center |
| RUNTIME | Runtime signals | Signals, Graph, Zastava |
| JOBCTRL | Job orchestration | JobEngine (includes Scheduler, TaskRunner, PacksRegistry) |
| OBSERVE | Observability | Notifier, Telemetry |
| REPLAY | Deterministic replay | Replay Engine |
| DEVEXP | Developer experience | CLI, Web UI, Tools (includes SDK) |
Release Orchestration Themes (Operational — residual gaps noted per theme)
Theme names and “Key Modules” are capability labels, not
src/project names (verified againstsrc/2026-07-28). The release-control capability shipped insrc/ReleaseOrchestrator/— therelease-orchestratorandagent-coreservices in the default compose stack (devops/compose/docker-compose.stella-services.yml) — with the connector hub insrc/Integrations/(integrations-webservice) and plugin infrastructure insrc/Plugin/. The code lives inStellaOps.ReleaseOrchestrator.*libraries andStellaOps.Agent.*agent projects, not under the label names below.docs/modules/README.mdis the authoritative module inventory; residual runtime gaps are tracked indocs/modules/release-orchestrator/promotion-runtime-gap-closure-plan.md.
| Theme | Purpose | Status (verified against src/, 2026-07-28) |
|---|---|---|
| INTHUB | Integration hub | Shipped — StellaOps.Integrations.WebService plus signed connector plugins (Gitea, GitHub App, GitLab, Jenkins, Harbor, Nexus, Docker Registry, Vault, Consul) loaded by the default stack |
| ENVMGR | Environment management | Shipped — persisted environment/target CRUD, health, freeze windows, and agent assignment (StellaOps.ReleaseOrchestrator.Environment) |
| RELMAN | Release management | Shipped — release truth create/ready/update, component version registry and registry-driven version sync (StellaOps.ReleaseOrchestrator.Release) |
| WORKFL | Workflow engine | Partial — workflow surfaces are live under ReleaseOrchestrator (/api/v1/workflows); the general-purpose standalone engine (src/Workflow/) is dormant and not deployed |
| PROMOT | Promotion and approval | Shipped — promote/deploy fail closed on release truth, approval quorum, and persisted gate results; DB-backed approval policies with UI editor. A dedicated /api/v1/promotions controller is still planned; promotion runs via /api/v1/release-orchestrator/releases/{id}/promote |
| DEPLOY | Deployment execution | Shipped — target executor, generated artifacts, and rollback (StellaOps.ReleaseOrchestrator.Deployment); Docker/Compose/SSH/WinRM targets live-verified (VM deployment gate 20/20, 2026-05-09) |
| AGENTS | Deployment agents | Shipped — StellaOps.Agent.* with built-in docker, compose, ssh, winrm, ecs, and nomad capabilities in ExecutionPluginCatalog, plus Ansible playbook execution (StellaOps.Agent.Ansible) |
| PROGDL | Progressive delivery | Partial — 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 |
| RELEVI | Release evidence | Shipped — signed deployment decision records (StellaOps.ReleaseOrchestrator.DecisionArtifact), evidence threads, version stickers for drift detection |
| PLUGIN | Plugin infrastructure | Shipped — src/Plugin/: registry, host/loader, sandbox (including gRPC plugin bridge), SDK, and manifest + signature verification |
Service Tiers
| Tier | Services | Key Responsibilities |
|---|---|---|
| Edge / Identity | StellaOps.Authority | Issues short-lived tokens (DPoP + mTLS), exposes OIDC flows, rotates JWKS |
| Release Control | StellaOps.ReleaseOrchestrator.* (live as the release-orchestrator service; the historical ReleaseManager/PromotionManager/WorkflowEngine names never shipped as projects), StellaOps.Workflow.WebService (dormant) | Release bundles, promotion workflows, gate evaluation |
| Integration Hub | StellaOps.Integrations.WebService + StellaOps.Integrations.Plugin.* (live as the integrations-web service) | SCM/CI/Registry/Vault/Consul connectors as signed plugins, loaded by the default stack |
| Scan & Attest | StellaOps.Scanner, StellaOps.Attestor (includes Signer) | Accept SBOMs/images, produce DSSE bundles, transparency logging |
| Evidence Graph | StellaOps.Concelier, StellaOps.Excititor, StellaOps.Policy.Engine | Advisories/VEX, linksets, lattice policy |
| Deployment | StellaOps.ReleaseOrchestrator.Deployment + StellaOps.Agent.* (live as the agent-core service; there is no StellaOps.DeployOrchestrator project) | Deployment execution — Docker/Compose/SSH/WinRM live-verified; ECS and Nomad ship as built-in agent capabilities |
| Experience | StellaOps.Web, StellaOps.Cli, StellaOps.Notify, StellaOps.ExportCenter | Operator UX, automation, notifications |
| Data Plane | PostgreSQL, Valkey, RustFS/object storage | Canonical store, queues, artifact storage |
Ownership Clarifications
- Ingress/routing: Router owns both the HTTP ingress gateway (
StellaOps.Gateway.WebService) and the internal binary protocol transport. The standalonesrc/Gateway/was deleted (Sprint 200). - Promotion policy gates: Policy Engine owns PASS/FAIL decision semantics; Concelier remains ingestion/linkset only.
- Environment topology and promotion lanes: owned by Release Orchestrator ENVMGR/PROMOT tracks (not Cartographer).
See:
docs/modules/router/architecture.mddocs/modules/router/README.mddocs/modules/policy/promotion-gate-ownership-contract.mddocs/modules/release-orchestrator/promotion-runtime-gap-closure-plan.md
Infrastructure (What Is Required)
Required
- PostgreSQL: canonical persistent store for module schemas.
- Valkey: Redis-compatible cache/streams and DPoP nonce store.
- RustFS (or equivalent S3-compatible store): object storage for artifacts, bundles, and evidence.
Optional (deployment-dependent)
- NATS JetStream: optional messaging transport in some deployments.
- Transparency log services: Rekor mirror (and CA services) when transparency is enabled.
End-to-End Flows
Current: Vulnerability Scanning Flow
- Evidence enters via Concelier and Excititor connectors (Aggregation-Only Contract).
- SBOM arrives from CLI/CI; Scanner deduplicates layers and enqueues work.
- Analyzer bundle runs inside the Worker and stores evidence in content-addressed caches.
- Policy Engine merges advisories, VEX, and inventory/usage facts; emits explain traces and stable dispositions.
- Signer + Attestor wrap outputs into DSSE bundles and (optionally) anchor them in a Rekor mirror.
- Console/CLI/Export surface findings and package verifiable evidence; Notify emits digests/incidents.
Current: Release Orchestration Flow
- CI pushes image to registry by digest; triggers webhook to Stella.
- Stella scans the new digest and stores the verdict.
- Release created bundling component digests with semantic version.
- Promotion requested to move release from Dev → Stage → Prod; the promote and deploy paths fail closed when release truth, approvals, or gate results are missing.
- Gate evaluation checks: security verdict, approval count, freeze windows, custom policies.
- Decision record produced with evidence refs and signed.
- Deployment executed via agent to target (Docker, Compose, SSH/WinRM; ECS and Nomad as built-in agent capabilities).
- Version sticker written to target for drift detection.
- Evidence packet sealed and stored.
Extension Points
Current Extension Points
- Scanner analyzers (restart-time plug-ins) for ecosystem-specific parsing and facts extraction.
- Concelier connectors for new advisory sources (preserving aggregation-only guardrails).
- Policy packs for organization-specific gating and waivers/justifications.
- AI code guard evidence for AI-assisted code changes (Scanner evidence + Policy overrides).
- Export profiles for output formats and offline bundle shapes.
Three-Surface Plugin Model (Shipped)
Plugins contribute through three surfaces (all implemented in src/Plugin/ and consumed by the modules above):
- Manifest (static declaration): what the plugin provides (integrations, steps, agents, gates), signed and signature-verified before load (
StellaOps.Plugin.Abstractions) - Sandboxed runtime (dynamic execution): plugins run in a process sandbox with a gRPC plugin bridge (
StellaOps.Plugin.Sandbox) - Execution plugin (execution contract):
IExecutionPlugincapabilities registered through the agent’sExecutionPluginCatalogfor workflow/deployment steps
Plugin types:
- Integration connectors: SCM (Gitea, GitHub App, GitLab), CI (Jenkins), Registry (Harbor, Nexus, Docker Registry), secrets (Vault, Consul) — shipped as signed plugins
- Step providers: custom execution plugins for build/scan/deploy/verify steps
- Agent types: new deployment target types
- Gate providers: custom gate evaluations (e.g. the reachability promotion gate)
- Traffic/router plugins: interface defined for progressive delivery; a real load-balancer data-plane integration is not yet claimed
Offline & Sovereign Notes
- Offline Kit carries vulnerability feeds, container images, signatures, and verification material so the workflow stays identical when air-gapped.
- Authority + token verification remain local; quota enforcement is verifiable offline.
- Attestor can cache transparency proofs for offline verification.
- Evidence packets are exportable for external audit in air-gapped environments.
- All release decisions can be replayed with frozen inputs.
Key Architectural Decisions
| Decision | Rationale |
|---|---|
| Digest-first release identity | Tags are mutable; digests provide immutable release identity for audit |
| 3-surface plugin model | Enables extensibility without core code changes |
| Compiled C# scripts + sandboxed bash | C# for complex orchestration; bash for simple hooks |
| Agent + agentless execution | Agent-based preferred for reliability; agentless for adoption |
| Evidence packets for every decision | Enables deterministic replay and audit-grade compliance |
References
ARCHITECTURE_REFERENCE.md— Full reference mapmodules/release-orchestrator/architecture.md— Release orchestrator dossier (implemented; residual gaps inmodules/release-orchestrator/promotion-runtime-gap-closure-plan.md)OFFLINE_KIT.md— Air-gap operationsAPI_CLI_REFERENCE.md— API and CLI contractsmodules/platform/architecture-overview.md— Platform service designmodules/scanner/operations/ai-code-guard.md— AI code guard operationsdocs-archive/product/advisories/09-Jan-2026 - Stella Ops Orchestrator Architecture.md— Full orchestrator specification (archived)docs-archive/product/advisories/13-Jan-2026 - Controlled Conversational Interface.md— Controlled conversational interface guardrails and audit log (archived)
