hal0 reads its configuration primarily from TOML under /etc/hal0, but a set of
environment variables (mostly written into the API systemd unit’s env file)
control the server, override paths, and tune install/update behaviour. The most
useful ones are below.
API listen port — hal0-api.service’s ExecStart binds --port ${HAL0_PORT}. The API binds 0.0.0.0 unconditionally.
8080
HAL0_SELF_BASE_URL
Base URL hal0 uses to re-enter its own /v1 surface (omni router).
http://127.0.0.1:8080
HAL0_API_URL
Base URL the hal0 CLI (and bundled agents) talk to. Point it at a remote box instead of the local API.
http://127.0.0.1:8080
HAL0_UI_DIST
Override path to the built dashboard bundle (ui/dist).
unset (FHS/editable autodetect)
HAL0_ALLOWED_ORIGINS
Comma-separated browser Origin allowlist for the agent-chat WebSocket upgrade (/agents/* chat proxy) — not general API CORS; there is no CORS middleware on /api//v1.
Companion services (Open WebUI, ComfyUI, Hermes, Hindsight, n8n) can be given
a browser-facing URL that differs from their loopback port — useful behind a
reverse proxy, or when a service binds loopback-only. See
Companion services for the full picture.
Variable
What it does
Default
HAL0_HOSTNAME
Hostname used to build the <host>.local mDNS name (set by the install wizard). Wins over socket.gethostname().
detected hostname
HAL0_OPENWEBUI_PUBLIC_URL
Public/proxy URL shown for Open WebUI instead of the LAN host:3001 guess.
unset
HAL0_OPENWEBUI_PROBE_URL
Health-probe URL override for Open WebUI’s /api/services status.
unset
HAL0_COMFYUI_PUBLIC_URL
Public/proxy URL for ComfyUI — also avoids the mixed-content block a plain http://host:8188 link hits from an HTTPS dashboard.
unset
HAL0_HERMES_PUBLIC_URL
Public URL for Hermes. Hermes binds loopback-only (:9119); this is the only way a browser link is shown for it.
unset (no link shown)
HAL0_N8N_PUBLIC_URL
Public URL for an operator-run n8n instance (n8n is external/unmanaged).
unset
HAL0_N8N_PROBE_URL
Health-probe URL for n8n. n8n’s status is unmonitored unless this is set.