First use (delphi-setup)
Run this step after containers are up, Ops has applied schema migrations and baseline seed, and the dashboard responds (see the smoke checks at the end of Bootstrap and init). init.sh on the Ops host runs the voiceai-db-migrate one-shot container automatically during deploy (unless --skip-migrations). Interactive first-use work (for example creating a platform superuser) and optional dev-only seed data are always done separately with delphi-setup.
For v0.9.13+ upgrades, run database migrations first with the Ops voiceai-db-migrate container, then restart application services and run ./delphi-setup.sh --apply-missing if the release adds setup registry steps.
delphi-setup ships in the voiceai-db-migrate image, not voiceai-telweb. The Ops host provides delphi-setup.sh, which reproduces the same in-memory env init.sh uses before invoking the one-shot container.
1. Confirm migrations and baseline seed completed
SSH to the Ops host, then:
cd /opt/services/ops
docker compose logs db-migrate 2>/dev/null | tail -40 || true
On a fresh deploy, init.sh should already have run:
Running one-shot database migrations and baseline seed...
✅ Database migrations and baseline seed completed
If migrations failed or were skipped (--skip-migrations / --restart-only), run them before delphi-setup:
cd /opt/services/ops
./init.sh
# or, migrations only:
docker compose --profile migration run --rm --no-deps db-migrate
TelWeb only waits for Postgres TCP reachability before starting Next.js — it does not run Prisma migrations.
2. Interactive first use (recommended)
From the Ops service directory:
cd /opt/services/ops
./delphi-setup.sh
Use ssh -t when connecting remotely so the wizard can prompt for the initial superuser and other gated first-use steps.
3. After a platform upgrade
Apply only new or missing registry steps:
cd /opt/services/ops
./delphi-setup.sh --apply-missing
Re-run whenever you bump ECR_TAG and the release adds setup steps. Restarting application containers does not run every setup registry step.
4. Optional dev-only data
Local or test-focused seed bundles need an interactive TTY:
cd /opt/services/ops
./delphi-setup.sh --dev-seeds
5. Automation / CI — non-interactive
When stdin is not a TTY, use env-backed answers or force a step:
cd /opt/services/ops
./delphi-setup.sh --non-interactive
cd /opt/services/ops
./delphi-setup.sh --force-step firstUse.superuser
Next
- delphi-setup CLI — flags, phases, troubleshooting, what the registry covers.
- Ops operations — automatic migrations during
init.sh. - Web operations — TelWeb health checks and HTTPS.
- Feature flags — some defaults are seeded by registry steps tied to deployment flags.