Skip to content

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.