Skip to content

Environment Variables ​

This page lists every environment variable read by the Swiss AI Hub deployment, organized by role. It is auto-generated from the Pydantic settings classes in packages/*/swiss_ai_hub/**/*settings.py and the docker-compose templates. Do not edit by hand — run make generate-env-docs to refresh.

Variables fall into three roles:

  • Compose-required — referenced as ${VAR} in docker-compose.yml. Must be set in .env because the project's compose templates do not provide fallback defaults.
  • App-required — read as a required field by a Pydantic BaseSettings class. The application refuses to start if unset.
  • Optional — has a default in code. Set in .env only to override the default.

The deployment has a base variant (CPU) plus pure-extension variants (GPU). The first section below lists every variable required by the base; subsequent sections list only the extra variables each extension introduces on top of the base.

Variables for the base deployment (CPU) ​

Required by docker-compose interpolation ​

These variables are referenced as ${VAR} (without a ${VAR:-default} fallback) somewhere in docker-compose.yml. Compose-parse will fail or render empty values if .env does not define them. The Consumer column shows the Pydantic settings field that reads the variable when our Python code consumes it; otherwise it points at the config file that embeds it (Keycloak realm import, identity-provider config, etc.) or — if neither — is left empty. The Service(s) column lists the compose service(s) whose environment: block receives the variable.

VariableConsumerService(s)Description
ACME_EMAILtraefik
ADMIN_EMAILopen-webui
ADMIN_PASSWORD_HASHtraefik
AIHUB_CONFIG_ENCRYPTION_KEYConfigEncryptionSettings.ENCRYPTION_KEYapi, document_ingestion_pipeline, rclone_pipeline, structured_pipelineFernet key (url-safe base64, 32 bytes) encrypting secret configuration fields at rest.
AIHUB_CREATE_DEFAULT_BUCKETSAIHubSettings.CREATE_DEFAULT_BUCKETSapi, seaweedfs-initCreates default knowledge buckets and namespaces
AIHUB_DEFAULT_BUCKET_NAMEAIHubSettings.DEFAULT_BUCKET_NAMEapi, default_rag_pipeline, seaweedfs-initName of the default knowledge bucket
AIHUB_DEFAULT_NAMESPACE_NAMEAIHubSettings.DEFAULT_NAMESPACE_NAMEapiName of the default namespace
AIHUB_SHARED_BUCKET_NAMEAIHubSettings.SHARED_BUCKET_NAMEapi, seaweedfs-init, shared_rag_pipelineName of the shared knowledge bucket
AIHUB_SHARED_NAMESPACE_NAMEAIHubSettings.SHARED_NAMESPACE_NAMEapiName of the shared namespace
AIHUB_SHOW_LEGACY_KNOWLEDGEAIHubSettings.SHOW_LEGACY_KNOWLEDGEapiWhether the legacy deploy-bound knowledge databases (default_rag / shared_rag) are listed and readable. Off by default: their pipelines are disabled in every stage, so the databases are obsolete unless a deployment still runs a legacy pipeline — set this to true there to keep managing them. With it off they are neither listed nor browsable, so their documents cannot be reached by name either. Read once at startup: changing it requires an API restart.
AIHUB_STARTUP_TENANT_ACCESS_RULESStartupTenantSettings.ACCESS_RULESapiComma-separated access rules for the startup tenant. Use 'aihub.admin.>' for unrestricted access to all platform features. Leave empty to derive the ceiling from the models this instance actually serves, minus AIHUB_TENANT_DEFAULT_ACCESS_EXCLUDED_MODELS — the same default a sysadmin-created tenant gets. Setting it explicitly skips that lookup entirely, so a deployment whose model gateway is not reachable at first boot can still seed its tenant.
AIHUB_STARTUP_TENANT_DESCRIPTIONStartupTenantSettings.DESCRIPTIONapiDescription of the startup tenant.
AIHUB_STARTUP_TENANT_IDStartupTenantSettings.IDapi, keycloakUnique identifier for the startup tenant. Also used as the Keycloak group name.
AIHUB_STARTUP_TENANT_NAMEStartupTenantSettings.NAMEapiDisplay name of the startup tenant.
AIHUB_TENANT_DEFAULT_ACCESS_AGENT_CLASSESTenantDefaultAccessSettings.AGENT_CLASSESapiComma-separated agent classes a new tenant's default ceiling grants, each named as the blueprint reports itself (e.g. RAGAgent). The grant is the blueprint itself, not its existing profiles: the tenant may create assistants of these types, and reaches only the ones it creates. Every other blueprint stays hidden from that tenant until a sysadmin grants it. An allow list rather than exclusions because the discovered-class roster is still empty when the startup tenant is seeded.
AIHUB_TENANT_DEFAULT_ACCESS_EXCLUDED_MODELSTenantDefaultAccessSettings.EXCLUDED_MODELSapiComma-separated models withheld from a new tenant's default ceiling, each as capability/name exactly as LiteLLM reports it (e.g. text-generation/Apertus-70B-Instruct-2509). Matched against the live roster verbatim, so a renamed or removed model silently matches nothing and the capability falls back to a plain wildcard.
AIHUB_USER_SIGNUP_FIRST_ADMIN_USER_ROLESUserSignupSettings.FIRST_ADMIN_USER_ROLESapiComma-separated list of roles assigned to the very first user. This user is typically the initial platform administrator.
AIHUB_USER_SIGNUP_REGULAR_USER_ROLESUserSignupSettings.REGULAR_USER_ROLESapiComma-separated list of roles assigned to regular users (not the first user). These users typically have standard platform access.
AIHUB_VERSIONAIHubSettings.VERSIONanonymiser_agent, api, bot, default_rag_pipeline, document_ingestion_pipeline, email_classification_agent, expert_asking_agent, expert_rag_agent, few_shot_agent, imap_agent, knowledge_extraction_agent, llm_wrapping_agent, memory_writer_agent, namespace_selection_agent, rag_agent, rclone_pipeline, release_notes_agent, retrieval_agent, shared_rag_pipeline, structured_pipeline, sysadmin-api, universal_agent, web_fetch_agentVersion of the app
AUTH_OPEN_WEBUI_SIGNING_SECRETAuthSettings.OPEN_WEBUI_SIGNING_SECRETapi, open-webui, sysadmin-apiOpenWebUI signing secret
BACKUP_MINIMUM_KEEPBackupSettings.MINIMUM_KEEPbackup-code
BACKUP_POSTGRES_SUBPROCESS_TIMEOUT_SECONDSBackupSettings.POSTGRES_SUBPROCESS_TIMEOUT_SECONDSbackup-code
BACKUP_RETENTION_DAYSBackupSettings.RETENTION_DAYSbackup-code
BACKUP_S3_BUCKETBackupSettings.S3_BUCKETbackup-code
DAGSTER_CLEANUP_BATCH_LIMITbackup-code
DAGSTER_DBbackup-code
DAGSTER_DEBUG_LOG_RETENTION_DAYSbackup-code
DAGSTER_INFO_LOG_RETENTION_DAYSbackup-code
DAGSTER_MAX_CONCURRENT_RUNSdagster-daemon, dagster-webserver, default_rag_pipeline, document_ingestion_pipeline, rclone_pipeline, shared_rag_pipeline, structured_pipeline
DAGSTER_UNIMPORTANT_EVENT_RETENTION_DAYSbackup-code
DAGSTER_WARNING_LOG_RETENTION_DAYSbackup-code
DOCUMENT_INGESTION_EMBEDDING_MODELDocumentIngestionPipelineSettings.EMBEDDING_MODELdocument_ingestion_pipelineLiteLLM model name used to embed chunks.
DOCUMENT_INGESTION_LLM_MODELDocumentIngestionPipelineSettings.LLM_MODELdocument_ingestion_pipelineLiteLLM model name used for summaries and table refinement, and for figure descriptions when no vision model is set. Must support response schemas, which table refinement relies on.
DOCUMENT_INGESTION_OBSERVE_JOB_HOURDocumentIngestionPipelineSettings.OBSERVE_JOB_HOURdocument_ingestion_pipelineHour of the daily per-bucket observation schedule.
DOCUMENT_INGESTION_OBSERVE_JOB_MINUTEDocumentIngestionPipelineSettings.OBSERVE_JOB_MINUTEdocument_ingestion_pipelineMinute of the daily per-bucket observation schedule.
DOCUMENT_INGESTION_VISION_MODELDocumentIngestionPipelineSettings.VISION_MODELdocument_ingestion_pipelineLiteLLM model name used for figure descriptions; the text model when unset. Set it whenever the text model cannot read images, or figures are sent to a model that cannot describe them.
DOCUMENT_INGESTION_WITH_FIGURE_DESCRIPTIONSDocumentIngestionPipelineSettings.WITH_FIGURE_DESCRIPTIONSdocument_ingestion_pipelineGenerate figure descriptions with a vision LLM.
DOCUMENT_INGESTION_WITH_SUMMARY_NODESDocumentIngestionPipelineSettings.WITH_SUMMARY_NODESdocument_ingestion_pipelineGenerate recursive summaries for hierarchical RAG.
DOCUMENT_INGESTION_WITH_TABLE_REFINEMENTDocumentIngestionPipelineSettings.WITH_TABLE_REFINEMENTdocument_ingestion_pipelineRefine tables with the LLM to detect structure and split them.
DOMAIN30-clients.json, realm-settings.jsonanonymiser_agent, api, bot, default_rag_pipeline, document_ingestion_pipeline, email_classification_agent, expert_asking_agent, expert_rag_agent, few_shot_agent, imap_agent, keycloak, keycloak-config, knowledge_extraction_agent, langfuse-web, litellm, llm_wrapping_agent, memory_writer_agent, namespace_selection_agent, oauth2proxy-attu, oauth2proxy-backup, oauth2proxy-dagster, oauth2proxy-seaweed, open-webui, rag_agent, rclone_pipeline, release_notes_agent, retrieval_agent, seaweedfs-s3, shared_rag_pipeline, structured_pipeline, sysadmin-api, sysadmin-web, traefik, universal_agent, web, web_fetch_agent
ENABLE_OTEL_METRICSopen-webui
ENVapi, open-webui, sysadmin-api
ETCD_TOKENetcd, etcd-init, milvus-standalone, seaweedfs-filer
EXPERT_ASKING_CHANNEL_TYPEexpert_asking_agent
GEMINI_API_KEYlitellm
HUGGINGFACE_API_KEYlitellm, vllm, vllm-bge-m3, vllm-bge-reranker
INCIDENT_GITHUB_APP_IDIncidentSettings.GITHUB_APP_IDapiGitHub App id. The App needs Issues: write and Contents: write.
INCIDENT_GITHUB_INSTALLATION_IDIncidentSettings.GITHUB_INSTALLATION_IDapiInstallation id of the App on the target repository.
INCIDENT_GITHUB_PRIVATE_KEYIncidentSettings.GITHUB_PRIVATE_KEYapiPEM private key of the GitHub App, used to sign the JWT that buys an installation token. Supply it as a Docker secret mounted at /run/secrets/incident_github_private_key (a compose override adding a secrets: entry to the api service) or from a vault, never in a committed env file. An empty INCIDENT_GITHUB_PRIVATE_KEY in the environment does not shadow the secret.
INCIDENT_GITHUB_REPOSITORYIncidentSettings.GITHUB_REPOSITORYapiRepository issues are filed in, as 'owner/name'. Must be private — reports carry customer data, and a public repository would publish it irreversibly.
JIRA_ALLOWED_PRIVATE_HOSTSJiraSettings.ALLOWED_PRIVATE_HOSTSrelease_notes_agentComma-separated host names an agent's Jira URL may name although they are internal, such as a Jira Data Center reachable only on the company network. Every other internal host is refused.
KEYCLOAK_ADMIN_PASSWORDkeycloak, keycloak-config
KEYCLOAK_ADMIN_USERkeycloak, keycloak-config
KEYCLOAK_API_SERVICE_CLIENT_SECRETKeycloakSettings.API_SERVICE_CLIENT_SECRETapi, bot, keycloak, keycloak-config, sysadmin-apiClient secret for the API service account
KEYCLOAK_AZURE_CLIENT_IDidentity-providers.jsonkeycloak
KEYCLOAK_AZURE_CLIENT_SECRETidentity-providers.jsonkeycloak
KEYCLOAK_AZURE_TENANT_IDidentity-providers.jsonkeycloak
KEYCLOAK_LOGIN_WELCOME_PAGEKeycloakSettings.LOGIN_WELCOME_PAGEapi, sysadmin-apiShow a welcome page instead of the identity provider list on the generic login page, and stop publishing federated IDPs to anonymous callers. For shared instances whose tenants each log in through their own per-tenant login link.
KEYCLOAK_OAUTH2_PROXY_ATTU_SECRET30-clients.jsonkeycloak, keycloak-config, oauth2proxy-attu
KEYCLOAK_OAUTH2_PROXY_BACKUP_SECRET30-clients.jsonkeycloak, keycloak-config, oauth2proxy-backup
KEYCLOAK_OAUTH2_PROXY_DAGSTER_SECRET30-clients.jsonkeycloak, keycloak-config, oauth2proxy-dagster
KEYCLOAK_OAUTH2_PROXY_DATALAKE_SECRET30-clients.jsonkeycloak, keycloak-config, oauth2proxy-seaweed
KEYCLOAK_OPENWEBUI_CLIENT_SECRET30-clients.jsonkeycloak, keycloak-config, open-webui
KEYCLOAK_SHOW_KEYCLOAK_LOGINKeycloakSettings.SHOW_KEYCLOAK_LOGINapi, sysadmin-apiShow a direct Keycloak login button alongside federated IDPs
KEYCLOAK_TENANT_IDP_ALIASESKeycloakSettings.TENANT_IDP_ALIASESapiTenant login links as comma-separated tenant_id=idp_alias pairs (e.g. 'acme=acme-entra,beta=shared-idp'). A logged-out visit to /<tenant_id> goes straight to that identity provider. Empty turns tenant login links off.
LANGFUSE_ALLOWED_ORGANIZATION_CREATORSlangfuse-web
LANGFUSE_CLICKHOUSE_PASSWORDbackup-code, clickhouse, langfuse-web, langfuse-worker
LANGFUSE_ENCRYPTION_KEYlangfuse-web, langfuse-worker
LANGFUSE_INIT_USER_EMAILlangfuse-web
LANGFUSE_INIT_USER_PASSWORDlangfuse-web
LANGFUSE_KEYCLOAK_CLIENT_SECRETkeycloak, keycloak-config, langfuse-web
LANGFUSE_NEXTAUTH_SECRETlangfuse-web
LANGFUSE_PUBLIC_KEYLangfuseSettings.PUBLIC_KEYapi, langfuse-web, otel-collectorLangfuse public API key
LANGFUSE_SALTlangfuse-web, langfuse-worker
LANGFUSE_SECRET_KEYLangfuseSettings.SECRET_KEYapi, langfuse-web, otel-collectorLangfuse secret API key
LITELLM_CONFIG_VARIANTlitellm
LITELLM_MASTER_KEYlitellm-config.ymlapi, default_rag_pipeline, document_ingestion_pipeline, email_classification_agent, expert_asking_agent, expert_rag_agent, few_shot_agent, imap_agent, knowledge_extraction_agent, litellm, llm_wrapping_agent, memory_writer_agent, mineru-api, namespace_selection_agent, rag_agent, release_notes_agent, retrieval_agent, shared_rag_pipeline, universal_agent, web_fetch_agent
LITELLM_UI_PASSWORDlitellm
LITELLM_UI_USERNAMElitellm
LOCAL_LLM_TOKENlitellm-config.ymllitellm, vllm, vllm-bge-m3, vllm-bge-reranker
LOG_LEVELLogSettings.LEVELanonymiser_agent, api, bot, dagster-daemon, dagster-webserver, default_rag_pipeline, document_ingestion_pipeline, email_classification_agent, expert_asking_agent, expert_rag_agent, few_shot_agent, imap_agent, knowledge_extraction_agent, llm_wrapping_agent, memory_writer_agent, namespace_selection_agent, open-webui, rag_agent, rclone_pipeline, release_notes_agent, retrieval_agent, shared_rag_pipeline, structured_pipeline, sysadmin-api, traefik, universal_agent, web_fetch_agentLogging level
MAINTENANCE_DISABLEDbackup-code
MEM0_EMBEDDING_MODEL_NAMEMem0Settings.EMBEDDING_MODEL_NAMEapi, bot, expert_asking_agent, expert_rag_agent, few_shot_agent, llm_wrapping_agent, memory_writer_agent, rag_agent, shared_rag_pipeline, universal_agent, web_fetch_agentName of the embedding model to use
MEM0_LLM_NAMEMem0Settings.LLM_NAMEapi, bot, expert_asking_agent, expert_rag_agent, few_shot_agent, llm_wrapping_agent, memory_writer_agent, rag_agent, shared_rag_pipeline, universal_agent, web_fetch_agentName of the LLM to use. Platform default; an agent may override it per profile.
MEM0_RERANKING_MODEL_NAMEMem0Settings.RERANKING_MODEL_NAMEapi, bot, expert_asking_agent, expert_rag_agent, few_shot_agent, llm_wrapping_agent, memory_writer_agent, rag_agent, shared_rag_pipeline, universal_agent, web_fetch_agentName of the reranking model to use
MEM0_TELEMETRYapi, bot, email_classification_agent, expert_asking_agent, expert_rag_agent, few_shot_agent, imap_agent, llm_wrapping_agent, memory_writer_agent, namespace_selection_agent, rag_agent, release_notes_agent, retrieval_agent, shared_rag_pipeline, universal_agent, web_fetch_agent
MILVUS_DIMENSIONMilvusSettings.DIMENSIONanonymiser_agent, api, default_rag_pipeline, document_ingestion_pipeline, email_classification_agent, expert_asking_agent, expert_rag_agent, few_shot_agent, imap_agent, knowledge_extraction_agent, llm_wrapping_agent, memory_writer_agent, namespace_selection_agent, rag_agent, release_notes_agent, retrieval_agent, shared_rag_pipeline, universal_agent, web_fetch_agentDimension of the embedding vector
MILVUS_ROOT_PASSWORDMilvusSettings.ROOT_PASSWORDanonymiser_agent, api, attu, backup-code, default_rag_pipeline, document_ingestion_pipeline, email_classification_agent, expert_asking_agent, expert_rag_agent, few_shot_agent, imap_agent, knowledge_extraction_agent, llm_wrapping_agent, memory_writer_agent, milvus-standalone, namespace_selection_agent, open-webui, rag_agent, release_notes_agent, retrieval_agent, shared_rag_pipeline, universal_agent, web_fetch_agentRoot password for Milvus authentication. If not set, no auth is used. Username is always 'root'.
MINERU_API_MAX_CONCURRENT_REQUESTSmineru-api
MINERU_API_TIMEOUTMineruSettings.API_TIMEOUTapi, default_rag_pipeline, document_ingestion_pipeline, email_classification_agent, expert_rag_agent, few_shot_agent, llm_wrapping_agent, rag_agent, shared_rag_pipeline, universal_agent, web_fetch_agentTimeout for MinerU API calls in seconds
MINERU_FORMULA_ENABLEMineruSettings.FORMULA_ENABLEapi, default_rag_pipeline, document_ingestion_pipeline, email_classification_agent, expert_rag_agent, few_shot_agent, llm_wrapping_agent, rag_agent, shared_rag_pipeline, universal_agent, web_fetch_agentEnable formula/equation parsing
MINERU_MAX_CONCURRENT_BATCH_REQUESTSMineruSettings.MAX_CONCURRENT_BATCH_REQUESTSapi, default_rag_pipeline, email_classification_agent, expert_rag_agent, few_shot_agent, llm_wrapping_agent, rag_agent, shared_rag_pipeline, universal_agent, web_fetch_agentClient-side concurrent page-batch requests per document
MINERU_PAGE_BATCH_SIZEMineruSettings.PAGE_BATCH_SIZEapi, default_rag_pipeline, email_classification_agent, expert_rag_agent, few_shot_agent, llm_wrapping_agent, rag_agent, shared_rag_pipeline, universal_agent, web_fetch_agentPages per MinerU request for PDFs; keeps server memory constant. 0 disables batching
MINERU_TABLE_ENABLEMineruSettings.TABLE_ENABLEapi, default_rag_pipeline, document_ingestion_pipeline, email_classification_agent, expert_rag_agent, few_shot_agent, llm_wrapping_agent, rag_agent, shared_rag_pipeline, universal_agent, web_fetch_agentEnable table detection and parsing
MINERU_VLM_NAMEMineruSettings.VLM_NAMEapi, default_rag_pipeline, document_ingestion_pipeline, email_classification_agent, expert_rag_agent, few_shot_agent, llm_wrapping_agent, mineru-api, rag_agent, shared_rag_pipeline, universal_agent, web_fetch_agentLiteLLM model alias for MinerU VLM
MONGO_PASSWORDanonymiser_agent, api, backup-code, bot, default_rag_pipeline, document_ingestion_pipeline, email_classification_agent, expert_asking_agent, expert_rag_agent, ferretdb, few_shot_agent, imap_agent, knowledge_extraction_agent, llm_wrapping_agent, memory_writer_agent, namespace_selection_agent, postgres-ferretdb, rag_agent, rclone_pipeline, release_notes_agent, retrieval_agent, shared_rag_pipeline, structured_pipeline, sysadmin-api, universal_agent, web_fetch_agent
MONGO_USERNAMEanonymiser_agent, api, backup-code, bot, default_rag_pipeline, document_ingestion_pipeline, email_classification_agent, expert_asking_agent, expert_rag_agent, ferretdb, few_shot_agent, imap_agent, knowledge_extraction_agent, llm_wrapping_agent, memory_writer_agent, namespace_selection_agent, postgres-ferretdb, rag_agent, rclone_pipeline, release_notes_agent, retrieval_agent, shared_rag_pipeline, structured_pipeline, sysadmin-api, universal_agent, web_fetch_agent
NATS_TOKENNatsSettings.TOKENanonymiser_agent, api, backup-code, bot, default_rag_pipeline, document_ingestion_pipeline, email_classification_agent, expert_asking_agent, expert_rag_agent, few_shot_agent, imap_agent, knowledge_extraction_agent, llm_wrapping_agent, memory_writer_agent, namespace_selection_agent, nats, rag_agent, rclone_pipeline, release_notes_agent, retrieval_agent, shared_rag_pipeline, structured_pipeline, sysadmin-api, universal_agent, web_fetch_agentAuthentication token for NATS server. If not set, no auth is used.
NEO4J_PASSWORDNeo4jSettings.PASSWORDapi, bot, expert_asking_agent, expert_rag_agent, few_shot_agent, llm_wrapping_agent, memory_writer_agent, neo4j, rag_agent, shared_rag_pipeline, universal_agent, web_fetch_agentPassword for Neo4j DB Server
NEO4J_USERNAMENeo4jSettings.USERNAMEapi, bot, expert_asking_agent, expert_rag_agent, few_shot_agent, llm_wrapping_agent, memory_writer_agent, neo4j, rag_agent, shared_rag_pipeline, universal_agent, web_fetch_agentUsername for Neo4j DB Server
NOTIFICATION_URLSNotificationSettings.URLSdefault_rag_pipeline, document_ingestion_pipeline, rclone_pipeline, shared_rag_pipeline, structured_pipelineApprise notification URIs (comma-separated). Examples: 'slack://TokenA/TokenB/TokenC/#alerts', 'mailto://user:pw@smtp.example.com', 'discord://webhook_id/webhook_token'. See https://github.com/caronc/apprise for the full list.
OAUTH_ADMIN_ROLES_OPENWEBUIopen-webui
OAUTH_ALLOWED_GROUPS_ATTUoauth2proxy-attu
OAUTH_ALLOWED_GROUPS_BACKUPoauth2proxy-backup
OAUTH_ALLOWED_GROUPS_DAGSTERoauth2proxy-dagster
OAUTH_ALLOWED_GROUPS_SEAWEEDFSoauth2proxy-seaweed
OAUTH_CLIENT_IDapi, bot, open-webui, sysadmin-api, sysadmin-web, web
OAUTH_CLIENT_SECRETapi, bot, open-webui, sysadmin-api
OAUTH_COOKIE_SECRET_ATTUoauth2proxy-attu
OAUTH_COOKIE_SECRET_BACKUPoauth2proxy-backup
OAUTH_COOKIE_SECRET_DAGSTERoauth2proxy-dagster
OAUTH_COOKIE_SECRET_SEAWEEDFSoauth2proxy-seaweed
OAUTH_CUSTOM_SIGN_IN_LOGOoauth2proxy-attu, oauth2proxy-backup, oauth2proxy-dagster, oauth2proxy-seaweed
OAUTH_TENANT_IDapi, sysadmin-api
OPENWEBUI_BYPASS_ADMIN_ACCESS_CONTROLopen-webui
OPENWEBUI_ENABLE_ADMIN_EXPORTopen-webui
OPENWEBUI_MODEL_NAME_LOCALEOpenWebuiSettings.MODEL_NAME_LOCALEopen-webuiLocale used to render agent workspace-model names in OpenWebUI, which only stores a single name per model. Falls back to the platform default locale and then any available translation.
OPENWEBUI_SCIM_TOKENOpenWebuiSettings.SCIM_TOKENapi, open-webui, sysadmin-apiSCIM 2.0 bearer token for group and user provisioning
OPENWEBUI_SECRET_KEYOpenWebuiSettings.SECRET_KEYapi, open-webui, sysadmin-apiOpenWebUI WEBUI_SECRET_KEY for JWT signing
OPENWEBUI_SERVICE_ACCOUNT_IDOpenWebuiSettings.SERVICE_ACCOUNT_IDapi, openwebui-init, sysadmin-apiUUID of the AI-Hub service account in OpenWebUI's database
OPENWEBUI_WEBHOOK_SECRETOpenWebuiSettings.WEBHOOK_SECRETapi, open-webui, sysadmin-apiShared secret for authenticating OpenWebUI webhook calls
OPEN_TERMINAL_API_KEYOpenTerminalSettings.API_KEYapi, open-terminal, open-webui, universal_agentThe bearer key every sandbox caller sends.
OTEL_CLOUD_ENDPOINTotel-config.ymlotel-collector
OTEL_CLOUD_HEADERSotel-config.ymlotel-collector
OTEL_ENABLEDOpenTelemetrySettings.ENABLEDanonymiser_agent, api, email_classification_agent, expert_asking_agent, expert_rag_agent, few_shot_agent, imap_agent, knowledge_extraction_agent, llm_wrapping_agent, memory_writer_agent, namespace_selection_agent, rag_agent, release_notes_agent, retrieval_agent, sysadmin-api, universal_agent, web_fetch_agentEnable/disable OpenTelemetry tracing entirely
OTEL_METRICS_ENABLEDOpenTelemetrySettings.METRICS_ENABLEDapiEnable/disable OpenTelemetry request metrics (separate from tracing)
PII_ANONYMISE_EXTERNAL_MODELSlitellm
POSTGRES_PASSWORDopenwebui-init-openwebui.shbackup-code, dagster-daemon, dagster-webserver, default_rag_pipeline, document_ingestion_pipeline, keycloak, langfuse-web, langfuse-worker, litellm, open-webui, openwebui-init, pgbouncer, postgres, postgres-ferretdb, rclone_pipeline, shared_rag_pipeline, structured_pipeline
POSTGRES_PORTopenwebui-init-openwebui.shbackup-code, openwebui-init
POSTGRES_USERopenwebui-init-openwebui.shbackup-code, dagster-daemon, dagster-webserver, default_rag_pipeline, document_ingestion_pipeline, keycloak, langfuse-web, langfuse-worker, litellm, open-webui, openwebui-init, pgbouncer, postgres, postgres-ferretdb, rclone_pipeline, shared_rag_pipeline, structured_pipeline
PRESIDIO_ANALYZER_API_KEYPresidioAnalyzerSettings.API_KEYanonymiser_agent, litellm, presidio-analyzerThe bearer key every analyzer caller sends.
RAG_FILE_MAX_COUNTopen-webui
RAG_FILE_MAX_SIZEopen-webui
RAG_IMAGE_INLINE_ENABLEDRagImageInlineSettings.ENABLEDexpert_rag_agent, litellm, rag_agent, retrieval_agentWhether RAG figures are inlined as base64 at the LiteLLM gateway.
RAG_IMAGE_INLINE_MAX_BYTESlitellm
RCLONE_PIPELINE_OBSERVE_JOB_HOURRclonePipelineSettings.OBSERVE_JOB_HOURrclone_pipelineHour of the daily per-database sync. Before the ingestion pipeline's midnight observation, so a day's sync is vectorised by the same night's backstop run.
RCLONE_PIPELINE_OBSERVE_JOB_MINUTERclonePipelineSettings.OBSERVE_JOB_MINUTErclone_pipelineMinute of the daily per-database sync.
RCLONE_RC_PASSRcloneSettings.RC_PASSrclone, rclone_pipelineRC API password for authentication.
RCLONE_RC_USERRcloneSettings.RC_USERrclone, rclone_pipelineRC API username for authentication.
REDIS_TOKENRedisSettings.TOKENanonymiser_agent, api, backup-code, email_classification_agent, expert_asking_agent, expert_rag_agent, few_shot_agent, imap_agent, knowledge_extraction_agent, langfuse-web, langfuse-worker, litellm, llm_wrapping_agent, memory_writer_agent, namespace_selection_agent, open-webui, rag_agent, release_notes_agent, retrieval_agent, sysadmin-api, universal_agent, valkey, web_fetch_agentAuthentication token for Redis server. If not set, no auth is used.
S3_STORAGE_ACCESS_KEYS3StorageSettings.ACCESS_KEYapi, backup-code, bot, clickhouse, default_rag_pipeline, document_ingestion_pipeline, email_classification_agent, expert_rag_agent, few_shot_agent, imap_agent, knowledge_extraction_agent, langfuse-web, langfuse-worker, llm_wrapping_agent, milvus-standalone, open-webui, rag_agent, rclone_pipeline, retrieval_agent, seaweedfs-init, seaweedfs-s3, shared_rag_pipeline, structured_pipeline, universal_agent, web_fetch_agentThe access key for the s3 endpoint.
S3_STORAGE_SECRET_KEYS3StorageSettings.SECRET_KEYapi, backup-code, bot, clickhouse, default_rag_pipeline, document_ingestion_pipeline, email_classification_agent, expert_rag_agent, few_shot_agent, imap_agent, knowledge_extraction_agent, langfuse-web, langfuse-worker, llm_wrapping_agent, milvus-standalone, open-webui, rag_agent, rclone_pipeline, retrieval_agent, seaweedfs-init, seaweedfs-s3, shared_rag_pipeline, structured_pipeline, universal_agent, web_fetch_agentThe secret key for the s3 endpoint.
SANDBOX_MIRROR_INTERVAL_SECONDSsandbox-mirror
SANDBOX_MIRROR_S3_ACCESS_KEYs3-entrypoint.shsandbox-mirror, seaweedfs-s3
SANDBOX_MIRROR_S3_SECRET_KEYs3-entrypoint.shsandbox-mirror, seaweedfs-s3
SCHEDULER_EVENT_RETENTION_DAYSSchedulerSettings.EVENT_RETENTION_DAYSapiAge beyond which events in a scheduled thread are pruned. Zero disables pruning entirely, which is the default: deleting a tenant's history must be something an operator turned on, never something a deploy started doing.
SCHEDULER_LEASE_TTL_SECONDSSchedulerSettings.LEASE_TTL_SECONDSapiLeader-lease lifetime. Must exceed the worst-case tick runtime, or the lease expires mid-tick and a second replica starts one concurrently.
SCHEDULER_MAX_CATCHUP_MINUTESSchedulerSettings.MAX_CATCHUP_MINUTESapiHow far back a tick replays after downtime. Occurrences older than this are logged and dropped rather than fired as a burst of stale runs.
SCHEDULER_MAX_RUNS_PER_PROFILE_PER_MONTHSchedulerSettings.MAX_RUNS_PER_PROFILE_PER_MONTHapiMost runs a single schedule may produce in 30 days, rejected when the profile is saved. Defaults to the tightest schedule cron can express (every minute), so out of the box it rejects nothing expressible and exists for a deployment that wants to allow less.
SCHEDULER_MAX_TOTAL_RUNS_PER_MONTHSchedulerSettings.MAX_TOTAL_RUNS_PER_MONTHapiMost runs all schedules together may produce in 30 days, checked when a profile is saved. Zero disables the check, which is the default — the right ceiling depends on how many agents a deployment runs and what they cost, and no platform-wide constant knows that.
SCHEDULER_REDIS_KEY_PREFIXSchedulerSettings.REDIS_KEY_PREFIXapiNamespace for all scheduler keys in Redis. Change it to run an isolated scheduler.
SCHEDULER_RETENTION_INTERVAL_SECONDSSchedulerSettings.RETENTION_INTERVAL_SECONDSapiMinimum seconds between prunes, enforced cluster-wide. Keeps bulk deletes off the tick.
SCHEDULER_TICK_INTERVAL_SECONDSSchedulerSettings.TICK_INTERVAL_SECONDSapiSeconds between scheduler ticks. Bounds how late an occurrence can fire.
SEARXNG_SECRET_KEYsearxng
SEAWEEDFS_TOKENseaweedfs-filer, seaweedfs-master, seaweedfs-s3, seaweedfs-volume
SLACK_CHANNEL_IDexpert_asking_agent
SLACK_SERVICE_URLexpert_asking_agent
STONEY_CLOUD_API_BASE_URLlitellm-config.ymllitellm
STONEY_CLOUD_API_KEYlitellm-config.ymllitellm
STRUCTURED_PIPELINE_ALLOWED_PRIVATE_HOSTSStructuredPipelineSettings.ALLOWED_PRIVATE_HOSTSstructured_pipelineComma-separated host names a source URL may name although they are internal, such as a Jira Data Center reachable only on the company network. Every other internal host is refused, because a knowledge administrator sets the URL and the pipeline can reach the platform's own services.
STRUCTURED_PIPELINE_OBSERVE_JOB_HOURStructuredPipelineSettings.OBSERVE_JOB_HOURstructured_pipelineHour of the daily per-database sync. Before the ingestion pipeline's midnight observation, so a day's sync is vectorised by the same night's backstop run.
STRUCTURED_PIPELINE_OBSERVE_JOB_MINUTEStructuredPipelineSettings.OBSERVE_JOB_MINUTEstructured_pipelineMinute of the daily per-database sync.
SUPERUSER_EMAILSuperuserSettings.EMAILapi, keycloak, sysadmin-apiKeycloak email used to look up the superuser.
SUPERUSER_FIRSTNAMEusers-superuser.jsonkeycloak
SUPERUSER_LASTNAMEusers-superuser.jsonkeycloak
SUPERUSER_PASSWORDusers-superuser.jsonkeycloak
SUPERUSER_ROLES_JSONSuperuserSettings.ROLES_JSONapi, keycloak, sysadmin-apiJSON array of realm roles assigned to the superuser, shared verbatim with the Keycloak realm import via the same environment variable. Must include AIHubSysAdmin.
SUPERUSER_TOKENSuperuserSettings.TOKENapi, open-webui, sysadmin-apiStatic bearer token for machine-to-machine API calls. Must start with 'sk-'.
SUPERUSER_USERNAMESuperuserSettings.USERNAMEapi, keycloak, sysadmin-apiLog-only label for the seeded superuser in API startup logs. Not persisted in Keycloak — the Keycloak username is SUPERUSER_EMAIL (registrationEmailAsUsername), so login is by email.
SWISS_LLM_CLOUD_API_BASE_URLlitellm-config.ymllitellm
SWISS_LLM_CLOUD_API_KEYlitellm-config.ymllitellm
SWISS_LLM_CLOUD_EMBEDDING_API_BASE_URLlitellm-config.ymllitellm
SWISS_LLM_CLOUD_EMBEDDING_API_KEYlitellm-config.ymllitellm
SWISS_LLM_CLOUD_IMAGE_API_BASE_URLlitellm-config.ymllitellm
SWISS_LLM_CLOUD_IMAGE_API_KEYlitellm-config.ymllitellm
SWISS_LLM_CLOUD_OCR_API_BASE_URLlitellm-config.ymllitellm
SWISS_LLM_CLOUD_OCR_API_KEYlitellm-config.ymllitellm
SWISS_LLM_CLOUD_RERANKING_API_BASE_URLlitellm-config.ymllitellm
SWISS_LLM_CLOUD_RERANKING_API_KEYlitellm-config.ymllitellm
SWISS_LLM_CLOUD_WHISPER_API_BASE_URLlitellm-config.ymllitellm
SWISS_LLM_CLOUD_WHISPER_API_KEYlitellm-config.ymllitellm
SWISS_LLM_CLOUD_WHISPER_MODELlitellm-config.ymllitellm
TEAMS_BOT_IDexpert_asking_agent
TEAMS_CHANNEL_IDexpert_asking_agent
TEAMS_TENANT_IDexpert_asking_agent

Required by SDK settings classes (not used by the default deployment) ​

These variables are declared as required fields on a Pydantic BaseSettings class and are not consumed by any service in the default docker-compose stack. The empty Service(s) column reflects this: no container in the default deployment loads the settings class. They become operationally required only when a custom agent, pipeline, or other extension is added to docker-compose that activates the corresponding SDK functionality (e.g. the SharePoint connector or Azure Document Intelligence loader). Until then, leaving the placeholders unchanged is fine — Pydantic only validates the class when something instantiates it.

VariableConsumerService(s)Description
AZURE_DATA_LAKE_CONNECTION_STRINGAzureDataLakeSettings.CONNECTION_STRINGAzure Data Lake connection string for explicit authentication. Recommended over implicit authentication.
AZURE_DOCUMENT_INTELLIGENCE_API_KEYAzureDocumentIntelligenceSettings.API_KEYAPI key for Document Intelligence
AZURE_DOCUMENT_INTELLIGENCE_ENDPOINTAzureDocumentIntelligenceSettings.ENDPOINT
SHAREPOINT_CLIENT_IDSharePointSettings.CLIENT_IDThe application (client) ID.
SHAREPOINT_CLIENT_SECRETSharePointSettings.CLIENT_SECRETThe client secret for authentication.
SHAREPOINT_SITE_URLSharePointSettings.SITE_URLThe SharePoint site URL.
SHAREPOINT_TENANT_IDSharePointSettings.TENANT_IDThe Azure AD tenant ID.

Optional: override platform defaults ​

These variables have sensible defaults (or are supplied to containers by docker-compose) and do not need to be set in .env. Add them only to override the default. Vars marked (supplied by compose) are required by the application but get their value injected through docker-compose.yml, so setting them in .env has no effect.

VariableConsumerDefaultService(s)Description
AIHUB_API_DEBUG_MODEAIHubSettings.API_DEBUG_MODEFalseDebug mode for development
AIHUB_CREATE_DEFAULT_ROLESAIHubSettings.CREATE_DEFAULT_ROLESTrueapi, sysadmin-apiCreates default roles like AI-Hub Admin and AI-Hub User
AIHUB_FRONTEND_ORIGINAIHubSettings.FRONTEND_ORIGIN(supplied by compose)anonymiser_agent, api, bot, default_rag_pipeline, document_ingestion_pipeline, email_classification_agent, expert_asking_agent, expert_rag_agent, few_shot_agent, imap_agent, knowledge_extraction_agent, llm_wrapping_agent, memory_writer_agent, namespace_selection_agent, rag_agent, rclone_pipeline, release_notes_agent, retrieval_agent, shared_rag_pipeline, structured_pipeline, sysadmin-api, universal_agent, web_fetch_agentComma separated list of origins to allow CORS
AIHUB_INTERNAL_API_BASE_URLAIHubSettings.INTERNAL_API_BASE_URL'http://api:8000'sysadmin-apiInternal base URL of the main platform API (no path), used for server-to-server calls such as the sysadmin plane proxying the access-capability catalog. Predictable per deployment: the Docker service name in compose, localhost in local dev.
AIHUB_MONGO_MAIN_DB_NAMEAIHubSettings.MONGO_MAIN_DB_NAME'aihub'Name of mongodb database that will be used to store data
AIHUB_OPENAI_API_BASE_URLAIHubSettings.OPENAI_API_BASE_URL'http://api:8000/api/v1/active/openai'apiBase URL of AI-Hub's OpenAI-compatible endpoint, used for Langfuse LLM connection
AUTH_ENABLE_API_ACCESSAuthSettings.ENABLE_API_ACCESSTrueapi, sysadmin-apiEnable API access
AZURE_DOCUMENT_INTELLIGENCE_API_VERSIONAzureDocumentIntelligenceSettings.API_VERSION'2024-11-30'
AZURE_DOCUMENT_INTELLIGENCE_EXTENSIONSAzureDocumentIntelligenceSettings.EXTENSIONS['pdf', 'docx', 'xlsx', 'pptx', 'html']Supported file extensions for document processing
BACKUP_AWS_ENDPOINT_URLBackupSettings.AWS_ENDPOINT_URL'http://seaweedfs-s3:9000'backup-code
BACKUP_CLICKHOUSE_HOSTBackupSettings.CLICKHOUSE_HOST'clickhouse'backup-code
BACKUP_CLICKHOUSE_PORTBackupSettings.CLICKHOUSE_PORT8123
BACKUP_CLICKHOUSE_USERBackupSettings.CLICKHOUSE_USER'clickhouse'backup-code
BACKUP_DAGSTER_CLEANUP_BATCH_LIMITBackupSettings.DAGSTER_CLEANUP_BATCH_LIMIT1000000backup-code
BACKUP_DAGSTER_DBBackupSettings.DAGSTER_DB'dagster'backup-code
BACKUP_DAGSTER_DEBUG_LOG_RETENTION_DAYSBackupSettings.DAGSTER_DEBUG_LOG_RETENTION_DAYS7backup-code
BACKUP_DAGSTER_INFO_LOG_RETENTION_DAYSBackupSettings.DAGSTER_INFO_LOG_RETENTION_DAYS60backup-code
BACKUP_DAGSTER_UNIMPORTANT_EVENT_RETENTION_DAYSBackupSettings.DAGSTER_UNIMPORTANT_EVENT_RETENTION_DAYS30backup-code
BACKUP_DAGSTER_WARNING_LOG_RETENTION_DAYSBackupSettings.DAGSTER_WARNING_LOG_RETENTION_DAYS60backup-code
BACKUP_LANGFUSE_CLICKHOUSE_PASSWORDBackupSettings.LANGFUSE_CLICKHOUSE_PASSWORD(supplied by compose)backup-code
BACKUP_MAINTENANCE_DISABLEDBackupSettings.MAINTENANCE_DISABLEDFalsebackup-code
BACKUP_MILVUS_HOSTBackupSettings.MILVUS_HOST'milvus-standalone'backup-code
BACKUP_MILVUS_PORTBackupSettings.MILVUS_PORT19530backup-code
BACKUP_MILVUS_ROOT_PASSWORDBackupSettings.MILVUS_ROOT_PASSWORD(supplied by compose)backup-code
BACKUP_MONGO_PASSWORDBackupSettings.MONGO_PASSWORD(supplied by compose)backup-code
BACKUP_MONGO_USERNAMEBackupSettings.MONGO_USERNAME'admin'backup-code
BACKUP_NATS_TOKENBackupSettings.NATS_TOKEN(supplied by compose)backup-code
BACKUP_NATS_URLBackupSettings.NATS_URL'nats://nats:4222'backup-code
BACKUP_NEO4J_CONTAINERBackupSettings.NEO4J_CONTAINER'neo4j'backup-code
BACKUP_POSTGRES_FERRETDB_HOSTBackupSettings.POSTGRES_FERRETDB_HOST'postgres-ferretdb'backup-code
BACKUP_POSTGRES_HOSTBackupSettings.POSTGRES_HOST'postgres'backup-code
BACKUP_POSTGRES_PASSWORDBackupSettings.POSTGRES_PASSWORD(supplied by compose)backup-code
BACKUP_POSTGRES_PORTBackupSettings.POSTGRES_PORT5432backup-code
BACKUP_POSTGRES_USERBackupSettings.POSTGRES_USER'admin'backup-code
BACKUP_REDIS_TOKENBackupSettings.REDIS_TOKEN(supplied by compose)backup-code
BACKUP_S3_STORAGE_ACCESS_KEYBackupSettings.S3_STORAGE_ACCESS_KEY'admin'backup-code
BACKUP_S3_STORAGE_SECRET_KEYBackupSettings.S3_STORAGE_SECRET_KEY(supplied by compose)backup-code
BACKUP_VALKEY_CONTAINERBackupSettings.VALKEY_CONTAINER'valkey'backup-code
BACKUP_VALKEY_HOSTBackupSettings.VALKEY_HOST'valkey'
BACKUP_VALKEY_PORTBackupSettings.VALKEY_PORT6379
INCIDENT_MAX_ATTACHMENTSIncidentSettings.MAX_ATTACHMENTS5How many files one report may carry. Attachments are committed to the repository and cannot meaningfully be removed from its history afterwards, which is why this is deliberately small.
INCIDENT_MAX_ATTACHMENT_BYTESIncidentSettings.MAX_ATTACHMENT_BYTES5242880Largest single attachment accepted, in bytes.
KEYCLOAK_API_SERVICE_CLIENT_IDKeycloakSettings.API_SERVICE_CLIENT_ID'aihub-api-service'Client ID for the API service account
KEYCLOAK_EXTERNAL_URLKeycloakSettings.EXTERNAL_URLNoneapi, bot, sysadmin-apiKeycloak external URL as seen by browsers, used for issuer validation
KEYCLOAK_REALMKeycloakSettings.REALM'aihub'api, bot, sysadmin-apiKeycloak realm name
KEYCLOAK_URLKeycloakSettings.URL(supplied by compose)api, bot, keycloak-config, sysadmin-apiKeycloak internal URL for direct access (e.g., http://keycloak:8080)
LANGFUSE_BASE_URLLangfuseSettings.BASE_URL(supplied by compose)apiLangfuse server base URL
LANGFUSE_PROJECT_IDLangfuseSettings.PROJECT_IDNoneapiLangfuse project ID for constructing dataset URLs
LANGFUSE_PUBLIC_URLLangfuseSettings.PUBLIC_URLNoneapiPublic-facing Langfuse URL for browser links (e.g. https://langfuse.example.com)
LANGFUSE_TIMEOUTLangfuseSettings.TIMEOUT60Timeout in seconds for Langfuse API requests
LITE_LLM_PROXY_API_KEYLiteLLMProxySettings.API_KEYNoneapi, default_rag_pipeline, document_ingestion_pipeline, email_classification_agent, expert_asking_agent, expert_rag_agent, few_shot_agent, imap_agent, knowledge_extraction_agent, llm_wrapping_agent, memory_writer_agent, namespace_selection_agent, rag_agent, release_notes_agent, retrieval_agent, shared_rag_pipeline, universal_agent, web_fetch_agentAPI key for authentication. If not provided, other authentication methods will be used.
LITE_LLM_PROXY_BASE_URLLiteLLMProxySettings.BASE_URL(supplied by compose)api, default_rag_pipeline, document_ingestion_pipeline, email_classification_agent, expert_asking_agent, expert_rag_agent, few_shot_agent, imap_agent, knowledge_extraction_agent, llm_wrapping_agent, memory_writer_agent, namespace_selection_agent, rag_agent, release_notes_agent, retrieval_agent, shared_rag_pipeline, universal_agent, web_fetch_agentThe base URL of the model.
LITE_LLM_PROXY_CONNECT_TIMEOUT_SECONDSLiteLLMProxySettings.CONNECT_TIMEOUT_SECONDS5.0How long an LLM or embedding call may take to open its connection to the gateway. Kept far below the request timeout: a connect that never completes has nothing in flight, so failing it in seconds lets the SDK retry at once instead of waiting out the whole request timeout.
LITE_LLM_PROXY_INTERNAL_BASE_URLLiteLLMProxySettings.INTERNAL_BASE_URLNoneIn-cluster LiteLLM URL that Langfuse dials from its own containers when running managed evaluators. Falls back to BASE_URL, which is already correct wherever the API and Langfuse share a network; set it only where they do not, as in local development where the API runs on the host. Its hostname must appear in LANGFUSE_LLM_CONNECTION_WHITELISTED_HOST on langfuse-web and langfuse-worker.
LITE_LLM_PROXY_USER_BUDGET_DURATIONLiteLLMProxySettings.USER_BUDGET_DURATIONNoneBudget is reset at the end of specified duration. If not set, budget is never reset. You can set duration as seconds ("30s"), minutes ("30m"), hours ("30h"), days ("30d"), months ("1mo").
LITE_LLM_PROXY_USER_MAX_BUDGETLiteLLMProxySettings.USER_MAX_BUDGETNoneBudget available to a user in one period
LITE_LLM_PROXY_USER_MAX_PARALLEL_REQUESTSLiteLLMProxySettings.USER_MAX_PARALLEL_REQUESTSNoneRate limit a user based on the number of parallel requests. Raises 429 error, if user's parallel requests > x.
LITE_LLM_PROXY_USER_RPM_LIMITLiteLLMProxySettings.USER_RPM_LIMITNoneSpecify rpm limit for a given user (Requests per minute)
LITE_LLM_PROXY_USER_SOFT_BUDGETLiteLLMProxySettings.USER_SOFT_BUDGETNoneGet alerts when user crosses given budget, doesn't block requests.
LITE_LLM_PROXY_USER_TPM_LIMITLiteLLMProxySettings.USER_TPM_LIMITNoneSpecify tpm limit for a given user (Tokens per minute)
MEM0_SEARCH_QUERY_EMBEDDING_WINDOWMem0Settings.SEARCH_QUERY_EMBEDDING_WINDOWNoneOverride for the embedding model's input window, in the model's own tokens. Set it only when LiteLLM reports no or an incorrect max_input_tokens; None resolves it at first use. Queries are truncated to half this value: they can only be counted with tiktoken, which undercounts the embedder's tokenizer by up to 2x.
MEM0_SUPPORT_VISIONMem0Settings.SUPPORT_VISIONTrueWhether to support vision
MEM0_VISION_DETAILMem0Settings.VISION_DETAIL'auto'Vision details
MEMORY_DEFAULT_TENANT_IDMemorySettings.DEFAULT_TENANT_ID'AIHub'Default tenant ID for memory scoping
MEMORY_DEFAULT_TENANT_NAMESPACEMemorySettings.DEFAULT_TENANT_NAMESPACENoneDefault tenant namespace for department-level scoping
MILVUS_URLMilvusSettings.URL(supplied by compose)anonymiser_agent, api, attu, default_rag_pipeline, document_ingestion_pipeline, email_classification_agent, expert_asking_agent, expert_rag_agent, few_shot_agent, imap_agent, knowledge_extraction_agent, llm_wrapping_agent, memory_writer_agent, namespace_selection_agent, rag_agent, release_notes_agent, retrieval_agent, shared_rag_pipeline, universal_agent, web_fetch_agentConnection URL for Milvus DB Server
MINERU_API_BASE_URLMineruSettings.API_BASE_URL'http://mineru-api:8000'api, default_rag_pipeline, document_ingestion_pipeline, email_classification_agent, expert_rag_agent, few_shot_agent, llm_wrapping_agent, rag_agent, shared_rag_pipeline, universal_agent, web_fetch_agentMinerU API endpoint URL
MINERU_EXTENSIONSMineruSettings.EXTENSIONS['pdf', 'png', 'jpeg', 'jp2', 'webp', 'gif', 'bmp', 'jpg', 'tiff']File extensions supported by MinerU
MINERU_VLM_SERVER_API_KEYMineruSettings.VLM_SERVER_API_KEYSecretStr('')api, default_rag_pipeline, document_ingestion_pipeline, email_classification_agent, expert_rag_agent, few_shot_agent, llm_wrapping_agent, rag_agent, shared_rag_pipeline, universal_agent, web_fetch_agentLiteLLM API key for VLM requests
MINERU_VLM_SERVER_URLMineruSettings.VLM_SERVER_URL'http://litellm:4000'api, default_rag_pipeline, document_ingestion_pipeline, email_classification_agent, expert_rag_agent, few_shot_agent, llm_wrapping_agent, rag_agent, shared_rag_pipeline, universal_agent, web_fetch_agentLiteLLM proxy URL for VLM routing
MONGO_CONNECTION_STRINGMongoSettings.CONNECTION_STRING(supplied by compose)anonymiser_agent, api, bot, default_rag_pipeline, document_ingestion_pipeline, email_classification_agent, expert_asking_agent, expert_rag_agent, few_shot_agent, imap_agent, knowledge_extraction_agent, llm_wrapping_agent, memory_writer_agent, namespace_selection_agent, rag_agent, rclone_pipeline, release_notes_agent, retrieval_agent, shared_rag_pipeline, structured_pipeline, sysadmin-api, universal_agent, web_fetch_agentOverwrite the MongoDB connection string
NATS_ENDPOINTNatsSettings.ENDPOINT(supplied by compose)anonymiser_agent, api, bot, default_rag_pipeline, document_ingestion_pipeline, email_classification_agent, expert_asking_agent, expert_rag_agent, few_shot_agent, imap_agent, knowledge_extraction_agent, llm_wrapping_agent, memory_writer_agent, namespace_selection_agent, rag_agent, rclone_pipeline, release_notes_agent, retrieval_agent, shared_rag_pipeline, structured_pipeline, sysadmin-api, universal_agent, web_fetch_agentConnection endpoint for NATS messaging system
NEO4J_URLNeo4jSettings.URL(supplied by compose)api, bot, expert_asking_agent, expert_rag_agent, few_shot_agent, llm_wrapping_agent, memory_writer_agent, rag_agent, shared_rag_pipeline, universal_agent, web_fetch_agentConnection URL for Neo4j DB Server
NOTIFICATION_DAGSTER_UI_BASE_URLNotificationSettings.DAGSTER_UI_BASE_URLNonedefault_rag_pipeline, document_ingestion_pipeline, rclone_pipeline, shared_rag_pipeline, structured_pipelineBase URL of the Dagster UI used to build deep links in notification bodies (e.g. 'https://dagster.example.com').
NOTIFICATION_MIN_INTERVAL_SECONDSNotificationSettings.MIN_INTERVAL_SECONDS30default_rag_pipeline, document_ingestion_pipeline, rclone_pipeline, shared_rag_pipeline, structured_pipelineMinimum interval between sensor ticks in seconds.
NOTIFICATION_TITLE_PREFIXNotificationSettings.TITLE_PREFIX'Swiss AI Hub Pipeline'default_rag_pipeline, document_ingestion_pipeline, rclone_pipeline, shared_rag_pipeline, structured_pipelinePrefix prepended to the notification title.
OPENWEBUI_BASE_URLOpenWebuiSettings.BASE_URL(supplied by compose)api, sysadmin-apiOpenWebUI server base URL
OPENWEBUI_CONVERSATION_METADATA_MODELOpenWebuiSettings.CONVERSATION_METADATA_MODEL'text-generation/gemma-4-31B-it'apiLiteLLM name (capability/name) of the model generating conversation metadata — chat titles and follow-up questions — for chats that have no agent behind them. OpenWebUI runs it under the end user's identity, so a role without access to this model loses both features silently; the access catalog flags the model for that reason. Same model as the OpenWebUI TASK_MODEL env var but in LiteLLM form, since that one names the workspace model wrapping it.
OPEN_TERMINAL_BASE_URLOpenTerminalSettings.BASE_URL'http://open-terminal:8000'api, universal_agentThe sandbox's API endpoint.
OPEN_TERMINAL_MAX_FILE_BYTESOpenTerminalSettings.MAX_FILE_BYTES100000000The largest file read whole from the sandbox, so one file cannot exhaust memory.
OPEN_TERMINAL_TIMEOUTOpenTerminalSettings.TIMEOUT30Seconds a request may take, on top of a command's own wait.
OTEL_BLRP_MAX_EXPORT_BATCH_SIZEOpenTelemetrySettings.BLRP_MAX_EXPORT_BATCH_SIZE2048Log records per OTLP export
OTEL_BLRP_MAX_QUEUE_SIZEOpenTelemetrySettings.BLRP_MAX_QUEUE_SIZE16384Log records buffered before new ones are dropped
OTEL_EXPORTER_OTLP_ENDPOINTOpenTelemetrySettings.EXPORTER_OTLP_ENDPOINTNoneanonymiser_agent, api, email_classification_agent, expert_asking_agent, expert_rag_agent, few_shot_agent, imap_agent, knowledge_extraction_agent, litellm, llm_wrapping_agent, memory_writer_agent, namespace_selection_agent, open-webui, rag_agent, release_notes_agent, retrieval_agent, sysadmin-api, universal_agent, web_fetch_agentOTLP exporter endpoint URL
OTEL_EXPORTER_OTLP_INSECUREOpenTelemetrySettings.EXPORTER_OTLP_INSECURETrueopen-webuiUse insecure connection (no TLS) for gRPC
OTEL_EXPORTER_OTLP_PROTOCOLOpenTelemetrySettings.EXPORTER_OTLP_PROTOCOL'grpc'anonymiser_agent, api, email_classification_agent, expert_asking_agent, expert_rag_agent, few_shot_agent, imap_agent, knowledge_extraction_agent, litellm, llm_wrapping_agent, memory_writer_agent, namespace_selection_agent, open-webui, rag_agent, release_notes_agent, retrieval_agent, sysadmin-api, universal_agent, web_fetch_agentOTLP protocol
OTEL_EXPORTER_OTLP_TIMEOUTOpenTelemetrySettings.EXPORTER_OTLP_TIMEOUT60Seconds an OTLP export may spend retrying
OTEL_RESOURCE_SERVICE_NAMEOpenTelemetrySettings.RESOURCE_SERVICE_NAMENoneanonymiser_agent, api, email_classification_agent, expert_asking_agent, expert_rag_agent, few_shot_agent, imap_agent, knowledge_extraction_agent, llm_wrapping_agent, memory_writer_agent, namespace_selection_agent, rag_agent, release_notes_agent, retrieval_agent, sysadmin-api, universal_agent, web_fetch_agentResource service name
OTEL_RESOURCE_SERVICE_NAMESPACEOpenTelemetrySettings.RESOURCE_SERVICE_NAMESPACENoneanonymiser_agent, api, email_classification_agent, expert_asking_agent, expert_rag_agent, few_shot_agent, imap_agent, knowledge_extraction_agent, llm_wrapping_agent, memory_writer_agent, namespace_selection_agent, rag_agent, release_notes_agent, retrieval_agent, sysadmin-api, universal_agent, web_fetch_agentResource service namespace
OTEL_RESOURCE_SERVICE_VERSIONOpenTelemetrySettings.RESOURCE_SERVICE_VERSIONNoneanonymiser_agent, api, email_classification_agent, expert_asking_agent, expert_rag_agent, few_shot_agent, imap_agent, knowledge_extraction_agent, llm_wrapping_agent, memory_writer_agent, namespace_selection_agent, rag_agent, release_notes_agent, retrieval_agent, sysadmin-api, universal_agent, web_fetch_agentResource service version
PARSING_PASSTHROUGH_EXTENSIONSParsingSettings.PASSTHROUGH_EXTENSIONS[]File extensions that return empty content instead of 400 (e.g. for agent-only processing). Set via env as JSON array: PARSING_PASSTHROUGH_EXTENSIONS='["zip","wav"]'
PLAYWRIGHT_WS_URLPlaywrightSettings.WS_URL'ws://playwright:3000'expert_rag_agent, llm_wrapping_agent, open-webui, rag_agent, universal_agent, web_fetch_agentWebSocket endpoint of the Playwright server.
PRESIDIO_ANALYZER_API_BASEPresidioAnalyzerSettings.API_BASE'http://presidio-analyzer:3000'anonymiser_agent, litellmThe analyzer's API endpoint.
PRESIDIO_ANALYZER_TIMEOUTPresidioAnalyzerSettings.TIMEOUT150Seconds one analysis may take; a 20k-token text needs about 50 on 4 CPU threads.
RCLONE_LOCAL_SOURCE_ROOTRcloneSettings.LOCAL_SOURCE_ROOTNoneDirectory inside the rclone container that knowledge databases with a local source may read. Unset (the default) removes the local backend from the offered sources, because the daemon's own filesystem would otherwise be readable by every knowledge administrator.
RCLONE_PIPELINE_MAX_PARTITIONSRclonePipelineSettings.MAX_PARTITIONS1000Maximum partitions added or removed per database per observation.
RCLONE_URLRcloneSettings.URL'http://rclone:5572'rclone_pipelineRclone RC API URL (e.g., http://rclone:5572).
REDIS_URLRedisSettings.URL(supplied by compose)anonymiser_agent, api, email_classification_agent, expert_asking_agent, expert_rag_agent, few_shot_agent, imap_agent, knowledge_extraction_agent, llm_wrapping_agent, memory_writer_agent, namespace_selection_agent, open-webui, rag_agent, release_notes_agent, retrieval_agent, sysadmin-api, universal_agent, web_fetch_agentConnection URL for Redis server (without token)
S3_STORAGE_ENDPOINTS3StorageSettings.ENDPOINT(supplied by compose)api, bot, default_rag_pipeline, document_ingestion_pipeline, email_classification_agent, expert_rag_agent, few_shot_agent, imap_agent, knowledge_extraction_agent, litellm, llm_wrapping_agent, rag_agent, rclone_pipeline, retrieval_agent, shared_rag_pipeline, structured_pipeline, universal_agent, web_fetch_agentThe s3 endpoint from either aws or minio.
S3_STORAGE_INTERNAL_ENDPOINTS3StorageSettings.INTERNAL_ENDPOINTNoneThe in-cluster s3 endpoint (Docker DNS) for presigned URLs that are fetched by other in-cluster services (e.g. the LiteLLM gateway inlining RAG figures). Only ever signed against, never connected to, so it works from the host without DNS resolution. If not set, falls back to ENDPOINT.
S3_STORAGE_PUBLIC_ENDPOINTS3StorageSettings.PUBLIC_ENDPOINTNoneapi, bot, default_rag_pipeline, document_ingestion_pipeline, email_classification_agent, expert_rag_agent, few_shot_agent, imap_agent, knowledge_extraction_agent, llm_wrapping_agent, rag_agent, rclone_pipeline, retrieval_agent, shared_rag_pipeline, structured_pipeline, universal_agent, web_fetch_agentThe publicly accessible s3 endpoint for presigned URLs. If not set, falls back to ENDPOINT. Use this when internal and external endpoints differ (e.g., Docker internal vs Traefik-routed external).
S3_STORAGE_REGIONS3StorageSettings.REGION'us-east-1'The region for the s3 endpoint. For minio, value does not matter
S3_STORAGE_URL_SIGNING_SECRETS3StorageSettings.URL_SIGNING_SECRET(supplied by compose)api, bot, default_rag_pipeline, document_ingestion_pipeline, email_classification_agent, expert_rag_agent, few_shot_agent, imap_agent, knowledge_extraction_agent, llm_wrapping_agent, rag_agent, rclone_pipeline, retrieval_agent, shared_rag_pipeline, structured_pipeline, universal_agent, web_fetch_agentA secret key used for signing and verifying temporary anonymous access URLs.
USAGE_LIMIT_WARNING_THRESHOLD_PERCENTUsageLimitSettings.WARNING_THRESHOLD_PERCENT80Usage percentage at which warning headers are emitted

Additional variables for GPU deployments ​

The GPU variant currently does not introduce any operator-controlled variables beyond the base set above.

Built with ❤️ in Switzerland 🇨🇭