Getting Started
Install Stella Ops
One signed bundle installs the whole suite — release orchestrator, scanner, policy engine, evidence locker, and console — on your own hardware with Docker Compose. About twenty-five containers, four of them standard open-source infrastructure — PostgreSQL, Valkey, RustFS and a Zot registry. One command starts them all: the installer generates every secret, brings the stack up, and waits for it to report healthy. Compose restarts what fails; you administer one gateway and one console.
Product status: v1.0-RC1, release candidate.
Get the bundle
Each release ships as a single evaluation bundle: one docker-compose.yml, an .env.example documenting every setting, install scripts for Linux/macOS and Windows, and a release-manifest.yaml recording the sha256 of every file and the digest of every image. Both the bundle and the images are public: download anonymously from get.stella-ops.org, pull anonymously from registry.stella-ops.org. No account, no token, no registration step.
1 · Checklist before you begin
Platform
Linux, macOS, or Windows. Install via install.sh (Linux/macOS) or install.ps1 (Windows); besides Docker, only openssl is needed on Linux/macOS.
Resources
4 vCPU, 16 GiB RAM and 50 GB free disk run the full stack. For larger estates, allow 8 vCPU and 200 GB SSD.
Docker
Engine 23.0+ with Compose v2 — check with docker -v. On Docker Desktop, raise the memory cap to at least 16 GiB (Settings → Resources); the default cap is the most common first-run failure.
Verification keys
Import the CosignContainer signing tool from Sigstore project for signing and verifying container images and artifacts/PGP keys from /keys/.
2 · Install with Docker Compose
- 1
Unpack the bundle
Extract the release archive and change into it.
release-manifest.yamlrecords the authoritative version — if it disagrees with the filename, trust the manifest. - 2
Verify before you run
Check the manifest signature with
CosignContainer signing tool from Sigstore project for signing and verifying container images and artifacts, then runtools/verify-bundle.pyto check every file hash and image digest. The install scripts re-check the file checksums on every run and stop on any mismatch. - 3
Run the installer
./install.sh(or.\install.ps1) verifies the bundle, generates every secret and certificate, pulls the images, starts the stack, and waits for it to converge. First start pulls several GB and runs migrations — ten to twenty minutes is normal. - 4
Sign in
Open
https://127.0.0.1:8443/and sign in asadminwith the password the installer prints once — there is no default password. The gateway serves a self-signed certificate, so your browser warns once. Change the password after your first sign-in.
$ curl -fsSLO https://get.stella-ops.org/releases/v1.0.0-RC1/stellaops-bundle-v1.0.0-RC1.tar.gz
$ curl -fsSL https://get.stella-ops.org/releases/v1.0.0-RC1/SHA256SUMS \
| sha256sum --check --ignore-missing
$ tar xzf stellaops-bundle-v1.0.0-RC1.tar.gz && cd stellaops-bundle-v1.0.0-RC1
$ cosign verify-blob --insecure-ignore-tlog=true --key release-signing.pub \
--signature release-manifest.yaml.sig release-manifest.yaml
$ python tools/verify-bundle.py --require-signature --require-digests
$ ./install.sh
Console https://127.0.0.1:8443/
Username admin
Password <generated, shown once> Prefer to run every step yourself? Copy .env.example to .env and replace every CHANGE_ME and GENERATED_ value — the stack refuses to start on a missing secret rather than falling back to a default. Then docker compose pull, docker compose up -d, and docker compose ps until every service reports healthy.
3 · Offline install (air-gap)
The stack makes no third-party network calls at startup — everything it needs is in the images and the bundle's config/ directory. To install without internet access:
- 1
Mirror the images
On a connected host, mirror the image digests recorded in
release-manifest.yamlinto your internal registry, ordocker savethem to a tarball.docker-compose.pinned.ymlpins every image by digest, so the deployment stays reproducible. - 2
Transfer
Move the verified bundle and the mirrored images to your air-gapped site via an approved medium (USB, courier, drop box).
- 3
Install against your registry
Set
STELLA_REGISTRYin.envto your internal registry and run./install.sh --offline. Advisory and VEX data arrives separately as an Offline Kit — import it withstella offline import --bundle <kit>.tar.zst, or drop it intoairgap-import/.
4 · Free-tier limits
The licence permits evaluation, development and testing freely, and production use within 3 environments and 100 new-digest scans in any rolling 24-hour period. The same build is used at every tier — nothing is gated behind a different binary.
Beyond those limits a commercial licence is required — see pricing. Limits are terms of the licence, not runtime restrictions in the software.
5 · Connect your CI
Your pipeline can produce evidence before any deployment target is connected. stella ci init generates a workflow for GitHub, GitLab, or Gitea; each build then scans the image and signs a build attestation (DSSEDead Simple Signing Envelope - a simple, flexible standard for signing arbitrary data with cryptographic signatures). No deployment connector is required.
$ stella ci init --platform github --mode scan-attest
✓ Created: .github/workflows/stellaops-gate.yml
✓ 1 template(s) initialized successfully
Next steps:
1. Review the generated workflow files
2. Add required secrets (STELLAOPS_TOKEN, etc.)
3. Commit and push to trigger the workflow Every build lands on the custody spine — Source → Build → Scan → Verdict → Decision → Deploy → Watch. Each stage reports one of three states: MISSING, RECORDED, or SIGNED. A stage nothing has fed yet reports MISSING, and nothing is inferred to close it.
6 · Artifacts and verification
Where artifacts come from today, and how to verify them before you trust them.
- Current state: the signed v1.0.0-RC1 bundle and container images are public and available anonymously from
get.stella-ops.organdregistry.stella-ops.org. - Verify everything: every bundle ships a
release-manifest.yamlrecording the sha256 of every file and the digest of every image — check itsCosignContainer signing tool from Sigstore project for signing and verifying container images and artifactssignature before first run. - Source availability: the source is available under BUSL-1.1 — a licensing term.
Verify before first run: import the CosignContainer signing tool from Sigstore project for signing and verifying container images and artifacts/PGP public keys and check each artifact's signature and manifest — connected or air-gapped. Verification keys →
For procurement review, use License and Pricing as the canonical entitlement and licensing references.
7 · Your first verified promotion
A fresh install has no environments and no releases in it. These four steps take one container image from registered to promoted, and end with the decision exported as a single signed evidence card.
- 1
Create your environments
Define the promotion path — dev, staging, production — and attach a policy to each. Console only today; there is no CLI command for this step yet.
- 2
Register a digest release
Add a container image by its content digest. Stella scans it and generates an
SBOMSoftware Bill of Materials - a complete list of all packages and dependencies in your software. Console only today; there is no CLI command for this step yet. - 3
Submit the promotion
Ask Stella to move the release to the next environment. The command submits the decision — the gate result, and any approvals still needed, appear in the Console.
- 4
Export the evidence card
Package a sealed evidence pack as one signed file. Without
--outputit is written as<pack-id>.evidence-card.json.
$ stella release promote rel-7829726 --to staging
$ stella evidence card export evp-2026-01-14-abc123 --output evidence-card.json Both arguments are opaque identifiers the product generates: a release ID looks like rel-7829726, an evidence pack ID like evp-2026-01-14-abc123. A release name or version will not resolve. Read both from the Console — no CLI command lists releases yet.
The acceptance test we think you should run against us
A staged pilot: a two-engineer-day checkpoint that is cheap to fail, then an adversarial week — a reachable and an unreachable vulnerability you choose, missing evidence, a control-plane outage, deliberate drift, and a capsule verified on a machine we never touch.
Read the pilot guide →