Configuration
Every environment variable llmBreakr reads, and what it controls.
llmBreakr is configured entirely through environment variables, loaded from .env at the repo root (Docker) or server/.env (local dev).
Required
| Variable | Description |
|---|---|
PORT | Port the gateway + admin API listen on. Defaults to 4000. |
DB_HOST | MySQL host. |
DB_PORT | MySQL port. Defaults to 3306. |
DB_NAME | MySQL database name. |
DB_USER | MySQL user. |
DB_PASSWORD | MySQL password. |
REDIS_HOST | Redis host, used for rate limiting and caching. Include the port, e.g. localhost:6379. |
JWT_SECRET | Signing secret for admin session JWTs. Use a long, random value. |
CREDENTIAL_ENCRYPTION_KEY | Encryption key used at rest for stored provider credentials. Use a long, random value. |
Bootstrap admin
| Variable | Description |
|---|---|
SUPER_ADMIN_EMAIL | Email for the first admin account, created on startup. |
SUPER_ADMIN_NAME | Display name for that account. |
Optional
| Variable | Description |
|---|---|
LOADER_HASH | Internal cache-busting hash for provider/model config reloads. Safe to leave unset. |
JWT_SECRET and CREDENTIAL_ENCRYPTION_KEY protect admin sessions and
provider credentials at rest. Generate them with something like openssl rand -hex 32, and never commit .env to version control.
Provider credentials
OpenAI, Anthropic, and Gemini API keys are not set via environment variables — they're added through the admin dashboard (or admin API) per provider, encrypted at rest with CREDENTIAL_ENCRYPTION_KEY, and scoped to projects through virtual keys. This keeps raw provider keys out of your deployment config entirely.
See Virtual keys for how projects get access to a provider.