StellaOps Console - Downloads Manager

Audience: DevOps guild, Console engineers, enablement writers, and operators who promote releases or maintain offline mirrors.
Scope: /console/downloads workspace covering artifact catalog, signed manifest plumbing, export status handling, CLI parity, automation hooks, and offline guidance (Sprint 23).

The Downloads workspace centralises every artefact required to deploy or validate StellaOps in connected and air-gapped environments. It keeps Console operators aligned with release engineering by surfacing the signed downloads manifest, live export jobs, parity checks against Offline Kit bundles, and automation hooks that mirror the CLI experience.


1 - Access and prerequisites

  • Route: /console/downloads (list) with detail drawer /console/downloads/:artifactId.
  • Scopes: downloads.read (baseline) and downloads.manage for cancelling or expiring stale exports. Evidence bundles inherit the originating scope (runs.read, findings.read, etc.).
  • Dependencies: Web gateway /console/downloads API (WEB-CONSOLE-23-005), DevOps manifest pipeline (deploy/downloads/manifest.json), Offline Kit metadata (manifest/offline-manifest.json), and export orchestrator /console/exports.
  • Feature flags: downloads.workspace.enabled, downloads.exportQueue, downloads.offlineParity.
  • Tenancy: Artefacts are tenant-agnostic except evidence bundles, which are tagged with originating tenant and require matching Authority scopes.

2 - Workspace layout

+---------------------------------------------------------------+
| Header: Snapshot timestamp - Manifest signature status        |
+---------------------------------------------------------------+
| Cards: Latest release - Offline kit parity - Export queue     |
+---------------------------------------------------------------+
| Tabs: Artefacts | Exports | Offline Kits | Webhooks           |
+---------------------------------------------------------------+
| Filter bar: Channel - Kind - Architecture - Scope tags        |
+---------------------------------------------------------------+
| Table (virtualised): Artifact | Channel | Digest | Status     |
| Detail drawer: Metadata | Commands | Provenance | History     |
+---------------------------------------------------------------+
  • Snapshot banner: shows manifest.version, generatedAt, and cosign verification state. If verification fails, the banner turns red and links to troubleshooting guidance.
  • Quick actions: Copy manifest URL, download attestation bundle, trigger parity check, open CLI parity doc (/docs/cli-vs-ui-parity.md).
  • Filters: allow narrowing by channel (edge, stable, airgap), artefact kind (container.image, helm.chart, compose.bundle, offline.bundle, export.bundle), architecture (linux/amd64, linux/arm64), and scope tags (console, scheduler, authority).

3 - Artefact catalogue

CategoryArtefacts surfacedSourceNotes
Core containersstellaops/web-ui, stellaops/web, stellaops/concelier, stellaops/excititor, stellaops/scanner-*, stellaops/authority, stellaops/attestor, stellaops/scheduler-*deploy/downloads/manifest.json (artifacts[].kind = "container.image")Digest-only pulls with copy-to-clipboard docker pull and oras copy commands; badges show arch availability.
Helm chartsdeploy/helm/stellaops-*.tgz plus values filesManifest entries where kind = "helm.chart"Commands reference helm repo add (online) and helm install --values (offline). UI links to values matrix in /docs/install/helm-prod.md when available.
Compose bundlesdeploy/compose/docker-compose.*.yaml, .env seedskind = "compose.bundle"Inline diff viewer highlights digest changes vs previous snapshot; docker compose pull command copies digest pins.
Offline kitstella-ops-offline-kit-<ver>-<channel>.tar.gz + signatures and manifestOffline Kit metadata (manifest/offline-manifest.json) merged into downloads viewDrawer shows bundle size, signed manifest digest, cosign verification command (mirrors /docs/24_OFFLINE_KIT.md).
Evidence exportsCompleted jobs from /console/exports (findings delta, policy explain, run evidence)Export orchestrator job queueEntries expire after retention window; UI exposes stella runs export and stella findings export parity buttons.
Webhooks & parity/downloads/hooks/subscribe configs, CI parity reportsManifest extras (kind = "webhook.config", kind = "parity.report")Operators can download webhook payload templates and review the latest CLI parity check report generated by docs CI.

4 - Manifest structure

The DevOps pipeline publishes a deterministic manifest at deploy/downloads/manifest.json, signed with the release Cosign key (DOWNLOADS-CONSOLE-23-001). The Console fetches it on workspace load and caches it with If-None-Match headers to avoid redundant pulls. The manifest schema:

  • version - monotonically increasing integer tied to pipeline run.
  • generatedAt - ISO-8601 UTC timestamp.
  • signature - URL to detached Cosign signature (manifest.json.sig).
  • artifacts[] - ordered list keyed by id.

Each artefact contains:

FieldDescription
idStable identifier (<type>:<name>:<version>).
kindOne of container.image, helm.chart, compose.bundle, offline.bundle, export.bundle, webhook.config, parity.report.
channeledge, stable, or airgap.
versionSemantic or calendar version (for containers, matches release manifest).
architecturesArray of supported platforms (empty for arch-agnostic artefacts).
digestSHA-256 for immutable artefacts; Compose bundles include file hash.
sizeBytesFile size (optional for export bundles that stream).
downloadUrlHTTPS endpoint (registry, object store, or mirror).
signatureUrlDetached signature (Cosign, DSSE, or attestation) if available.
sbomUrlOptional SBOM pointer (CycloneDX JSON).
attestationUrlOptional in-toto/SLSA attestation.
docsArray of documentation links (e.g., /docs/install/docker.md).
tagsFree-form tags (e.g., ["console","ui","offline"]).

4.1 Example excerpt

{
  "version": 42,
  "generatedAt": "2025-10-27T04:00:00Z",
  "signature": "https://downloads.stella-ops.org/manifest/manifest.json.sig",
  "artifacts": [
    {
      "id": "container.image:web-ui:2025.10.0-edge",
      "kind": "container.image",
      "channel": "edge",
      "version": "2025.10.0-edge",
      "architectures": ["linux/amd64", "linux/arm64"],
      "digest": "sha256:38b225fa7767a5b94ebae4dae8696044126aac429415e93de514d5dd95748dcf",
      "sizeBytes": 187563210,
      "downloadUrl": "https://registry.stella-ops.org/v2/stellaops/web-ui/manifests/sha256:38b225fa7767a5b94ebae4dae8696044126aac429415e93de514d5dd95748dcf",
      "signatureUrl": "https://downloads.stella-ops.org/signatures/web-ui-2025.10.0-edge.cosign.sig",
      "sbomUrl": "https://downloads.stella-ops.org/sbom/web-ui-2025.10.0-edge.cdx.json",
      "attestationUrl": "https://downloads.stella-ops.org/attestations/web-ui-2025.10.0-edge.intoto.jsonl",
      "docs": ["/docs/install/docker.md", "/docs/security/console-security.md"],
      "tags": ["console", "ui"]
    },
    {
      "id": "offline.bundle:ouk:2025.10.0-edge",
      "kind": "offline.bundle",
      "channel": "edge",
      "version": "2025.10.0-edge",
      "digest": "sha256:4f7d2f7a8d0cf4b5f3af689f6c74cd213f4c1b3a1d76d24f6f9f3d9075e51f90",
      "downloadUrl": "https://downloads.stella-ops.org/offline/stella-ops-offline-kit-2025.10.0-edge.tar.gz",
      "signatureUrl": "https://downloads.stella-ops.org/offline/stella-ops-offline-kit-2025.10.0-edge.tar.gz.sig",
      "sbomUrl": "https://downloads.stella-ops.org/offline/offline-manifest-2025.10.0-edge.json",
      "docs": ["/docs/24_OFFLINE_KIT.md"],
      "tags": ["offline", "airgap"]
    }
  ]
}

Console caches the manifest hash and surfaces differences when a new version lands, helping operators confirm digests drift only when expected.


5 - Download workflows and statuses

StatusApplies toBehaviour
ReadyImmutable artefacts (images, Helm/Compose bundles, offline kit)Commands available immediately. Digest, size, and last verification timestamp display in the table.
Pending exportAsync exports queued via /console/exportsShows job owner, scope, and estimated completion time. UI polls every 15 s and updates progress bar.
ProcessingLong-running export (evidence bundle, large SBOM)Drawer shows current stage (collecting, compressing, signing). Operators can cancel if they own the request and hold downloads.manage.
DeliveredCompleted export within retention windowProvides download links, resume token, and parity snippet for CLI.
ExpiredExport past retention or manually expiredRow grays out; clicking opens housekeeping guidance with CLI command to regenerate (stella runs export --run <id>).

Exports inherit retention defaults defined in policy (downloads.retentionDays, min 3, max 30). Operators can override per tenant if they have the appropriate scope.


6 - CLI parity and copy-to-clipboard

  • Digest pulls: Each container entry exposes docker pull <image>@<digest> and oras copy <image>@<digest> --to-dir ./downloads buttons. Commands include architecture hints for multi-platform images.
  • Helm/Compose: Buttons output helm pull / helm install with the manifest URL and docker compose --env-file commands referencing the downloaded bundle.
  • Offline kit: Copy buttons produce the full verification sequence:
curl -LO https://downloads.stella-ops.org/offline/stella-ops-offline-kit-2025.10.0-edge.tar.gz
curl -LO https://downloads.stella-ops.org/offline/stella-ops-offline-kit-2025.10.0-edge.tar.gz.sig
cosign verify-blob \
  --key https://stella-ops.org/keys/cosign.pub \
  --signature stella-ops-offline-kit-2025.10.0-edge.tar.gz.sig \
  stella-ops-offline-kit-2025.10.0-edge.tar.gz
  • Exports: Drawer lists CLI equivalents (for example, stella findings export --run <id>). When the CLI supports resume tokens, the command includes --resume-token from the manifest entry.
  • Automation: Webhook tab copies curl snippets to subscribe to /downloads/hooks/subscribe?topic=<artifact> and includes payload schema for integration tests.

Parity buttons write commands to the clipboard and display a toast confirming scope hints (for example, Requires downloads.read + tenant scope). Accessibility shortcuts (Shift+D) trigger the primary copy action for keyboard users.


7 - Offline and air-gap workflow

  • Manifest sync: Offline users download manifest/offline-manifest.json plus detached JWS and import it via stella offline kit import. Console highlights if the offline manifest predates the online manifest by more than 7 days.
  • Artefact staging: The workspace enumerates removable media instructions (export to ./staging/<channel>/) and warns when artefacts exceed configured media size thresholds.
  • Mirrors: Buttons copy oras copy commands that mirror images to an internal registry (registry.<tenant>.internal). Operators can toggle --insecure-policy if the destination uses custom trust roots.
  • Parity checks: downloads.offlineParity flag surfaces the latest parity report verifying that Offline Kit contents match the downloads manifest digests. If diff detected, UI raises a banner linking to remediation steps.
  • Audit logging: Every download command triggered from the UI emits ui.download.commandCopied with artifact ID, digest, and tenant. Logs feed the evidence locker so air-gap imports can demonstrate provenance.

8 - Observability and quotas

SignalSourceDescription
ui_download_manifest_refresh_secondsConsole metricsMeasures time to fetch and verify manifest. Targets < 3 s.
ui_download_export_queue_depth/console/downloads APINumber of pending exports (per tenant). Surfaces as card and Grafana panel.
ui_download_command_copied_totalConsole logsCount of copy actions by artifact type, used to gauge CLI parity adoption.
downloads.export.durationExport orchestratorDuration histograms for bundle generation; alerts if P95 > 60 s.
downloads.quota.remainingAuthority quota serviceAnonymous users limited to 33 exports/day, verified users 333/day. Banner turns amber at 90 % usage as per platform policy.

Telemetry entries include correlation IDs that match backend manifest refresh logs and export job records to keep troubleshooting deterministic.


9 - References

  • /docs/ui/console-overview.md - primary shell, tenant controls, SSE ticker.
  • /docs/ui/navigation.md - route ownership and keyboard shortcuts.
  • /docs/ui/sbom-explorer.md - export flows feeding the downloads queue.
  • /docs/ui/runs.md - evidence bundle integration.
  • /docs/24_OFFLINE_KIT.md - offline kit packaging and verification.
  • /docs/security/console-security.md - scopes, CSP, and download token handling.
  • /docs/cli-vs-ui-parity.md - CLI equivalence checks (pending).
  • deploy/releases/*.yaml - source of container digests mirrored into the manifest.

10 - Compliance checklist

  • [ ] Manifest schema documented (fields, signature, caching) and sample kept current.
  • [ ] Artefact categories mapped to manifest entries and parity workflows.
  • [ ] Download statuses, retention, and cancellation rules explained.
  • [ ] CLI copy-to-clipboard commands mirror console actions with scope hints.
  • [ ] Offline/air-gap parity workflow, mirror commands, and audit logging captured.
  • [ ] Observability metrics and quota signalling documented.
  • [ ] References cross-linked to adjacent docs (navigation, exports, offline kit).
  • [ ] Accessibility shortcuts and copy-to-clipboard behaviour noted with compliance reminder.

Last updated: 2025-10-27 (Sprint 23).