Configuration Reference
Every configuration option, where it lives, and how to change it.
Config file location
| Mode | Path |
|---|---|
| Linux user mode | ~/.hali/config.json |
| Linux service mode | /var/lib/hali/config.json |
| macOS | ~/.hali/config.json |
| Windows | %ProgramData%\Hali\config.json |
The file is JSONC (JSON with comments). hali materializes it automatically on first run with all defaults.
Precedence
All configuration keys
streaming_hash
| Property | Value |
|---|---|
| Type | boolean |
| Default | true |
| Env override | ENABLE_STREAMING_HASH |
| CLI key | streaming_hash |
Hash file pieces concurrently during HuggingFace HTTP download. When enabled, piece hashes arrive precomputed — the daemon can start seeding immediately without a second read pass over the file. For a 70 GB model, this saves 1–3 minutes.
hali config set streaming_hash true
debug
| Property | Value |
|---|---|
| Type | boolean |
| Default | false |
| Env override | — |
| CLI key | debug |
Enable verbose daemon diagnostics. Logs LAN announcement accept/reject decisions, peer connection attempts, and piece transfer details. Useful for troubleshooting LAN visibility issues.
hali config set debug true
telemetry.enabled
| Property | Value |
|---|---|
| Type | boolean |
| Default | true |
| Env override | — |
| CLI key | telemetry.enabled |
Enable anonymous pull-event telemetry. When enabled, the daemon reports model downloads to the registry with your publisher key and signature. These reports feed trust scoring and search ranking. When disabled, manifests are generated but not submitted, and pull events are queued on disk but never sent.
hali config set telemetry.enabled true
Also controllable via:
hali telemetry enable
hali telemetry disable
hali telemetry status
See Telemetry Reference for what's collected.
telemetry.ingest_url
| Property | Value |
|---|---|
| Type | string (URL) |
| Default | Registry ingest endpoint |
| Env override | — |
| CLI key | telemetry.ingest_url |
The backend URL for telemetry ingestion. Set to default to use the built-in registry URL, or specify a custom endpoint.
hali config set telemetry.ingest_url https://my-registry.example.com
hali config set telemetry.ingest_url default
models_dir
| Property | Value |
|---|---|
| Type | string (path) |
| Default | Platform default |
| Env override | HALI_MODELS_DIR |
| CLI key | models_dir |
Custom model storage path. Overrides the default cache location.
| Platform | Default |
|---|---|
| Linux (user) | ~/.hali/cache/ |
| Linux (service) | /var/lib/hali/models/ |
| Windows | %ProgramData%\Hali\models\ |
hali config set models_dir /mnt/data/llama-models
lmstudio_models_dir
| Property | Value |
|---|---|
| Type | string (path) |
| Default | Auto-detected |
| Env override | LMSTUDIO_MODELS_DIR |
| CLI key | lmstudio_models_dir |
Path to LM Studio's models directory. Used by hali export lmstudio to know where to copy GGUFs.
hali config set lmstudio_models_dir /home/you/.lmstudio/models
ollama_models_dir
| Property | Value |
|---|---|
| Type | string (path) |
| Default | Auto-detected |
| Env override | OLLAMA_HOME |
| CLI key | ollama_models_dir |
Path to Ollama's models directory. Used by hali export ollama to know where to create manifests.
hali config set ollama_models_dir /home/you/.ollama/models
daemon_listen_addr
| Property | Value |
|---|---|
| Type | string |
| Default | 127.0.0.1 |
| Options | 127.0.0.1, 0.0.0.0, default |
| Env override | — |
| CLI key | daemon_listen_addr |
Controls which network interface the daemon's HTTP API (web dashboard) binds to.
| Value | Effect |
|---|---|
127.0.0.1 | Localhost only — dashboard only accessible from this machine (default) |
0.0.0.0 | All interfaces — dashboard accessible from any machine on the LAN |
On Linux, you can toggle this via hali service enable-lan / hali service disable-lan.
hali config set daemon_listen_addr 0.0.0.0
hali config set daemon_listen_addr default
max_upload_mbps
| Property | Value |
|---|---|
| Type | integer |
| Default | 0 (unlimited) |
| Env override | — |
| CLI key | max_upload_mbps |
Cap BitTorrent upload speed in megabits per second. 0 means no limit.
hali config set max_upload_mbps 50 # Cap at 50 Mbps
hali config set max_upload_mbps 0 # Unlimited
max_download_mbps
| Property | Value |
|---|---|
| Type | integer |
| Default | 0 (unlimited) |
| Env override | — |
| CLI key | max_download_mbps |
Cap BitTorrent download speed in megabits per second. 0 means no limit. Does not affect HuggingFace HTTP downloads.
hali config set max_download_mbps 200 # Cap at 200 Mbps
hali config set max_download_mbps 0 # Unlimited
lan.hmac_enabled
| Property | Value |
|---|---|
| Type | boolean |
| Default | false |
| Env override | — |
| CLI key | lan.hmac_enabled |
Enables HMAC-SHA256 authentication on LAN multicast announcements. When enabled, every announcement is signed with a shared secret. Machines without the matching secret cannot inject fake announcements.
hali config set lan.hmac_enabled true
lan.hmac_shared_secret
| Property | Value |
|---|---|
| Type | string (64-char hex) |
| Default | Auto-generated (<DataDir>/lan.secret) |
| Env override | — |
| CLI key | lan.hmac_shared_secret |
The shared secret used for LAN HMAC authentication. Each machine auto-generates a random secret on first run. For LAN sharing to work with HMAC enabled, all machines must use the same secret. Copy the lan.secret file or set a manual hex key.
hali config set lan.hmac_shared_secret 0123456789abcdef0123456789abcdef0123456789abcdef0123456789abcdef
hali config set lan.hmac_shared_secret default # Use auto-generated secret
Environment variables
Precedence: env vars > config.json > defaults
| Variable | Overrides |
|---|---|
HALI_MODELS_DIR | config.json: models_dir |
ENABLE_STREAMING_HASH | config.json: streaming_hash |
LMSTUDIO_MODELS_DIR | config.json: lmstudio_models_dir |
OLLAMA_HOME | config.json: ollama_models_dir |
Linux/macOS
export HALI_MODELS_DIR="/mnt/data/llama-models"
export ENABLE_STREAMING_HASH="true"
export LMSTUDIO_MODELS_DIR="/home/you/.lmstudio/models"
export OLLAMA_HOME="/home/you/.ollama"
Add to ~/.bashrc or ~/.zshrc for persistence.
Windows
$env:HALI_MODELS_DIR = "D:\Models\Llama"
$env:ENABLE_STREAMING_HASH = "true"
$env:LMSTUDIO_MODELS_DIR = "C:\Users\you\.lmstudio\models"
$env:OLLAMA_HOME = "C:\Users\you\.ollama"
Set permanently via System Properties → Environment Variables.
Example config file
{
"streaming_hash": true,
"debug": false,
"telemetry_enabled": true,
"registry_ingest_url": "https://registry.hali.dev",
"models_dir": "/mnt/data/llama-models",
"lmstudio_models_dir": "/home/you/.lmstudio/models",
"ollama_models_dir": "/home/you/.ollama/models",
"daemon_listen_addr": "127.0.0.1",
"max_upload_mbps": 0,
"max_download_mbps": 0,
"lan_hmac_enabled": false,
"lan_hmac_shared_secret": ""
}