Skip to main content
Version: 0.9.14

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.

Why Ops, not TelWeb

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.

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