Skip to main content

Documentation Index

Fetch the complete documentation index at: https://docs.getomni.co/llms.txt

Use this file to discover all available pages before exploring further.

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

VariableRequiredDefaultDescription
DATABASE_HOSTYespostgresDatabase hostname or IP address
DATABASE_PORTYes5432Database port
DATABASE_USERNAMEYesomniDatabase username
DATABASE_PASSWORDYes-Database password (use strong password)
DATABASE_NAMEYesomniDatabase name
DATABASE_SSLNofalseEnable SSL for database connection
DB_MAX_CONNECTIONSNo10Connection pool size per service
DB_ACQUIRE_TIMEOUT_SECONDSNo3Connection acquisition timeout

Redis Configuration

VariableRequiredDefaultDescription
REDIS_URLYesredis://redis:6379Redis connection URL (format: redis://host:port)
For Redis with password:
REDIS_URL=redis://:password@redis:6379

Application Configuration

VariableRequiredDefaultDescription
APP_URLYeshttp://localhost:3000Public-facing application URL (include protocol)
OMNI_DOMAINNolocalhostDomain name for the application
OMNI_VERSIONNolatestDocker image version tag for all Omni services (e.g., 0.1.4)
SESSION_SECRETYes-Secret key for session encryption (32+ characters)
SESSION_COOKIE_NAMENoauth-sessionName of the session cookie
SESSION_DURATION_DAYSNo7Session expiry in days
ACME_EMAILNo-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

VariableRequiredDefaultDescription
ENCRYPTION_KEYYes-Encryption key for sensitive credentials (32+ characters)
ENCRYPTION_SALTYes-Salt for key derivation (16+ characters)

Service Ports

Core Services

VariableRequiredDefaultDescription
WEB_PORTNo3000SvelteKit web application port
SEARCHER_PORTNo3001Search service port
INDEXER_PORTNo3002Indexer service port
AI_SERVICE_PORTNo3003AI service port
CONNECTOR_MANAGER_PORTNo3004Connector manager port

Connector Services

VariableRequiredDefaultDescription
GOOGLE_CONNECTOR_PORTNo4001Google connector port
SLACK_CONNECTOR_PORTNo4002Slack connector port
ATLASSIAN_CONNECTOR_PORTNo4003Atlassian connector port
WEB_CONNECTOR_PORTNo4004Web connector port
GITHUB_CONNECTOR_PORTNo4005GitHub connector port
HUBSPOT_CONNECTOR_PORTNo4006HubSpot connector port
MICROSOFT_CONNECTOR_PORTNo4007Microsoft 365 connector port
NOTION_CONNECTOR_PORTNo4008Notion connector port
FIREFLIES_CONNECTOR_PORTNo4009Fireflies connector port
IMAP_CONNECTOR_PORTNo4010IMAP email connector port
CLICKUP_CONNECTOR_PORTNo4011ClickUp connector port
LINEAR_CONNECTOR_PORTNo4012Linear connector port
FILESYSTEM_CONNECTOR_PORTNo4013Filesystem connector port
NEXTCLOUD_CONNECTOR_PORTNo4014Nextcloud connector port
PAPERLESS_CONNECTOR_PORTNo4015Paperless-ngx connector port

Optional Services

VariableRequiredDefaultDescription
LOCAL_INFERENCE_MODEL_PORTNo8000Local LLM inference port (used by the llama.cpp container in docker-compose.local-inference.yml)
LOCAL_EMBEDDINGS_PORTNo8001Local embedding model port (used by the HuggingFace TEI container)
DOCLING_PORTNo8003Docling document conversion service port
SANDBOX_PORTNo8090Code execution sandbox port (used by the AI service for agent tools)
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

VariableRequiredDefaultDescription
SEARCHER_URLYeshttp://searcher:${SEARCHER_PORT}Search service URL
INDEXER_URLYeshttp://indexer:${INDEXER_PORT}Indexer service URL
AI_SERVICE_URLYeshttp://ai:${AI_SERVICE_PORT}AI service URL
CONNECTOR_MANAGER_URLYeshttp://connector-manager:${CONNECTOR_MANAGER_PORT}Connector manager URL

Optional Service URLs

VariableRequiredDefaultDescription
LOCAL_EMBEDDINGS_URLConditionalhttp://embeddings:${LOCAL_EMBEDDINGS_PORT}/v1Local embeddings service URL (required if using the local embedding provider)
DOCLING_URLNohttp://docling:${DOCLING_PORT}Docling document conversion service URL
SANDBOX_URLNohttp://sandbox:${SANDBOX_PORT}Sandbox service URL (used by the AI service for agent code execution)

LLM Provider Configuration

LLM providers and models are configured through the Admin Panel (Settings > LLM Providers). API keys and other secrets are encrypted at rest in the database using ENCRYPTION_KEY and ENCRYPTION_SALT — they are never read from environment variables. Multiple providers can be active simultaneously, and users can select which model to use on a per-chat basis.

Supported Providers

Omni supports seven LLM provider types:
ProviderRequired ConfigDescription
AnthropicAPI KeyDirect access to Claude models via Anthropic’s API
OpenAIAPI KeyAccess to GPT models via OpenAI’s API
Google GeminiAPI KeyDirect access to Gemini models via the Google AI Studio API
AWS BedrockAWS Region (+ optional credentials)Claude and other models via AWS Bedrock
Vertex AIGCP Region + Project IDClaude and Gemini models via Google Cloud Vertex AI
Azure AI FoundryEndpoint URLClaude and GPT models via Azure AI Foundry
OpenAI-compatibleAPI URL (+ optional API key)Any OpenAI-compatible endpoint — use this for self-hosted models via llama.cpp, vLLM, Ollama, LM Studio, etc.

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 Google Gemini: Gemini 2.5 Pro, Gemini 2.5 Flash, Gemini 2.5 Flash Lite AWS Bedrock: Claude Opus 4.6, Claude Sonnet 4.5, Claude Haiku 4.5, Amazon Nova Pro Vertex AI: Claude Sonnet 4.5, Gemini 2.5 Pro, Gemini 2.5 Flash Azure AI Foundry: Claude Opus 4.6, Claude Sonnet 4.5, Claude Haiku 4.5, GPT-5.2, GPT-5 Mini, GPT-4.1 OpenAI-compatible: No predefined models — specify the model ID exposed by your endpoint.
Unlike the other provider types, OpenAI-compatible can be registered multiple times in a single instance — each configured endpoint (e.g. a local llama.cpp + a separate vLLM instance + an OpenRouter account) shows up as its own provider card in the admin panel, and its models become independently selectable per chat.

AWS Bedrock Environment Variables

For Bedrock providers, the following environment variables are used as fallbacks when not configured in the admin panel:
VariableRequiredDefaultDescription
AWS_REGIONNo-AWS region for Bedrock (e.g., us-east-1). Used as fallback if not set in provider config
AWS_ACCESS_KEY_IDConditional-AWS access key (if not using IAM role)
AWS_SECRET_ACCESS_KEYConditional-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.

Vertex AI Environment Variables

Vertex AI uses Google Cloud Application Default Credentials (ADC). Configure region and project_id in the admin panel.
VariableRequiredDefaultDescription
GOOGLE_APPLICATION_CREDENTIALSConditional-Path to service account key JSON file (not needed when running on GCP with a service account attached)
When running on GKE, Cloud Run, or Compute Engine with an attached service account, ADC is automatic — no environment variables are needed.

Azure AI Foundry Environment Variables

Azure AI Foundry uses DefaultAzureCredential (Managed Identity). Configure the endpoint_url in the admin panel.
When running on Azure (AKS, Container Apps, VMs) with Managed Identity configured, authentication is automatic. No additional environment variables are needed.

Self-hosted Local Inference

Omni ships a docker-compose.local-inference.yml overlay that starts a local llama.cpp container for LLM inference and (optionally) a HuggingFace TEI container for embeddings. Once running, register them as providers in the admin UI: OpenAI-compatible for the LLM pointed at http://llama-cpp:${LOCAL_INFERENCE_MODEL_PORT} and Local for the embedding provider.
VariableRequiredDefaultDescription
LOCAL_INFERENCE_MODEL_PORTNo8000Port exposed by the llama.cpp container
LOCAL_EMBEDDINGS_PORTNo8001Port exposed by the HuggingFace TEI container
LOCAL_EMBEDDINGS_MODELNo-HuggingFace model ID loaded by TEI
EMBEDDING_MAX_MODEL_LENNo8192Maximum context length for the embedding model
The local LLM and embedding containers can be enabled independently — for example, cloud LLM with a local embedding model, or vice versa.

[Work In Progress] Batch Embedding Inference (AWS Bedrock)

For large-scale embedding generation using AWS Bedrock batch inference:
VariableRequiredDefaultDescription
ENABLE_EMBEDDING_BATCH_INFERENCENofalseEnable batch processing for embeddings
EMBEDDING_BATCH_S3_BUCKETConditional-S3 bucket for batch files (required if batch enabled)
EMBEDDING_BATCH_BEDROCK_ROLE_ARNConditional-IAM role ARN for Bedrock (required if batch enabled)
EMBEDDING_BATCH_MIN_DOCUMENTSNo100Minimum documents to trigger batch job
EMBEDDING_BATCH_MAX_DOCUMENTSNo50000Maximum documents per batch
EMBEDDING_BATCH_ACCUMULATION_TIMEOUT_SECONDSNo300Wait time before starting batch (5 min)
EMBEDDING_BATCH_ACCUMULATION_POLL_INTERVALNo10Interval to check queue (10 sec)
EMBEDDING_BATCH_MONITOR_POLL_INTERVALNo300Interval to check batch status (5 min)

Feature Flags

VariableRequiredDefaultDescription
AI_ANSWER_ENABLEDNotrueEnable or disable AI-generated answers in search results
AGENTS_ENABLEDNofalseEnable background AI agents (scheduled tasks)

Background Agents Configuration

Controls the background agent scheduler and execution limits. Requires AGENTS_ENABLED=true.
VariableRequiredDefaultDescription
AGENT_SCHEDULER_POLL_INTERVALNo30Seconds between scheduler poll checks
AGENT_MAX_CONCURRENT_RUNSNo3Maximum concurrent agent executions
AGENT_MAX_ITERATIONSNo15Maximum tool calls per agent run

AI Service Configuration

VariableRequiredDefaultDescription
AI_WORKERSNo2Number of uvicorn worker processes
MODEL_PATHNo/modelsDirectory for model storage
APPROVAL_TIMEOUT_SECONDSNo600How long interactive-chat tool approval prompts wait for a user decision before expiring (background agents don’t use approval prompts)
Token usage for every LLM call (chat, agent run, compaction, title generation) is recorded in the model_usage table in Postgres, broken down by user, provider, and model. No additional configuration is required.

Conversation Compaction

Controls automatic compaction of long conversations to stay within model context limits.
VariableRequiredDefaultDescription
ENABLE_CONVERSATION_COMPACTIONNotrueEnable or disable conversation compaction
MAX_CONVERSATION_INPUT_TOKENSNo150000Maximum input tokens before compaction triggers
COMPACTION_RECENT_MESSAGES_COUNTNo20Number of recent messages to preserve during compaction
COMPACTION_SUMMARY_MAX_TOKENSNo2000Maximum tokens for the compaction summary
COMPACTION_CACHE_TTL_SECONDSNo86400Cache TTL for compaction results (default: 24 hours)

Searcher Configuration

VariableRequiredDefaultDescription
RAG_CONTEXT_WINDOWNo2Number of surrounding chunks to fetch in RAG search
SEMANTIC_SEARCH_TIMEOUT_MSNo1000Timeout for semantic (vector) search in milliseconds
RECENCY_BOOST_WEIGHTNo0.2Weight for recency in search ranking (0.0–1.0)
RECENCY_HALF_LIFE_DAYSNo30.0Days for document relevance to decay to 50%

Connector Manager

The connector-manager service orchestrates all connector operations including scheduling syncs, health checks, and connector lifecycle management.
VariableRequiredDefaultDescription
MAX_CONCURRENT_SYNCSNo10Maximum concurrent syncs across all sources
MAX_CONCURRENT_SYNCS_PER_TYPENo3Maximum concurrent syncs per connector type
SCHEDULER_POLL_INTERVAL_SECONDSNo60How often the scheduler checks for due syncs
STALE_SYNC_TIMEOUT_MINUTESNo60Timeout to mark a sync as stale/failed

Document Conversion (Docling)

Docling is an optional service for extracting structured text from PDFs, Word documents, Excel files, PowerPoint, and common image formats. It can be toggled per-instance from SettingsDocument Conversion in the admin UI. When disabled, Omni falls back to lightweight built-in extractors. The same admin page also exposes a quality preset that controls how aggressively Docling parses each file:
PresetBehavior
FastOCR off, fast table-former mode, no code/formula enrichment. Use for text-heavy docs where basic tables are fine.
Balanced (default)OCR off, accurate table-former mode. Best tradeoff for most deployments.
QualityOCR on, accurate table-former mode, 1.5× image scale, code and formula enrichment enabled. Slowest, but highest fidelity.
The preset is stored in Redis and picked up by indexers and connector-manager on every extraction — no restart needed.
VariableRequiredDefaultDescription
DOCLING_URLNohttp://docling:${DOCLING_PORT}Docling service URL used by the indexer
DOCLING_DEVICENo-Leave empty for the CPU-only image; set to cuda to pull the CUDA-enabled image
DOCLING_CPUSETNo2,3CPU cores pinned to the Docling container
DOCLING_MEMORYNo-Memory limit for the Docling container (e.g. 2g)
DOCLING_MAX_CONCURRENT_CONVERSIONSNo1Maximum concurrent Docling conversions per indexer

Storage Configuration

VariableRequiredDefaultDescription
STORAGE_BACKENDYespostgresStorage backend: postgres or s3
S3_BUCKETConditional-S3 bucket name (required if STORAGE_BACKEND=s3)
S3_REGIONConditional-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

VariableRequiredDefaultDescription
GOOGLE_SYNC_INTERVAL_SECONDSNo86400Interval between Google sync runs (default: 24 hours)
GOOGLE_WEBHOOK_URLNo-Public URL for Google Drive change notifications (e.g., https://yourdomain.com/google-webhook)
WEBHOOK_RENEWAL_CHECK_INTERVAL_SECONDSNo3600How often to check and renew Google Drive webhooks (default: 1 hour)
GOOGLE_MAX_AGE_DAYSNo712Maximum age of documents to index (documents older than this are skipped)

Web Connector

VariableRequiredDefaultDescription
WEB_SYNC_INTERVAL_SECONDSNo86400Interval between web recrawl runs (default: 24 hours)

Logging & Monitoring

VariableRequiredDefaultDescription
RUST_LOGNoinfoRust services log level: trace, debug, info, warn, error
RUST_BACKTRACENo-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)

VariableRequiredDefaultDescription
OTEL_EXPORTER_OTLP_ENDPOINTNo-OTLP collector endpoint (empty = telemetry disabled)
OTEL_DEPLOYMENT_IDNo-Deployment identifier for tracing
OTEL_DEPLOYMENT_ENVIRONMENTNoproductionEnvironment: development, staging, production
SERVICE_VERSIONNo0.1.0Service 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