-
Notifications
You must be signed in to change notification settings - Fork 1
Configuration
White-Ops is configured primarily through environment variables defined in the .env file. This page provides a complete reference for every variable.
- Full .env Reference
- Settings API Categories
- LLM Provider Configuration
- SMTP Configuration
- Redis Configuration
- PostgreSQL Configuration
- MinIO Configuration
| Variable | Type | Default | Description |
|---|---|---|---|
APP_NAME |
string | white-ops |
Display name for the platform |
APP_ENV |
string | production |
Environment: production, development, staging
|
SECRET_KEY |
string | (required) | Application secret key. Must be a random string of at least 32 characters. Used for general encryption. |
DEBUG |
boolean | false |
Enable debug mode. Set to true for development only. Enables verbose logging and stack traces. |
| Variable | Type | Default | Description |
|---|---|---|---|
POSTGRES_HOST |
string | postgres |
PostgreSQL hostname. Use postgres for Docker, or an IP/hostname for external databases. |
POSTGRES_PORT |
integer | 5432 |
PostgreSQL port |
POSTGRES_DB |
string | whiteops |
Database name |
POSTGRES_USER |
string | whiteops |
Database username |
POSTGRES_PASSWORD |
string | (required) | Database password. Must be set before first run. |
Connection string: Assembled as postgresql+asyncpg://{user}:{password}@{host}:{port}/{db}
| Variable | Type | Default | Description |
|---|---|---|---|
REDIS_HOST |
string | redis |
Redis hostname. Use redis for Docker. |
REDIS_PORT |
integer | 6379 |
Redis port |
REDIS_PASSWORD |
string | (required) | Redis authentication password |
Connection string: Assembled as redis://:{password}@{host}:{port}/0
| Variable | Type | Default | Description |
|---|---|---|---|
MINIO_ROOT_USER |
string | whiteops |
MinIO access key (username) |
MINIO_ROOT_PASSWORD |
string | (required) | MinIO secret key. Must be at least 8 characters. |
MINIO_ENDPOINT |
string | minio:9000 |
MinIO API endpoint |
MINIO_BUCKET |
string | whiteops-files |
Default bucket name for file storage |
| Variable | Type | Default | Description |
|---|---|---|---|
ANTHROPIC_API_KEY |
string | (empty) | Anthropic Claude API key. Starts with sk-ant-. |
OPENAI_API_KEY |
string | (empty) | OpenAI API key. Starts with sk-. |
GOOGLE_API_KEY |
string | (empty) | Google Gemini API key |
OLLAMA_BASE_URL |
string | http://host.docker.internal:11434 |
Ollama API endpoint. Use host.docker.internal to reach Ollama running on the Docker host. |
DEFAULT_LLM_PROVIDER |
string | anthropic |
Default LLM provider: anthropic, openai, google, ollama
|
DEFAULT_LLM_MODEL |
string | claude-sonnet-4-20250514 |
Default model identifier for the selected provider |
At least one LLM provider must be configured with a valid API key (except Ollama, which needs no key).
| Variable | Type | Default | Description |
|---|---|---|---|
JWT_SECRET_KEY |
string | (required) | Secret key for signing JWT tokens. Must be a random string, different from SECRET_KEY. |
JWT_ALGORITHM |
string | HS256 |
JWT signing algorithm. HS256 is recommended. |
JWT_ACCESS_TOKEN_EXPIRE_MINUTES |
integer | 1440 |
Token lifetime in minutes. Default is 24 hours. Reduce for higher security. |
ADMIN_EMAIL |
string | admin@whiteops.local |
Email for the initial admin account, created on first run. |
ADMIN_PASSWORD |
string | (required) | Password for the initial admin account. |
| Variable | Type | Default | Description |
|---|---|---|---|
MAIL_SERVER_HOST |
string | mail |
Internal mail server hostname. Use mail for Docker. |
MAIL_SERVER_PORT |
integer | 8025 |
Internal mail server port |
MAIL_DOMAIN |
string | whiteops.local |
Domain for internal agent email addresses (e.g., agent@whiteops.local) |
| Variable | Type | Default | Description |
|---|---|---|---|
SMTP_HOST |
string | (empty) | External SMTP server hostname |
SMTP_PORT |
integer | 587 |
SMTP port (587 for STARTTLS, 465 for SSL) |
SMTP_USER |
string | (empty) | SMTP authentication username |
SMTP_PASSWORD |
string | (empty) | SMTP authentication password |
SMTP_FROM |
string | (empty) | Default "From" address for outbound email |
IMAP_HOST |
string | (empty) | IMAP server hostname for reading email |
IMAP_PORT |
integer | 993 |
IMAP port (993 for SSL) |
IMAP_USER |
string | (empty) | IMAP authentication username |
IMAP_PASSWORD |
string | (empty) | IMAP authentication password |
| Variable | Type | Default | Description |
|---|---|---|---|
WORKER_NAME |
string | worker-01 |
Display name for this worker. Must be unique across the fleet. |
WORKER_MAX_AGENTS |
integer | 5 |
Maximum number of concurrent agents this worker can run. Scale based on CPU and RAM. |
MASTER_URL |
string | http://server:8000 |
URL of the master API server. Use http://server:8000 in Docker, or the master's IP/hostname for remote workers. |
Worker-specific settings (used by worker/agent/config.py):
| Variable | Type | Default | Description |
|---|---|---|---|
heartbeat_interval |
integer | 30 |
Seconds between heartbeat messages to the master |
| Variable | Type | Default | Description |
|---|---|---|---|
PROMETHEUS_ENABLED |
boolean | true |
Enable Prometheus metrics endpoint |
GRAFANA_ADMIN_PASSWORD |
string | (required if monitoring) | Grafana admin dashboard password |
| Variable | Type | Default | Description |
|---|---|---|---|
SERVER_PORT |
integer | 8000 |
Port to expose the API server on the host |
WEB_PORT |
integer | 3000 |
Port to expose the admin panel on the host |
CORS_ORIGINS |
string | http://localhost:3000 |
Comma-separated list of allowed CORS origins. Set to your actual frontend domain in production. |
Settings can also be modified at runtime via the Settings API (PATCH /api/v1/settings). These are stored in the database and override environment defaults.
| Category | Settings | Description |
|---|---|---|
llm |
default_provider, default_model
|
LLM provider and model selection |
email |
mail_domain, smtp_host, smtp_port, etc. |
Email configuration |
security |
jwt_expire_minutes, rate_limit
|
Security parameters |
general |
app_name, debug
|
General application settings |
notifications |
task_completion, worker_alerts, system_alerts
|
Notification preferences |
storage |
minio_endpoint, minio_bucket, max_file_size, retention_days
|
File storage settings |
See API-Reference#settings for full API details.
ANTHROPIC_API_KEY=sk-ant-api03-...
DEFAULT_LLM_PROVIDER=anthropic
DEFAULT_LLM_MODEL=claude-sonnet-4-20250514Supported models: claude-sonnet-4-20250514, claude-opus-4-20250514, claude-haiku-235-20241022, and other Anthropic models.
OPENAI_API_KEY=sk-...
DEFAULT_LLM_PROVIDER=openai
DEFAULT_LLM_MODEL=gpt-4oSupported models: gpt-4o, gpt-4o-mini, gpt-4-turbo, and other OpenAI chat models.
GOOGLE_API_KEY=AIza...
DEFAULT_LLM_PROVIDER=google
DEFAULT_LLM_MODEL=gemini-2.0-flashModel names are mapped through LiteLLM as gemini/{model}.
OLLAMA_BASE_URL=http://host.docker.internal:11434
DEFAULT_LLM_PROVIDER=ollama
DEFAULT_LLM_MODEL=llama3.2No API key required. Ollama must be running and accessible. Model names are mapped as ollama/{model}.
To install and run Ollama:
curl -fsSL https://ollama.com/install.sh | sh
ollama pull llama3.2
ollama serveIndividual agents can use a different provider/model than the default. Set this when creating or editing an agent in the admin panel or via the API.
To enable external email (sending email to real addresses outside the platform):
SMTP_HOST=smtp.gmail.com
SMTP_PORT=587
SMTP_USER=your-email@gmail.com
SMTP_PASSWORD=your-app-password
SMTP_FROM=noreply@yourcompany.comFor receiving external email:
IMAP_HOST=imap.gmail.com
IMAP_PORT=993
IMAP_USER=your-email@gmail.com
IMAP_PASSWORD=your-app-passwordNote: For Gmail, use an App Password (not your regular password). Enable "Less secure app access" or generate an App Password in Google Account settings.
Redis serves as a cache, pub/sub message queue, and task queue.
REDIS_HOST=redis # Docker service name, or IP for external Redis
REDIS_PORT=6379
REDIS_PASSWORD=your-strong-passwordTo use an external Redis instance (e.g., AWS ElastiCache, Redis Cloud):
REDIS_HOST=your-redis-host.example.com
REDIS_PORT=6379
REDIS_PASSWORD=your-external-redis-passwordRemove the redis service from docker-compose.yml if using an external instance.
PostgreSQL is the primary persistent data store.
POSTGRES_HOST=postgres # Docker service name, or IP for external DB
POSTGRES_PORT=5432
POSTGRES_DB=whiteops
POSTGRES_USER=whiteops
POSTGRES_PASSWORD=your-strong-passwordTo use an external PostgreSQL instance (e.g., AWS RDS, Google Cloud SQL):
POSTGRES_HOST=your-db-host.example.com
POSTGRES_PORT=5432
POSTGRES_DB=whiteops
POSTGRES_USER=whiteops
POSTGRES_PASSWORD=your-external-db-passwordRemove the postgres service from docker-compose.yml if using an external instance.
Database schema changes are managed via Alembic:
# Apply all pending migrations
make migrate
# Create a new migration
make migrate-create MSG="add new column"MinIO provides S3-compatible object storage for files uploaded by users and generated by agents.
MINIO_ROOT_USER=whiteops
MINIO_ROOT_PASSWORD=your-strong-password-min-8-chars
MINIO_ENDPOINT=minio:9000
MINIO_BUCKET=whiteops-filesThe MinIO web console is available at http://localhost:9001 for managing buckets and files directly.
To use AWS S3 or another S3-compatible service:
MINIO_ENDPOINT=s3.amazonaws.com
MINIO_ROOT_USER=your-aws-access-key
MINIO_ROOT_PASSWORD=your-aws-secret-key
MINIO_BUCKET=your-s3-bucket-nameRemove the minio service from docker-compose.yml if using external object storage.