Environment variables
title: Environment variables description: Every env var Fathom reads, with its default and what it controls. Generated from .env.example. audience: operator quadrant: reference last_verified: 2026-04-25 owners: [.env.example, docker-compose.yml]
Environment variables
Set in .env at the root of your install (default ~/.fathom/src/.env). Restart the stack (docker compose up -d) after changes; compose recreates affected containers.
GEMINI_API_KEY
Gemini — https://aistudio.google.com/apikey default medium: gemini-2.5-flash default hard: gemini-2.5-pro
Default: _(blank)_
OPENAI_API_KEY
OpenAI — https://platform.openai.com/api-keys default medium: gpt-4o-mini default hard: gpt-4o
Default: _(blank)_
ANTHROPIC_API_KEY
Anthropic (speaks OpenAI-compat on /v1/) — https://console.anthropic.com/settings/keys default medium: claude-haiku-4-5 default hard: claude-sonnet-4-6
Default: _(blank)_
LOCAL_BASE_URL
Local OpenAI-compat server — ollama, LM Studio, vLLM, llama.cpp server. No API key needed; the api container reaches out to this URL. From inside docker the host is reachable as host.docker.internal on macOS/Windows, or your LAN IP on Linux. Ollama's default port is 11434. example: http://host.docker.internal:11434/v1/ default medium: llama3.1:8b default hard: qwen2.5:32b (~20GB VRAM; drop to :14b on a 16GB box)
Default: _(blank)_
FATHOM_SIGNUP_ENABLED
After the first admin is bootstrapped, additional people can register via /ui/onboarding.html — they pick a display name, the api creates a member-scoped contact, mints a token for them, and logs them in. Leave on for single-user or trusted-LAN setups; set to false to close the door and require admin-minted pair codes for new contacts.
Default: true
DELTA_API_KEY
Optional API key for delta-store. If set, all direct delta-store requests need an X-API-Key header. Leave blank for single-user setups.
Default: _(blank)_
POSTGRES_PASSWORD
Password for the postgres container. Change for anything beyond local single-user use.
Default: fathom
COMPOSE_PROJECT_NAME
Everything about this install — container names, the postgres volume, and the lake state directory — derives from COMPOSE_PROJECT_NAME. Default "fathom" is fine for a single install. For a second instance on the same machine, clone into a second directory and change this (e.g. "fathom-dev") — containers, volume, and lake dir all re-namespace.
Default: fathom
LAKE_DIR
Where this instance's state lives on disk. Images, backups, drift/mood history, tokens — everything that's not the postgres database. Postgres itself lives in a named volume (${COMPOSE_PROJECT_NAME}-pg) because it can't run on Dropbox-synced paths. MUST be an absolute path — compose doesn't expand ~ or $HOME inside .env. Default for a single-user install: $HOME/.fathom/mind. preflight (./addons/scripts/preflight.sh) sets this correctly the first time you run it.
Default: /home/CHANGE-ME/.fathom/mind
TZ
Timezone (affects log timestamps).
Default: UTC