docker-compose.yaml, Kubernetes ConfigMaps, or directly in your shell.
Core Settings
ENVIRONMENT
Type:stringDefault:
productionValues:
production | development
Runtime environment label. Affects logging verbosity and data directory defaults.
LOG_LEVEL
Type:stringDefault:
infoValues:
debug | info | warn | error
Log verbosity level. Use debug for troubleshooting, info for production.
PORT
Type:stringDefault:
8080
HTTP port for the orchestrator API and MCP endpoints.
STORAGE_DIR
Type:stringDefault:
/app/data (or {ENVIRONMENT}-data if set)
Directory path for the SQLite database and file storage. Must be writable by the orchestrator process.
In Kubernetes, this should match the PersistentVolumeClaim mount path.
Worker Pool Configuration
These settings control how the orchestrator spawns and manages Kubernetes worker jobs.MIN_WORKERS
Type:intDefault:
1
Minimum number of concurrent worker jobs. The orchestrator maintains at least this many workers when tasks are queued.
MAX_WORKERS
Type:intDefault:
10 (Docker Compose) / 50 (config default)
Maximum number of concurrent worker jobs across all clusters. Prevents resource exhaustion.
QUEUE_THRESHOLD
Type:intDefault:
5
Number of queued tasks before the orchestrator spawns an additional worker. Lower values spawn workers more aggressively.
WORKER_NAMESPACE
Type:stringDefault:
mimir-aip (Helm uses release namespace)
Kubernetes namespace where worker jobs are created. Must match the orchestrator’s namespace for RBAC permissions.
WORKER_SERVICE_ACCOUNT
Type:stringDefault:
mimir-worker (Helm) / worker-service-account (config)
Kubernetes ServiceAccount assigned to worker jobs. Must have permissions to access required resources.
WORKER_IMAGE
Type:stringDefault:
mimir-aip/worker:latest
Docker image used for worker jobs. Set this when using a custom registry or version.
WORKER_CPU_LIMIT
Type:stringDefault:
2000m
Kubernetes CPU limit for worker pods. Format: millicores (e.g., 2000m = 2 CPU cores).
WORKER_MEMORY_LIMIT
Type:stringDefault:
4Gi
Kubernetes memory limit for worker pods. Format: standard units (e.g., 4Gi, 512Mi).
Multi-Cluster Configuration
CLUSTER_CONFIG_FILE
Type:string (file path)Default:
"" (empty = single in-cluster mode)
Path to a YAML file defining multiple Kubernetes clusters for worker dispatch. When unset, the orchestrator uses only the in-cluster configuration.
clusters.yaml:
WORKER_AUTH_TOKEN
Type:string (Bearer token)Default:
"" (empty = authentication disabled)
Shared secret token for worker-to-orchestrator authentication. Workers include this as Authorization: Bearer <token> when calling /api/worktasks/* endpoints.
ORCHESTRATOR_URL
Type:string (URL)Default:
http://localhost:8080
URL where workers can reach the orchestrator API. In Kubernetes, this is typically the orchestrator Service name.
Advanced Worker Settings
WORKER_CONCURRENCY_LIMITS
Type:string (JSON object)Default: See below Per-task-type concurrency limits. Prevents a single task type from consuming all workers.
JOB_TIMEOUT
Type:int (seconds)Default:
3600 (1 hour)
Maximum execution time for a worker job before it’s terminated.
Storage Plugin Configuration
STORAGE_PLUGIN_DIR
Type:string (directory path)Default:
/app/storage-plugins
Directory where external storage plugins are cached and loaded from. The orchestrator compiles and loads .so files from this location.
LLM Provider Configuration
These settings enable LLM-powered features like ontology generation and semantic extraction.LLM_ENABLED
Type:boolDefault:
false
Enable LLM integration. When false, extraction uses statistical heuristics only.
LLM_PROVIDER
Type:stringDefault:
"" (empty = LLM disabled)Values:
openrouter | openai_compat | custom provider name
LLM provider to use. Must be registered in the orchestrator.
| Provider | Description |
|---|---|
openrouter | OpenRouter multi-model API |
openai_compat | OpenAI-compatible endpoints (e.g., vLLM, LocalAI) |
LLM_API_KEY
Type:string (API key)Default:
""
API key for the LLM provider. Required for openrouter and most openai_compat providers.
LLM_BASE_URL
Type:string (URL)Default:
""
Base URL for openai_compat providers. Not required for openrouter.
- vLLM:
http://vllm-server:8000/v1 - LocalAI:
http://localai:8080/v1 - OpenAI:
https://api.openai.com/v1
LLM_MODEL
Type:stringDefault: Provider-specific (see below) Model identifier to use for LLM requests. When empty, defaults to:
openrouter:openrouter/freeopenai_compat:gpt-4o-mini
LLM_PROVIDER_DIR
Type:string (directory path)Default:
/app/llm-providers
Directory where external LLM provider plugins are cached and loaded from.
Database Configuration
DATABASE_URL
Type:string (connection string)Default:
"" (uses SQLite in STORAGE_DIR)
Database connection string. When empty, the orchestrator uses SQLite at {STORAGE_DIR}/mimir.db.
Currently, only SQLite is supported. PostgreSQL support is planned.
Frontend Configuration
Frontend Environment Variables
The frontend service uses the following variables:PORT
Type:stringDefault:
3000
HTTP port for the frontend server.
API_URL
Type:string (URL)Default:
http://orchestrator:8080
URL of the orchestrator API. The frontend makes REST API calls to this endpoint.
orchestrator. In Kubernetes, use the Service DNS name:
Complete Example Configurations
Docker Compose (Development)
docker-compose.yaml
Kubernetes ConfigMap (Production)
Kubernetes Deployment (with Secrets)
Environment Variable Precedence
When the same variable is set in multiple locations:- Container
env(highest priority) - Container
envFrom(ConfigMap/Secret) - Dockerfile
ENV - Application defaults (lowest priority)
Validation and Defaults
The orchestrator validates configuration on startup:- Missing required directories are created automatically (e.g.,
STORAGE_DIR) - Invalid numeric values fall back to defaults
- Invalid log levels fall back to
info - Missing LLM configuration disables LLM features gracefully
Next Steps
- Deploy with Docker Compose for local development
- Deploy with Kubernetes for production
- Configure LLM provider API keys for enhanced ontology extraction
- Set up multi-cluster workers for scalability