← Back to dashboard

SaaS Roadmap

The hosted SaaS edition is a target architecture for the dashboard. This doc is the consolidated list of features it will add on top of the shipping community edition, with honest status labels.

For the one piece of SaaS architecture that's already specified in detail (the JWT root-key bootstrap problem and its managed-identity solution), see saas-comparison.md.

Maintenance note (2026-05-30): several items below have moved off Planned/Researching — the per-tenant isolation primitive (multi-tenancy), tenant-scoped runner networking, the durable cross-cloud promote, and the containerised remote worker are all now in flight or dev-verified behind feature flags. Status labels and the "Today's reality" section reflect that. Per-feature design/execution plans are tracked in the (non-public) engineering planning workspace; this doc stays the high-level honest-status view.

Maintenance note (2026-07-05): three corrections. (1) Four items that were SaaS-distinct have shipped into the community edition: the tamper-evident (hash-chained) audit trail, action-level policy guardrails (OPA pre-action admission), config drift-aware runs, and the staleness-alerting + artefact secret-scanning half of secret lifecycle — see policy-guardrails.md, config-management.md, secrets-management.md. (2) The per-tenant isolation primitive is now Built (prod) — the hosted deployment is multi-tenant today; only the root-key store is still shared (per-tenant store scoping via federated workload identity remains). (3) This doc now describes hosted features by their mechanics, not the specific products the deployment happens to use (external managed secret store / platform identity / remote worker / durable-workflow engine).


Status legend

Each feature carries two labels:

Features marked Built (prod) exist in the cloud-hosted, multi-tenant deployment; community users running the open-source edition don't get them automatically because they depend on hosting infrastructure (an external managed secret store, a remote automation worker, etc.) the community deployment doesn't assume. This doc describes those features by their mechanics, not by the specific products the hosted deployment happens to use. Built (dev) features live in the dev branch behind flags and are the next things queued for QA.


Security & identity

Root-key bootstrap via a managed secret store

Per-tenant workload identity (federated) for the root-key store

Feasibility flag (2026-05-30): an earlier draft specified this as per-tenant Container Apps revisions / AKS pods. That hosting model was rejected on cost; the direction is to stay on docker-compose, not migrate to managed containers. The idea (per-tenant federated identity scoped to per-tenant vaults) is sound but has to be re-scoped to the docker-compose topology before it gets an execution plan — the AKS/Container-Apps framing is explicitly out.

Public webhook endpoint per tenant

Approval / change-control gate for destructive automation

Secret lifecycle — rotation, expiry, and scanning

Shipped in community (was fully on this list): staleness/expiry alerting (secret_max_age_days, GET /api/secrets/staleness, the Needs-attention rollup — vault refs use the backend's own last-changed date) and artefact secret-scanning (uploaded playbooks / scripts are scanned on upload, secret_scan_enabled) both run in the community edition — see secrets-management.md and config-management.md. A rotation primitive also shipped: a Password Safe managed-account checkout used on a cloud run can be flagged rotate-on-check-in (ansible.md).


Image lifecycle

Shipped in community (was on this list): one-click cross-cloud promote and live cloud-side checks. The runner-driven flow documented in Image Management runs entirely in the community edition for AWS/Azure/GCP targets. SaaS now layers only the durable-replay guarantee on top — a 45-minute import that survives a dashboard restart mid-poll without orphan cloud-side tasks. Same registry, same /images UI, same audit trail.

Durable cross-cloud promote (SaaS replay-safety)

On-prem image promotion via a remote worker

Containerised remote worker for zero-touch SaaS spokes

Continuous CVE scanning per image version

AI-assisted image hardening

Feasibility flag (2026-05-30): deferred — no execution plan yet. Output quality depends entirely on manifest fidelity from the CVE- scanning feature above, which isn't built. Building hardening advice on top of a manifest store that doesn't exist would be speculative. Revisit once a real bill-of-materials ships.

Multi-tenant image catalog

Per-tenant signed build manifests

Self-supply-chain for the platform's own privileged containers


Config management

AI-assisted playbook generation

Feasibility flag (2026-05-30): deferred — no execution plan yet. Buildable (it's an LLM call over the asset schema), but the output is a playbook that runs with privilege on real hosts. Auto-applying generated config is a genuine safety risk; this needs a human-in-the- loop review gate designed up front, and its value over the existing auto-wrap is unproven. Keep researching before committing a plan.

Drift-aware runs

Shipped in community (was on this list): the config-drift signal runs in the community edition — each successful apply records a per-target fingerprint (config_apply_state), and GET /api/config-mgmt/drift surfaces unverified (no apply within config_drift_stale_days) and changed (stored playbook now differs from what was applied) targets. See config-management.md.

Tenant-scoped runner networking

Tenant-scoped asset libraries


Infrastructure as code

Terraform state — remote + locked

Shipped in community (was on this list): each deploy writes its Terraform state to the active storage backend (S3 / Azure Blob / GCS) at terraform-state/{job_id}/terraform.tfstate — remote, per-deploy, and locked (S3 native use_lockfile, Terraform ≥ 1.10 — no DynamoDB table), so concurrent applys can't corrupt state. It falls back to the local filesystem only when no storage backend is configured. See infrastructure-as-code.md → State.

Continuous drift detection

AI-assisted module refactoring

Feasibility flag (2026-05-30): deferred — no execution plan yet. Lowest-value of the three AI items and the riskiest: auto-refactoring Terraform modules touches infrastructure-defining code, and a wrong suggestion silently applied could destroy resources. Needs the IaC hardening work (state + drift) as a foundation and a strict human-in-the-loop. Keep researching.

Compliance-as-code

Action-level policy guardrails (pre-action admission control)

Shipped in community (was on this list): pre-action admission control runs in the community edition — an OPA-backed engine (admission_service) evaluates a deploy request against Rego policies (allowed regions, instance-size caps, prod-window) at the pre-action decision point and blocks before the job is created, failing closed. Config-driven limits are settable without writing Rego, and denials land in the (hash-chained) audit log. Off by default (admission_control_enabled). See policy-guardrails.md.


Multi-tenancy & audit (cross-cutting)

Several features above (multi-tenant image catalog, tenant-scoped asset libraries, tenant-scoped runner networking, per-tenant signed manifests) depend on the same underlying primitive: per-tenant isolation across DB schemas, storage namespaces, credential stores, and network scoping.

Per-tenant isolation primitive

Centralised audit pane

Cross-tenant catalog

Tamper-evident audit trail

Shipped in community (was on this list): the append-only, hash-chained audit log runs in the community edition (audit_chain — each record links to the prior record's hash, so alteration or truncation is detectable). This is the integrity foundation the centralised audit pane sits on.

Compliance evidence reporting


Today's reality

Built (prod) — shipping in the cloud-hosted, multi-tenant deployment today:

In progress — actively under construction:

Shipped into community since the last update (2026-07-05) — four items left the SaaS-only column: the tamper-evident (hash-chained) audit trail, action-level policy guardrails (OPA pre-action admission), config drift-aware runs, and the staleness-alerting + artefact secret-scanning half of secret lifecycle. Each keeps a residual SaaS-only delta (WORM/SIEM export, post-deploy compliance, scheduled reconciler, scheduled rotation) noted in its entry above.

In design — CVE scanning + signed manifests, Terraform drift detection + compliance-as-code, the audit pane + cross-tenant catalog, and per-tenant federated identity for the root-key store + per-tenant webhook.

Researching (deferred — no plan yet) — the three AI-assisted features (image hardening, playbook generation, module refactoring). Each is buildable but flagged above: value unproven and/or output runs with privilege, so they wait behind their non-AI foundations.

Backlog (In design — sketched 2026-05-30, not yet specified) — of the six governance/assurance items added to harden the "secure and auditable" story, two shipped into community (action-level policy guardrails, tamper-evident audit trail) and secret lifecycle partly shipped (staleness + scanning done; scheduled rotation remains). The residual backlog is: approval / change-control gate for destructive automation, scheduled secret rotation, self-supply-chain for the platform's own privileged containers, and compliance evidence reporting. Accepted into scope but not yet specified.

When a feature flips status, this doc updates. When it flips into the community open-source surface, the relevant lifecycle doc gets the inline tease the way image-management.md already teases SaaS cross-cloud promote.