This page provides a comprehensive reference for all environment variables and configuration options available in Omni.
All environment variables can be set in your .env file for Docker Compose deployments or in terraform.tfvars for AWS deployments.
Database Configuration
| Variable | Required | Default | Description |
|---|
DATABASE_HOST | Yes | postgres | Database hostname or IP address |
DATABASE_PORT | Yes | 5432 | Database port |
DATABASE_USERNAME | Yes | omni | Database username |
DATABASE_PASSWORD | Yes | - | Database password (use strong password) |
DATABASE_NAME | Yes | omni | Database name |
DATABASE_SSL | No | false | Enable SSL for database connection |
DB_MAX_CONNECTIONS | No | 10 | Connection pool size per service |
DB_ACQUIRE_TIMEOUT_SECONDS | No | 3 | Connection acquisition timeout |
Redis Configuration
| Variable | Required | Default | Description |
|---|
REDIS_URL | Yes | redis://redis:6379 | Redis connection URL (format: redis://host:port) |
For Redis with password:
REDIS_URL=redis://:password@redis:6379
Application Configuration
| Variable | Required | Default | Description |
|---|
APP_URL | Yes | http://localhost:3000 | Public-facing application URL (include protocol) |
OMNI_DOMAIN | No | localhost | Domain name for the application |
OMNI_VERSION | No | latest | Docker image version tag for all Omni services (e.g., 0.2.1) |
SESSION_SECRET | Yes | - | Secret key for session encryption (32+ characters) |
SESSION_COOKIE_NAME | No | auth-session | Name of the session cookie |
SESSION_DURATION_DAYS | No | 7 | Session expiry in days |
ACME_EMAIL | No | - | Email for Let’s Encrypt notifications (for automatic HTTPS) |
Never use the same SESSION_SECRET across different environments. Generate unique secrets for dev, staging, and production.
Security & Encryption
| Variable | Required | Default | Description |
|---|
ENCRYPTION_KEY | Yes | - | Encryption key for sensitive credentials (32+ characters) |
ENCRYPTION_SALT | Yes | - | Salt for key derivation (16+ characters) |
Service Ports
Core Services
| Variable | Required | Default | Description |
|---|
WEB_PORT | No | 3000 | SvelteKit web application port |
SEARCHER_PORT | No | 3001 | Search service port |
INDEXER_PORT | No | 3002 | Indexer service port |
AI_SERVICE_PORT | No | 3003 | AI service port |
CONNECTOR_MANAGER_PORT | No | 3004 | Connector manager port |
Connector Services
| Variable | Required | Default | Description |
|---|
GOOGLE_CONNECTOR_PORT | No | 4001 | Google connector port |
SLACK_CONNECTOR_PORT | No | 4002 | Slack connector port |
ATLASSIAN_CONNECTOR_PORT | No | 4003 | Atlassian connector port |
WEB_CONNECTOR_PORT | No | 4004 | Web connector port |
GITHUB_CONNECTOR_PORT | No | 4005 | GitHub connector port |
FIREFLIES_CONNECTOR_PORT | No | 4009 | Fireflies connector port |
Optional Services
| Variable | Required | Default | Description |
|---|
VLLM_PORT | No | 8000 | vLLM inference server port (for local LLMs) |
LOCAL_EMBEDDINGS_PORT | No | 8001 | Local embedding model port (for local embeddings via TEI) |
In Docker Compose, services communicate via service names (e.g., http://searcher:3001). Ports only need to be exposed to the host for debugging.
Inter-Service URLs
These URLs are used for internal communication between services. In Docker Compose, they use the service name and port variable interpolation.
Core Service URLs
| Variable | Required | Default | Description |
|---|
SEARCHER_URL | Yes | http://searcher:${SEARCHER_PORT} | Search service URL |
INDEXER_URL | Yes | http://indexer:${INDEXER_PORT} | Indexer service URL |
AI_SERVICE_URL | Yes | http://ai:${AI_SERVICE_PORT} | AI service URL |
CONNECTOR_MANAGER_URL | Yes | http://connector-manager:${CONNECTOR_MANAGER_PORT} | Connector manager URL |
Connector URLs
| Variable | Required | Default | Description |
|---|
GOOGLE_CONNECTOR_URL | Yes | http://google-connector:${GOOGLE_CONNECTOR_PORT} | Google connector URL |
SLACK_CONNECTOR_URL | Yes | http://slack-connector:${SLACK_CONNECTOR_PORT} | Slack connector URL |
ATLASSIAN_CONNECTOR_URL | Yes | http://atlassian-connector:${ATLASSIAN_CONNECTOR_PORT} | Atlassian connector URL |
WEB_CONNECTOR_URL | Yes | http://web-connector:${WEB_CONNECTOR_PORT} | Web connector URL |
GITHUB_CONNECTOR_URL | Yes | http://github-connector:${GITHUB_CONNECTOR_PORT} | GitHub connector URL |
FIREFLIES_CONNECTOR_URL | Yes | http://fireflies-connector:${FIREFLIES_CONNECTOR_PORT} | Fireflies connector URL |
Optional Service URLs
| Variable | Required | Default | Description |
|---|
VLLM_URL | No | http://vllm:${VLLM_PORT}/v1 | vLLM inference server URL (used by the vLLM Docker service) |
LOCAL_EMBEDDINGS_URL | Conditional | http://embeddings:${LOCAL_EMBEDDINGS_PORT}/v1 | Local embeddings service URL (required if using the local embedding provider |
LLM Provider Configuration
LLM providers and models are configured through the Admin Panel (Settings > LLM Providers). Multiple providers can be active simultaneously. Users can select which model to use on a per-chat basis.
Supported Providers
Omni supports four LLM provider types:
| Provider | Required Config | Description |
|---|
| Anthropic | API Key | Direct access to Claude models via Anthropic’s API |
| OpenAI | API Key | Access to GPT models via OpenAI’s API |
| AWS Bedrock | AWS Region (+ optional credentials) | Claude and other models via AWS Bedrock |
| vLLM | API URL | Self-hosted models via a vLLM inference server |
Predefined Models
When you add a provider, the following models are automatically available:
Anthropic: Claude Opus 4.6, Claude Sonnet 4.5, Claude Haiku 4.5
OpenAI: GPT-5.2, GPT-5 Mini, GPT-4.1
AWS Bedrock: Claude Opus 4.6, Claude Sonnet 4.5, Claude Haiku 4.5, Amazon Nova Pro
vLLM: No predefined models — specify any HuggingFace model ID loaded in your vLLM server.
AWS Bedrock Environment Variables
For Bedrock providers, the following environment variables are used as fallbacks when not configured in the admin panel:
| Variable | Required | Default | Description |
|---|
AWS_REGION | No | - | AWS region for Bedrock (e.g., us-east-1). Used as fallback if not set in provider config |
AWS_ACCESS_KEY_ID | Conditional | - | AWS access key (if not using IAM role) |
AWS_SECRET_ACCESS_KEY | Conditional | - | AWS secret key (if not using IAM role) |
When running on EC2 or ECS with an appropriate IAM role, AWS_ACCESS_KEY_ID and AWS_SECRET_ACCESS_KEY are not needed — the SDK uses instance credentials automatically.
vLLM Docker Service
If you run vLLM as a Docker service alongside Omni, these environment variables configure the vLLM container itself:
| Variable | Required | Default | Description |
|---|
VLLM_MODEL | Yes | - | HuggingFace model ID to load (e.g., meta-llama/Llama-3.1-8B-Instruct) |
VLLM_API_KEY | No | - | API key for the vLLM server (if authentication is enabled) |
VLLM_MAX_MODEL_LEN | No | - | Maximum context length in tokens (model default if unset) |
VLLM_PORT | No | 8000 | vLLM inference server port |
[Work In Progress] Batch Embedding Inference (AWS Bedrock)
For large-scale embedding generation using AWS Bedrock batch inference:
| Variable | Required | Default | Description |
|---|
ENABLE_EMBEDDING_BATCH_INFERENCE | No | false | Enable batch processing for embeddings |
EMBEDDING_BATCH_S3_BUCKET | Conditional | - | S3 bucket for batch files (required if batch enabled) |
EMBEDDING_BATCH_BEDROCK_ROLE_ARN | Conditional | - | IAM role ARN for Bedrock (required if batch enabled) |
EMBEDDING_BATCH_MIN_DOCUMENTS | No | 100 | Minimum documents to trigger batch job |
EMBEDDING_BATCH_MAX_DOCUMENTS | No | 50000 | Maximum documents per batch |
EMBEDDING_BATCH_ACCUMULATION_TIMEOUT_SECONDS | No | 300 | Wait time before starting batch (5 min) |
EMBEDDING_BATCH_ACCUMULATION_POLL_INTERVAL | No | 10 | Interval to check queue (10 sec) |
EMBEDDING_BATCH_MONITOR_POLL_INTERVAL | No | 300 | Interval to check batch status (5 min) |
Feature Flags
| Variable | Required | Default | Description |
|---|
AI_ANSWER_ENABLED | No | true | Enable or disable AI-generated answers in search results |
AI Service Configuration
| Variable | Required | Default | Description |
|---|
AI_WORKERS | No | 2 | Number of uvicorn worker processes |
MODEL_PATH | No | /models | Directory for model storage |
Conversation Compaction
Controls automatic compaction of long conversations to stay within model context limits.
| Variable | Required | Default | Description |
|---|
ENABLE_CONVERSATION_COMPACTION | No | true | Enable or disable conversation compaction |
MAX_CONVERSATION_INPUT_TOKENS | No | 150000 | Maximum input tokens before compaction triggers |
COMPACTION_RECENT_MESSAGES_COUNT | No | 20 | Number of recent messages to preserve during compaction |
COMPACTION_SUMMARY_MAX_TOKENS | No | 2000 | Maximum tokens for the compaction summary |
COMPACTION_CACHE_TTL_SECONDS | No | 86400 | Cache TTL for compaction results (default: 24 hours) |
Searcher Configuration
| Variable | Required | Default | Description |
|---|
RAG_CONTEXT_WINDOW | No | 2 | Number of surrounding chunks to fetch in RAG search |
SEMANTIC_SEARCH_TIMEOUT_MS | No | 1000 | Timeout for semantic (vector) search in milliseconds |
Connector Manager
The connector-manager service orchestrates all connector operations including scheduling syncs, health checks, and connector lifecycle management.
| Variable | Required | Default | Description |
|---|
MAX_CONCURRENT_SYNCS | No | 10 | Maximum concurrent syncs across all sources |
MAX_CONCURRENT_SYNCS_PER_TYPE | No | 3 | Maximum concurrent syncs per connector type |
SCHEDULER_POLL_INTERVAL_SECONDS | No | 60 | How often scheduler checks for due syncs |
STALE_SYNC_TIMEOUT_MINUTES | No | 10 | Timeout to mark a sync as stale/failed |
Storage Configuration
| Variable | Required | Default | Description |
|---|
STORAGE_BACKEND | Yes | postgres | Storage backend: postgres or s3 |
S3_BUCKET | Conditional | - | S3 bucket name (required if STORAGE_BACKEND=s3) |
S3_REGION | Conditional | - | S3 region (required if STORAGE_BACKEND=s3) |
PostgreSQL storage (default):
STORAGE_BACKEND=postgres
# Content stored directly in the database — simplest setup
S3 storage:
STORAGE_BACKEND=s3
S3_BUCKET=omni-content-prod
S3_REGION=us-east-1
# Uses IAM role in AWS, or set AWS_ACCESS_KEY_ID / AWS_SECRET_ACCESS_KEY
Connector-Specific Configuration
Google Workspace Connector
| Variable | Required | Default | Description |
|---|
GOOGLE_SYNC_INTERVAL_SECONDS | No | 86400 | Interval between Google sync runs (default: 24 hours) |
GOOGLE_WEBHOOK_URL | No | - | Public URL for Google Drive change notifications (e.g., https://yourdomain.com/google-webhook) |
WEBHOOK_RENEWAL_CHECK_INTERVAL_SECONDS | No | 3600 | How often to check and renew Google Drive webhooks (default: 1 hour) |
GOOGLE_MAX_AGE_DAYS | No | 712 | Maximum age of documents to index (documents older than this are skipped) |
Web Connector
| Variable | Required | Default | Description |
|---|
WEB_SYNC_INTERVAL_SECONDS | No | 86400 | Interval between web recrawl runs (default: 24 hours) |
Logging & Monitoring
| Variable | Required | Default | Description |
|---|
RUST_LOG | No | info | Rust services log level: trace, debug, info, warn, error |
RUST_BACKTRACE | No | - | Enable Rust backtraces: set to 1 or full for debugging |
Log level recommendations:
- Development:
RUST_LOG=debug
- Production:
RUST_LOG=info
- Troubleshooting:
RUST_LOG=trace
Telemetry (OpenTelemetry)
| Variable | Required | Default | Description |
|---|
OTEL_EXPORTER_OTLP_ENDPOINT | No | - | OTLP collector endpoint (empty = telemetry disabled) |
OTEL_DEPLOYMENT_ID | No | - | Deployment identifier for tracing |
OTEL_DEPLOYMENT_ENVIRONMENT | No | production | Environment: development, staging, production |
SERVICE_VERSION | No | 0.1.0 | Service version for tracing |
Example with Honeycomb:
OTEL_EXPORTER_OTLP_ENDPOINT=https://api.honeycomb.io
OTEL_EXPORTER_OTLP_HEADERS=x-honeycomb-team=your-api-key
OTEL_DEPLOYMENT_ID=omni-prod-us-east-1
OTEL_DEPLOYMENT_ENVIRONMENT=production