Skip to main content

Environment Variables Reference

This reference documents all environment variables available for configuring Simba Intelligence. Variables are grouped by function and include defaults and descriptions.
📝 Note: LLM provider credentials are not configured via environment variables. They are managed per-tenant through the web interface at /llm-configuration. See the LLM Provider Configuration guide.

Application Mode

APP_MODE Values

⚠️ Important: full mode starts a beat scheduler, so exactly one container may run it. Do not scale a full-mode deployment.

Full Mode Options

These apply only when APP_MODE=full.

Core Infrastructure

📝 Note: COMPOSER_HOST and COMPOSER_PUBLIC_URL are distinct and both required. The first is the in-cluster service address; the second is what a user’s browser can reach. Simba Intelligence is always served directly below Composer’s context path (<context-path>/intelligence) — that location is derived from COMPOSER_PUBLIC_URL and is not configurable, because Composer scopes its session cookie to its own context path.

Database Connection via Components

When MAIN_DB_URL is not set, the connection URL is constructed from these variables instead. This is how the Helm chart wires the database, since it handles URL-encoding of passwords containing special characters (@, :, /).
⚠️ Important: If neither MAIN_DB_URL nor the full set of POSTGRES_USER, POSTGRES_PASSWORD, POSTGRES_HOST, and POSTGRES_DATABASE is provided, startup fails immediately.

Web Server (Gunicorn)

These variables tune the Gunicorn web server that runs the main application (APP_MODE=web).
💡 Pro Tip: For memory-constrained environments, reduce GUNICORN_WORKERS and GUNICORN_MAX_REQUESTS. For high-throughput deployments, increase workers and threads proportionally to available CPU cores.

MCP Server

These variables configure the MCP server container (APP_MODE=mcp). See the MCP Server Guide for full deployment details.

Database Migrations

⚠️ Important: In production Kubernetes deployments, it is recommended to set DISABLE_DB_MIGRATIONS=true on the web container and run migrations via the dedicated simba-intelligence-db-migrate-job Helm job instead. This prevents migration race conditions when running multiple web replicas.

CORS Configuration

Cross-Origin Resource Sharing settings for the web application.
📝 Note: CORS is disabled by default, which is the most secure configuration for same-origin deployments. Only enable CORS if your frontend is hosted on a different domain than the Simba Intelligence API.

Content Security Policy (CSP)

These variables control the Content-Security-Policy response headers.
⚠️ Important: If you embed Simba Intelligence in an iframe or load external resources (e.g., custom fonts from a CDN), you must adjust the relevant CSP directives. Overly restrictive CSP values can break frontend functionality.

Logging

Example LOG_LEVELS configuration:

Celery (Background Tasks)

📝 Note: REDIS_URL (listed under Core Infrastructure) is also used as the Celery broker and result backend.

Data Retention

These control how long Simba Intelligence keeps historical records. Both are read by the worker process from inside the purge task body, so they only need to be set on worker pods — beat merely publishes the job on its schedule and never reads them.
📝 Note: These are minimums, not exact expiries. The purge jobs run once a day (3:00 AM server time), so a record can survive up to roughly 24 hours past its retention deadline — until the next purge run. See Scheduled Tasks.
In the Helm chart these map to simbaIntelligence.celery.worker.purgeTaskResultsDays and simbaIntelligence.celery.worker.questionRecordRetentionDays. Both default to "", which omits the environment variable entirely and leaves the application defaults above in effect — only set a number to override.

Composer Integration

⚠️ Important: In Helm deployments you do not set the admin credentials directly — the chart injects both from the same admin-credentials Secret that Composer itself uses, driven by zoomdataWeb.adminPassword (or zoomdataWeb.existingSecret). Composer leaves that password unset by default, so the chart fails the install or upgrade when simbaIntelligence.enabled is true and no admin password is configured. Without it, Simba Intelligence pods start healthy but cannot call Composer’s API.

Caching

The field-value cache stores the distinct values seen for each data-source attribute field (e.g., the list of values in a “Region” or “Status” column), so the Query Agent can match user text against real values without re-fetching them from Composer on every query.
📝 Note: FIELD_VALUE_CACHE_BUDGET_MB sizes only this one cache — it is not a limit on Redis’s total memory usage. Redis also holds the semantic/question-record cache, suggestions cache, and Celery broker data, none of which count against this budget. It is set via extraEnvs on both the web and worker deployments (see APP_MODE above) in the Helm chart’s values.yaml. Keep the value identical across both — the cache is shared/tenant-scoped in Redis, not tuned per pod type.

LLM Transport

LLM provider credentials are configured per tenant in the UI, not via environment variables. The one exception is the transport timeout for the experimental Ollama provider.