Troubleshooting
Common problems and how to fix them.
"Daemon is not running"
Symptom: hali daemon status says the daemon isn't running, or hali pull can't seed after download.
Fix (user mode)
hali daemon start
Fix (service mode)
# Linux
sudo systemctl start halid
sudo systemctl status halid
# Windows
hali service start
hali service status
If the service won't start
Check the logs:
# Linux
journalctl -u halid -n 50 --no-pager
# Windows
# Check %ProgramData%\Hali\logs\hali.log
Common causes:
- Port conflict (another process using the daemon's port)
- Permission denied on data directory
- Config file is invalid JSON
"Cannot connect to daemon" / IPC errors
Symptom: CLI commands fail with connection errors even though the daemon is running.
Linux
# Check if your user is in the hali group
id -nG
# If not:
sudo usermod -aG hali "$USER"
newgrp hali
sudo systemctl restart halid
# Check socket permissions
ls -l /run/hali
If daemon.addr is missing:
# Stop and restart the daemon
hali daemon stop
hali daemon start
Windows
- Ensure
hali.exeandhalid.exeare in the same directory - Check
%ProgramData%\Hali\daemon.addrexists - Restart the service:
hali service restart
"Download failed from Hugging Face"
Symptom: hali pull fails with a network error during download.
Causes and fixes
- HuggingFace is down or rate-limiting — wait and retry. hali does exponential backoff.
- Your network blocks HuggingFace — check your firewall/proxy.
- The repo or file was deleted — try a different quantization or repo.
Workaround
If the model exists on your LAN, use LAN-only pull:
hali network seen # Check if any LAN peer has it
hali network pull <id> # Download from LAN only
"LAN peers not visible"
Symptom: hali daemon status shows no entries in LAN AVAILABLE, even though you know another machine has the model.
Step-by-step diagnosis
1. Confirm the sender is actually seeding:
On the machine that has the model:
hali daemon status
Look for seeding in the SEEDING section. If it says hashing, the torrent metadata isn't ready yet — wait 1–2 minutes.
2. Check HMAC settings (if using authenticated mode):
Both machines must have matching lan_hmac_enabled and lan_hmac_shared_secret:
hali config show | grep lan
3. Check the firewall:
# Linux — ufw
sudo ufw status | grep 4269
sudo ufw allow 4269/udp
# Linux — firewalld
sudo firewall-cmd --list-ports
sudo firewall-cmd --add-port=4269/udp --permanent
sudo firewall-cmd --reload
# Windows
Get-NetFirewallRule | Where-Object { $_.LocalPort -eq 4269 }
New-NetFirewallRule -DisplayName "hali LAN" -Direction Inbound -Protocol UDP -LocalPort 4269 -Action Allow
New-NetFirewallRule -DisplayName "hali LAN Out" -Direction Outbound -Protocol UDP -LocalPort 4269 -Action Allow
4. Verify packets are arriving:
# Linux
sudo tcpdump -ni any udp port 4269
If you see packets but hali doesn't show them, check HMAC settings. If you don't see packets at all:
- Both machines must be on the same L2 segment (same VLAN / broadcast domain)
- Multicast must be enabled on the network (some routers/switches block it)
- Virtual adapters (VPN, Hyper-V, Docker) can interfere — hali handles this automatically, but it's worth checking
5. Check L2 connectivity:
# Both machines should be on the same subnet
ip addr show # Linux
ipconfig # Windows
"Firewall blocking hali"
Windows Defender Firewall
# Allow hali binaries
New-NetFirewallRule -DisplayName "hali CLI" -Direction Outbound -Program "C:\Program Files\Hali\hali.exe" -Action Allow
New-NetFirewallRule -DisplayName "hali Daemon" -Direction Inbound -Program "C:\Program Files\Hali\halid.exe" -Action Allow
# Allow LAN multicast discovery
New-NetFirewallRule -DisplayName "hali LAN In" -Direction Inbound -Protocol UDP -LocalPort 4269 -Action Allow
New-NetFirewallRule -DisplayName "hali LAN Out" -Direction Outbound -Protocol UDP -LocalPort 4269 -Action Allow
Linux (ufw)
sudo ufw allow 4269/udp
sudo ufw allow out 4269/udp
Linux (firewalld)
sudo firewall-cmd --add-port=4269/udp --permanent
sudo firewall-cmd --reload
"Service won't start after install"
Linux (systemd)
# Check the unit file
systemctl cat halid
# Check for errors
journalctl -u halid -n 50 --no-pager
# Check directory permissions
ls -ld /var/lib/hali /var/log/hali /run/hali
# All should be owned by hali:hali with mode 2775
Fix permissions if needed:
sudo chown -R hali:hali /var/lib/hali /var/log/hali /run/hali
sudo chmod 2775 /var/lib/hali /var/log/hali /run/hali
sudo systemctl restart halid
Windows (SCM)
# Check service status
sc query HaliDaemon
# Check event viewer for errors
# Look for "HaliDaemon" in Windows Logs → Application
# Verify the binary exists
Test-Path "C:\Program Files\Hali\halid.exe"
If the service immediately stops, check:
- Config file is valid JSON at
%ProgramData%\Hali\config.json hali.exeandhalid.exeare in the same directory- No other process is using the daemon's ports
"Export to Ollama doesn't work"
# Check if Ollama is detected
hali runtime list
# Check the custom path
hali config show | grep ollama
# Set it manually if auto-detection fails
hali config set ollama_models_dir /path/to/.ollama/models
# Re-export
hali export ollama mistral:7b:instruct:q4_k_m
After export, verify:
ollama list # Should show the model
If Ollama can't find the model, check that the manifest file was created:
ls ~/.ollama/models/manifests/
"Model is corrupted or incomplete"
Symptom: Ollama or LM Studio fails to load the model.
- Check the file integrity:
# Linux/macOS — compare file size with metadata.json
ls -lh ~/.hali/cache/<base>/<size>-<variant>/<quant>/model.gguf
cat ~/.hali/cache/<base>/<size>-<variant>/<quant>/metadata.json | grep size
- If sizes don't match, the download was interrupted. Delete and re-download:
rm -rf ~/.hali/cache/<base>/<size>-<variant>/<quant>/
hali pull <model-id>
- The daemon's piece hashing also serves as an integrity check — if pieces don't hash correctly, the status will show
hashing(never reachingseeding).
"Config file is broken"
If config.json is corrupted, delete it — hali will regenerate it with defaults on next run:
# Linux
rm ~/.hali/config.json
# or
sudo rm /var/lib/hali/config.json
sudo systemctl restart halid
# Windows
Remove-Item "$env:ProgramData\Hali\config.json"
hali service restart
"Too many models, disk full"
hali doesn't have built-in cache eviction yet (v0.1). To free space:
# See what's taking space
du -sh ~/.hali/cache/*/*/ # Linux/macOS
# Remove a model
rm -rf ~/.hali/cache/<base>/<size>-<variant>/<quant>/
# Remove the torrent file too
rm ~/.hali/torrents/<infohash>.torrent
# Restart daemon so it stops announcing the removed model
hali service restart
On Windows:
Get-ChildItem "$env:ProgramData\Hali\models" -Recurse | Measure-Object -Property Length -Sum
Remove-Item -Recurse "$env:ProgramData\Hali\models\<base>\<size>-<variant>\<quant>\"
hali service restart
Getting more help
If you're stuck:
- Enable debug logging:
hali config set debug true && hali service restart - Check the logs:
journalctl -u halid -n 200 --no-pager(Linux) or%ProgramData%\Hali\logs\hali.log(Windows) - Run
hali config show— verify your settings - Run
hali network status— check network capabilities - File an issue on GitHub with:
- Your OS and hali version (
hali --version) - Debug logs from the daemon
- The command you ran and the error output
- Your OS and hali version (