Skip to main content

Troubleshooting

SymptomCauseFix
404 model_not_found for a seeded modelSeed ran before the first portal sign-in; OpenAI bootstrap skippedAdd the credential and deployments on Models, or wipe the DB volume and redo setup in order (portal boot, then seed)
502 upstream_unavailable on every modelInvalid OPENAI_API_KEY, or credential encrypted with the wrong ZEALLM_ENCRYPTION_KEYVerify the key. Do not rotate the encryption key after credentials are stored without re-encryption
401 from OpenAI (passed through)Stale openai-default credential from an old OPENAI_API_KEY at first bootDelete the credential on Models, add a new one, re-add deployments
docker compose up fails: port 3000 / 8080 in useAnother process is already using the portal or gateway portStop that process, or run against the servers already listening
Invite warning bannerNo SMTPExpected locally — the account still works
Key block / revoke not picked upRedis down; gateway on TTL fallbackRestart Redis, or wait ZEAGATE_CACHE_TTL_SECONDS (default 15s)
Budget demo does not tripSpend is recorded asynchronouslyMake another call after a short lag
Sign-in rejected not_invitedEmail has no User row and is not in ZEALLM_ADMIN_EMAILSInvite from Users, or sign in as a bootstrap admin
JWTSessionError on /loginStale session cookie signed with an old AUTH_SECRETOpen /logout, or clear site cookies. Keep root .env and portal/.env AUTH_SECRET in sync
AccessDenied on sign-inPostgres is down (Docker Desktop stopped)Start Docker Desktop, then docker compose up -d db redis

Reset a local stack

docker compose down -v
docker compose up -d --build

Then sign in as a bootstrap admin so the portal can bootstrap provider credentials before you run any seed script.

After a reboot

The portal still needs the database and Redis containers. Start Docker Desktop first.