Environment Variables
Environment variables are managed per-service in .env files. The ./jarvis init command generates these files with appropriate defaults and auto-generated credentials.
Cross-Service Variables
These variables are used by multiple services:
| Variable |
Used By |
Description |
DATABASE_URL |
auth, command-center, recipes, config-service, notifications |
PostgreSQL connection string (e.g., postgresql://user:pass@host:5432/dbname) |
SECRET_KEY |
auth |
JWT signing key (HS256). Must be the same across all services that validate JWTs. |
ADMIN_API_KEY |
command-center |
Protects admin endpoints (node management, training jobs). Sent as a header or query parameter. |
JARVIS_AUTH_BASE_URL |
ocr, command-center, logs, others |
URL of the auth service for validating app-to-app and node credentials. |
JARVIS_CONFIG_URL |
all services |
URL of jarvis-config-service for service discovery. |
JARVIS_CONFIG_URL_STYLE |
config-service |
URL format returned by config-service: dockerized (container names) or host (localhost/host.docker.internal). |
JARVIS_NETWORK_MODE |
jarvis CLI |
Network mode: bridge (default), host, or standalone. |
App-to-App Credentials
Every service that calls another service needs app-to-app credentials:
| Variable |
Description |
JARVIS_APP_ID |
This service's app ID (registered in jarvis-auth) |
JARVIS_APP_KEY |
This service's app key (secret, registered in jarvis-auth) |
These are generated by ./jarvis init and written to each service's .env file. Services send them as X-Jarvis-App-Id and X-Jarvis-App-Key headers when calling other services.
Infrastructure
| Variable |
Default |
Description |
POSTGRES_USER |
postgres |
PostgreSQL superuser name |
POSTGRES_PASSWORD |
(generated) |
PostgreSQL superuser password |
POSTGRES_HOST |
jarvis-postgres |
PostgreSQL hostname (container name in bridge mode) |
POSTGRES_PORT |
5432 |
PostgreSQL port |
REDIS_URL |
redis://jarvis-redis:6379 |
Redis connection string |
MINIO_ENDPOINT |
jarvis-minio:9000 |
MinIO object storage endpoint |
MINIO_ACCESS_KEY |
(generated) |
MinIO access key |
MINIO_SECRET_KEY |
(generated) |
MinIO secret key |
Per-Service Variables
jarvis-command-center
| Variable |
Description |
ADMIN_API_KEY |
Admin endpoint protection |
LLM_PROXY_URL |
URL of jarvis-llm-proxy-api |
WHISPER_API_URL |
URL of jarvis-whisper-api |
TTS_BASE_URL |
URL of jarvis-tts |
NOTIFICATIONS_URL |
URL of jarvis-notifications |
jarvis-llm-proxy-api
| Variable |
Description |
MODEL_PATH |
Path to the model file or directory |
BACKEND |
Inference backend: mlx, gguf, vllm |
CONTEXT_LENGTH |
Maximum context window size |
jarvis-tts
| Variable |
Description |
PIPER_MODEL_PATH |
Path to the Piper TTS model |
MQTT_BROKER_HOST |
MQTT broker hostname for audio delivery |
MQTT_BROKER_PORT |
MQTT broker port (default: 1883) |
jarvis-notifications
| Variable |
Description |
RELAY_URL |
URL of jarvis-notifications-relay for push delivery |
jarvis-ocr-service
| Variable |
Description |
OCR_BACKEND |
OCR provider: apple_vision (macOS), tesseract, easyocr |
Environment Files
.env files are gitignored and never committed
.env.example files show required variables with placeholder values
./jarvis init generates .env files from templates with real credentials
- Use
./jarvis init --force to regenerate all .env files
Settings Service vs Environment Variables
Runtime-configurable settings (like LLM model selection, prompt provider) are managed through jarvis-settings-server and stored in PostgreSQL, not in environment variables. Environment variables are for infrastructure configuration that requires a service restart to change.