Startup and first owner
Start the hosted API and set the first owner password.
Use this page after Postgres and the Team OS API are configured.
Startup and migrations
The API runs memory migrations and Better Auth migrations on startup. The migrations can run again safely.
A healthy startup should show:
backend: postgres
listening on :8787 (GET /v1/health)Use /v1/health for deploy health checks:
curl https://team.example.com/v1/healthIf the response says backend is pglite, the server is not using hosted
Postgres. Check MEMORY_STORE_BACKEND and MEMORY_DATABASE_URL.
First owner password
The bootstrap variables create or resolve the first Team Owner. The first setup also assigns the first Company Owner. The owner still needs a password before normal email and password login works.
The reset command must run where the Team OS app files and environment variables
are available. In Docker, run it inside the memory-api container.
npm run team:owner-resetFrom the Docker host, first find the container name:
docker compose psThen run the same command inside that container:
docker exec -it <memory-api-container-name> npm run team:owner-resetIf the container does not have MEMORY_API_PUBLIC_URL, TEAM_OS_PUBLIC_URL, or
BETTER_AUTH_URL, pass the public URL explicitly:
npm run team:owner-reset -- --base-url https://team.example.comThe base URL must be a URL the operator's browser can open. For a public deployment, use the HTTPS Team OS URL. For a localhost or SSH tunnel setup, use the tunnel URL:
npm run team:owner-reset -- --base-url http://localhost:8787 --ttl 4hThe reset link expires after 1 hour by default. Use --ttl to change it. The
value can be seconds, minutes, or hours, such as 1800, 30m, or 4h. The
maximum is 24h.
Open the printed reset link and set the owner password. Treat the reset link as a secret until it expires.
After that, sign in from a local workspace with the normal login flow.
Next: Backups and restore
