3.3 KiB
pi-unigpt
Use uniGPT, the University of Graz's AI platform, as a model provider in pi.
Models are discovered automatically, and their limits come from pi's model catalog, so there is no model list to maintain. Tool calling, streaming, and image input work.
Requirements
- pi 1.5.x and Node.js 22.19+
- A uniGPT API key. If you don't have one, ask the uniGPT team at the IDea_Lab.
Setup
1. Install the extension
pi install git:imsc.uni-graz.at/git/behackl/pi-unigpt
To stay on a fixed release instead of following the latest version, add the
tag: …/pi-unigpt@v0.1.0.
2. Log in
Start pi (or run /reload if it is already running) and enter:
/login unigpt
Paste your API key into the masked dialog, not into the chat. Pi checks the key and reports how many models it can use.
3. Pick a model
Run /model and choose one of the models listed under unigpt.
4. Optional: make uniGPT your default
Add this to ~/.pi/agent/settings.json to start pi with a uniGPT model:
{
"defaultProvider": "unigpt",
"defaultModel": "gpt-5.4"
}
Commands
| Command | Purpose |
|---|---|
/login unigpt |
Save and verify your API key |
/model |
Pick a model (also reloads the model list) |
/unigpt-refresh |
Reload the model list and report any problem |
/logout |
Remove the saved key from pi (it stays valid at uniGPT) |
Keeping your key out of auth.json
Pi saves the key unencrypted in ~/.pi/agent/auth.json, readable only by
your user account. To avoid that, edit the unigpt entry there to read the
key from an environment variable or a password manager:
{ "unigpt": { "type": "api_key", "key": "${UNIGPT_API_KEY}" } }
{ "unigpt": { "type": "api_key", "key": "!op read op://Private/uniGPT/credential" } }
Good to know
-
Thinking levels are off. uniGPT applies a fixed reasoning effort per model and ignores pi's setting. Reasoning models still reason.
-
Costs show as zero. That means "not tracked", not "free".
-
Model limits come from pi's catalog. Models pi doesn't know get 128k context and 16k output; update pi to pick up newer ones. To override a value, use
modelOverridesin~/.pi/agent/models.json:{ "providers": { "unigpt": { "modelOverrides": { "gpt-5.4": { "contextWindow": 200000 } } } } }
Troubleshooting
- No uniGPT models in
/model: run/unigpt-refresh; it names the problem (rejected key, unreachable server, empty model list). pi -pcan't find a uniGPT model: print mode doesn't fetch model lists. Start pi interactively once after logging in.- One model fails with HTTP 500: that deployment is broken on the server; pick another model and tell the uniGPT team.
- Install fails with
spawn npm ENOENT: you use pnpm instead of npm. Add"npmCommand": ["pnpm"]to~/.pi/agent/settings.json.
Report bugs at https://imsc.uni-graz.at/git/behackl/pi-unigpt/issues.
Include the /unigpt-refresh output and the model you used, never your
API key.
Development
pnpm install
pnpm run ci # type check + tests
Tests use fake keys and a local server; they never contact uniGPT.