1. Start infrastructure

This starts Postgres+pgvector on host port 5433 and Redis on host port 6380 — not the standard 5432/6379, to avoid clashing with any locally-installed Postgres/Redis (see Configuration).

2. Enable pgvector and run migrations

3. Start the two sibling services

Both are dependencies reached only through this service’s client adapters — they run entirely independently.

4. Bootstrap the first administrator

POST /operators requires an authenticated administrator, so the very first one has to be created directly against the DB:
Prints a temp password. Log in with it via POST /auth/operator/login, then complete the forced reset with POST /auth/operator/set-password — no operator endpoint works until that reset happens (see Auth).

5. Run the API

Check GET /health — it reports reachability for every dependency (DB, Redis, face-engine, the registry), not just its own process:
liveness_mode defaults to stub (always passes, loudly logged on boot) — flip LIVENESS_MODE=heuristic in .env to route through face-engine’s real /v1/liveness heuristic instead. Neither is compliance-grade PAD; see Architecture → Liveness.