Troubleshooting
Relay Doesn't Start
- Node.js version: Relay needs Node.js 22+. Check with
node -v. - Port conflict: Something else on port 1234? Change
PORTin.env. - Docker permissions:
docker compose up -dneeds Docker running and the user in thedockergroup.
Model Won't Start
- Check the start script: The wizard generates
start-scripts/start-<model>.sh. Run it directly:bash start-scripts/start-qwen3.6-35b-a3b.sh. Does it error? - llama.cpp binary: Is
llama-serverat the path in the script? If you moved it, re-runpython3 scripts/setup-tui.py --auto. - GGUF path: Is the model file at the path in the script? Check with
ls -la. - VRAM: Does the model fit? Check
nvidia-smiorrocm-smi. The wizard adds headroom, but very large contexts can still exceed. - Port conflict: Is something on the allocated port (8081+)? Kill it:
fuser -k 8081/tcp.
Request Fails / 502
- Upstream not reachable: Is llama-server running? Check
docker logs relayfor errors. - Model not in map: Is the model name in
RELAY_MODEL_MAP? Check/v1/models. - Timeout: Long model startup? Increase
RELAY_MODEL_START_TIMEOUT_MS(default 2 minutes).
Streaming Issues
- Agent client errors on stream chunks: Some older clients don't handle empty
choices: []in lifecycle events. This is fixed in current Relay (dummy choices emitted). - Missing events: If your client expects specific SSE event types, check the API Compatibility doc for the exact event sequence.
Wrong Context Window
- Agent thinks context is smaller/larger than expected: Relay exposes
ctx_sizefromRELAY_MODEL_MAP. Re-runpython3 scripts/setup-tui.py --autoto regenerate with correct sizes from your GGUF files.
Session / Context Confusion
- Conversation state leaking between projects: Send a
session-idheader. Relay restarts the model when the session ID changes. - Model restarting too often: Each unique
session-idtriggers a restart. Use the same session ID across related requests in the same project.
Docker-Specific
- Can't access GPU: Ensure
/dev/driis mounted. For NVIDIA, you may neednvidia-container-toolkit. - Start scripts not found: The compose file mounts start-scripts from the path in
SCRIPTS_DIR. Check the volume mount indocker-compose.yml. - Orphan containers:
docker compose down --remove-orphanscleans up old containers.
Regenerate Config
bash
# Backup existing config
cp .env .env.bak
# Regenerate everything
python3 scripts/setup-tui.py --auto
# Restart
docker compose down && docker compose up -dYour model files (~/models/) are never touched. Only configs and start scripts are regenerated.