pi-llama-chooser
Pi extension: manage remote llama.cpp servers and use their models via /model
Package details
Install pi-llama-chooser from npm and Pi will load the resources declared by the package manifest.
$ pi install npm:pi-llama-chooser- Package
pi-llama-chooser- Version
0.6.1- Published
- Oct 15, 2026
- Downloads
- 1,420/mo · 176/wk
- Author
- guibo-agi
- License
- MIT
- Types
- extension
- Size
- 80 KB
- Dependencies
- 0 dependencies · 2 peers
Pi manifest JSON
{
"extensions": [
"./src/index.ts"
]
}Security note
Pi packages can execute code and influence agent behavior. Review the source before installing third-party packages.
README
pi-llama-chooser
Pi extension: manage remote llama.cpp servers and use their models via /model.
Installation
Install from Pi:
pi install npm:pi-llama-chooser
Or directly with npm:
npm install pi-llama-chooser
Requires @earendil-works/pi-coding-agent and Node.js ≥ 22.19.0.
Usage
Commands
| Command | Description |
|---|---|
/llama-chooser config |
Open the interactive server menu |
/llama-chooser config add <name> <host> <port> [http|https] [apiKey] |
Add a server |
/llama-chooser config edit <name> <host> <port> [http|https] [apiKey] |
Edit a server |
/llama-chooser config remove <name> |
Remove a server |
/llama-chooser config enable <name> |
Enable a server |
/llama-chooser config disable <name> |
Disable a server |
/llama-chooser config refresh |
Refresh models from all enabled servers |
/llama-chooser config list |
List configured servers (with online status) |
/llama-chooser config set-ctx <name> <ctx> |
Set context window override (0 = default) |
/llama-chooser config clear-ctx <name> |
Clear context window override |
/llama-chooser config dedup <on|off|status> |
Merge identical models across servers into one /model row, or keep one row per server |
/llama-chooser list [server] |
List models (from all enabled or a specific server) |
Interactive Menu
Run /llama-chooser config to open a menu:
- Add a server — step-by-step wizard for name, host, port, protocol, API key
- Model rows in /model — choose one row per server, or one merged row per identical model
- Select a server — see status (🟢 online / 🔴 offline / ⚪ disabled, ✓ enabled / ✗ disabled)
- Server actions — edit values, enable/disable, refresh models, remove
Models
Enabled servers' models appear under the Llama Chooser provider in /model. Each entry is named <server> / <model basename> (<quant>), e.g. myServer / Qwen2.5 (Q6_K), so when the same model is loaded on two machines you get two rows and pick the one you want to answer.
If you would rather have a single row per model with automatic failover, run:
/llama-chooser config dedup on
Identical models are then merged into one entry (<model>@<server1>|<server2>) that routes to the first online server. config dedup status shows the current mode, config dedup off restores one row per server. The choice is persisted and applies immediately.
Config changes apply immediately — no /reload or restart needed. Disabling or removing a server drops its models from /model at once, and enabling or adding one fetches and publishes its models right away. If the model you are currently using disappears, you get a notification to pick another one with /model.
Run /llama-chooser list to see full details per model:
- Quantization level (e.g.
Q6_K) - Context window (e.g.
116K ctx) - File size (e.g.
27.9 GB) - Owner (e.g.
[llamacpp])
Models with the same basename across servers are automatically deduplicated into a single entry that routes to any online server. See config dedup to turn this off and keep one selectable row per server.
Speed Tracker
The footer shows prefill and generation speed while streaming:
⚡450t/s 🔥85.3t/s
Rates are color-coded (red → orange → yellow → lime → cyan → violet) and use a moving window for generation speed.
Configuration
Servers are stored in ~/.pi/agent/llama-chooser-servers.json.
Preferences are stored next to it in ~/.pi/agent/llama-chooser-servers-settings.json.
Set the LLAMA_CHOOSER_STORAGE environment variable to use a different path.
[
{
"name": "my-server",
"host": "192.168.1.50",
"port": 8080,
"protocol": "http",
"enabled": true,
"apiKey": "optional-api-key"
}
]
name— unique identifier (no spaces, no__)host— IP address or hostnameport— 1–65535protocol—httporhttpsapiKey— optional Bearer token for authentication
Settings file:
{
"dedupModels": false
}
dedupModels—false(default) lists one/modelrow per server;truemerges identical models into one row that routes to the first online server
Development
npm run typecheck # TypeScript check
npm run dev # Run with local extension