Setup Wizard Guide

This guide covers the current stella setup command set for installation-scoped control-plane bootstrap.

Overview

stella setup is no longer an all-in-one platform onboarding wizard.

Retained Secrets

Operational Readiness

Quick Start

# Run the installation bootstrap
stella setup run

# Resume the current installation session
stella setup resume

# Show the current installation-scoped session
stella setup status

# JSON status for automation
stella setup status --json

# Probe a specific step only
stella setup run --step database --dry-run

# Reset a specific step
stella setup reset --step cache

# Reset the whole installation session
stella setup reset --all --force

Source-Free Container Runner

Released deployments must be operable without a source checkout. Release engineering publishes a dedicated stellaops/cli:<version> image built from devops/docker/Dockerfile.cli; operators run it through the opt-in compose overlay devops/compose/docker-compose.cli.yml.

The image contains the core CLI plus all current restart-time CLI plug-in payloads under /app/plugins/cli: Aoc, GroundTruth, NonCore, Policy, Symbols, Timestamp, Verdict, and Vex. The loader skips duplicate root tokens already served by core and activates non-conflicting plug-in additions. Before publishing a release tag, validate that plug-in-only commands are present in container help, for example stella runtime --help, stella excititor --help, and stella offline kit --help.

The runner mounts STELLAOPS_CLI_WORKDIR at /workspace and forwards the normal CLI environment variables, including:

VariablePurpose
STELLAOPS_CLI_IMAGEReleased CLI image to run, for example registry.example.com/stellaops/cli:2026.05.31
STELLAOPS_CLI_WORKDIRHost directory mounted at /workspace for setup.yaml and other operator inputs
STELLAOPS_BACKEND_URLPlatform/router URL reachable from inside the CLI container
STELLAOPS_AUTHORITY_URLAuthority URL reachable from inside the CLI container
STELLAOPS_AUTHORITY_CLIENT_IDHuman or automation CLI client id
STELLAOPS_AUTHORITY_CLIENT_SECRETAutomation client secret when using client credentials
STELLAOPS_AUTHORITY_USERNAME / STELLAOPS_AUTHORITY_PASSWORDNon-interactive human/bootstrap login where allowed
STELLAOPS_AUTHORITY_SCOPEScope request for token acquisition
API_KEYLegacy API-key path for commands that still read API_KEY

Reference compose stack:

cd devops/compose
export STELLAOPS_CLI_IMAGE=registry.example.com/stellaops/cli:2026.05.31
export STELLAOPS_CLI_WORKDIR="$PWD"
export STELLAOPS_BACKEND_URL=http://router.stella-ops.local:8080
export STELLAOPS_AUTHORITY_URL=http://authority.stella-ops.local:8440

./scripts/stella-cli.sh setup status --json
./scripts/stella-cli.sh setup run --config /workspace/setup.yaml --non-interactive
./scripts/stella-cli.sh runtime --help
./scripts/stella-cli.sh excititor --help
./scripts/stella-cli.sh offline kit --help

Windows operators use the PowerShell wrapper with the same variables:

cd devops/compose
$env:STELLAOPS_CLI_IMAGE = 'registry.example.com/stellaops/cli:2026.05.31'
$env:STELLAOPS_CLI_WORKDIR = (Resolve-Path .).Path
$env:STELLAOPS_BACKEND_URL = 'http://router.stella-ops.local:8080'
$env:STELLAOPS_AUTHORITY_URL = 'http://authority.stella-ops.local:8440'

.\scripts\stella-cli.ps1 setup status --json
.\scripts\stella-cli.ps1 setup run --config /workspace/setup.yaml --non-interactive

For non-compose targets, run the image directly and mount the setup workdir:

docker run --rm -it \
  -e STELLAOPS_BACKEND_URL \
  -e STELLAOPS_AUTHORITY_URL \
  -e STELLAOPS_AUTHORITY_CLIENT_ID \
  -e STELLAOPS_AUTHORITY_CLIENT_SECRET \
  -v "$PWD:/workspace" \
  registry.example.com/stellaops/cli:2026.05.31 \
  setup status --json

First Auth After Setup

Fresh local/dev installs seed first-party CLI auth clients through etc/authority/plugins/standard.yaml.

Human operators:

stella auth login

Automation:

export STELLAOPS_AUTHORITY_CLIENT_ID=stellaops-cli-automation
export STELLAOPS_AUTHORITY_CLIENT_SECRET=stellaops-local-cli-automation-secret
stella auth login --json

Production deployments should replace local/dev secrets and can tighten the allowed grants for these first-party clients.

Supported Steps

StepPurposeNotes
databaseVerify the PostgreSQL runtime connection and record convergenceMachine-level DB provisioning remains outside stella setup.
cacheVerify the cache runtime connection and record convergencevalkey remains a compatibility alias.
migrationsConverge required schema migrationsUses the backend migration-admin path.
adminEnsure the bootstrap administrator existsauthority and users remain compatibility aliases.
cryptoValidate and apply the selected crypto profileUses live provider health rather than optimistic local state.

Deprecated setup aliases still accepted:

Former setup targets such as vault, registry, scm, sources, notify, telemetry, llm, settingsstore, environments, and agents now return explicit handoff guidance instead of pretending they are bootstrap steps.

Command Surface

stella setup

Runs the same flow as stella setup run.

Global options:

stella setup run

Run the installation bootstrap from the beginning or continue from the active installation-scoped session.

Options:

Notes:

stella setup resume

Resume the current setup session or a specific one.

Options:

stella setup status

Show the current installation-scoped session.

Options:

Notes:

stella setup reset

Reset one step or the whole installation session.

Options:

stella setup reset resets setup-session state only. It does not rotate, unlock, or replace an existing Authority admin password. For local compose source-checkout recovery, use devops/compose/scripts/authority-password-set.ps1 or authority-password-set.sh so the password update goes through the Stella CLI and Authority password hashing path.

stella setup validate

Validate a configuration file, then run the setup flow in probe-only mode.

Options:

Configuration File Shape

stella setup consumes only the values relevant to the five control-plane steps. The CLI forwards these as backend draft values rather than directly mutating local infrastructure.

database:
  connectionString: Host=postgres.stella-ops.local;Port=5432;Database=stellaops;Username=stellaops;Password=${DB_PASSWORD}
  host: postgres.stella-ops.local
  port: 5432
  database: stellaops
  user: stellaops
  password: ${DB_PASSWORD}

cache:
  host: cache.stella-ops.local
  port: 6379
  password: ${CACHE_PASSWORD}
  database: 0

users:
  superuser:
    username: admin
    email: admin@example.com
    password: ${ADMIN_PASSWORD}
    displayName: Stella Admin

authority:
  provider: standard

crypto:
  provider: default

What Happens After Setup

When stella setup finishes, the next work is tenant onboarding, not more bootstrap steps.

If you are bringing up the Stella-owned local compose fixture lane, authenticate first and use the owned fixture bootstrap command:

# Authenticate into the target tenant if needed
stella auth login

# Bootstrap the default 13-entry local fixture catalog
stella config integrations bootstrap local

# Add the owned local GitLab SCM and CI fixtures
stella config integrations bootstrap local --include-gitlab

# Also add the optional local GitLab registry fixture
stella config integrations bootstrap local --include-gitlab --include-gitlab-registry

The local bootstrap contract is explicit:

For production or customer-managed third-party systems, use bring-your-own-secret onboarding instead of the local fixture bootstrap:

# Discover writable secret-authority targets
stella config integrations secrets targets

# Stage an operator-provided GitLab access token into a secret-authority target
stella config integrations secrets upsert-bundle \
  --bundle gitlab-server \
  --target <vault-integration-id> \
  --path gitlab/server \
  --entry access-token=glpat-...

# Create the GitLab server integration with the returned authref
stella config integrations create \
  --name customer-gitlab \
  --type scm \
  --provider gitlabserver \
  --endpoint https://gitlab.example.com \
  --secret-ref authref://vault/gitlab/server#access-token

--authref remains accepted for older automation, but new scripts should use --secret-ref. The CLI validates the URL with the shared SecretReference parser before calling the backend, so misspelled schemes fail locally.

UI handoff surfaces:

Troubleshooting

Database probe fails

stella setup run --step database --dry-run --config ./setup.yaml

Check:

Cache probe fails

stella setup run --step cache --dry-run --config ./setup.yaml

Check:

Setup finalization is blocked by operational readiness

stella setup status --json
stella admin diagnostics health --detail

Check:

Setup reports that vault or scm is no longer a supported step

That is expected. Those flows moved out of installation bootstrap.

Use: