skills/pi-agent/references/llama-cpp.md
Source: https://pi.dev/docs/latest/llama-cpp
Pi supports the llama.cpp router server, which discovers multiple GGUF models and loads or unloads them on demand. Use a current llama.cpp build with router support.
Start llama-server without --model, -m, or -hf. Passing a model starts single-model mode instead of router mode.
llama-server \
--models-dir ~/models \
--no-models-autoload \
--jinja \
--host 127.0.0.1 \
--port 8080 \
-ngl 999 \
-c 32768
--models-dir discovers local GGUF files.--no-models-autoload keeps loading explicit through /llama.--jinja enables compatible chat templates and tool calling.-ngl 999 offloads as many layers as possible to the GPU.-c 32768 sets the context window per loaded model; omit to use the model's native context (may need much more memory).Single-file models sit directly in the models directory. Multimodal and multi-shard models go in their own subdirectories with all components included. Restart the router after manually adding files; use llama.cpp model presets for per-model context sizes.
/login llama.cpp
Enter the router URL (default http://127.0.0.1:8080) and optional API key. Environment variables configure the same values without /login:
export LLAMA_BASE_URL=http://127.0.0.1:8080
export LLAMA_API_KEY=optional-secret
pi
If the server uses an API key, start llama-server with the matching --api-key. Keep --host 127.0.0.1 for local-only access.
/llamaowner/repository[:quant] values also work./llama offers Retry and Close; Retry reconnects and refreshes state without replaying the interrupted operation.Hugging Face search uses HF_TOKEN when set, then $HF_TOKEN_PATH, $HF_HOME/token, $XDG_CACHE_HOME/huggingface/token, and ~/.cache/huggingface/token. Search works unauthenticated with lower rate limits. Pi warns before downloading gated repositories. The llama.cpp server performs the download, so its process also needs HF_TOKEN for gated repositories.
Pi never silently unloads models and never deletes model files; it asks whether to unload others first. The router may be shared with other clients, so /llama always displays the router's current state.
Only loaded models appear in /model. Load with /llama, then select the model with /model.
curl http://127.0.0.1:8080/health
curl http://127.0.0.1:8080/models
/llama: check --models-dir, the directory layout, and restart the router./model: load it with /llama first.-c or unload another model.--model, -m, or -hf.