pi-unigpt/README.md
Benjamin Hackl 7754377b3e
All checks were successful
CI / test (22) (push) Successful in 22s
CI / test (24) (push) Successful in 21s
Reject model IDs unsafe for headers and clarify supported capabilities
2026-11-03 21:46:37 +01:00

3.9 KiB

pi-unigpt

Use uniGPT, the University of Graz's AI assistant, inside the pi coding agent.

Models exposed by your uniGPT API key appear in pi's model picker. Streaming and tool calls are supported; recognized vision models also support image input.

What you need

Setup

1. Install the extension

pi install git:imsc.uni-graz.at/git/behackl/pi-unigpt

2. Log in

Start pi (or type /reload if it is already running), then type:

/login unigpt

A dialog asks for your API key. Paste it there, not into the chat. Pi checks the key and tells you how many models you can use.

3. Pick a model

Type /model and choose one of the models listed under unigpt.

That's it. Pi remembers your key and your last model for next time.

Optional: start pi with uniGPT by default. Add this to ~/.pi/agent/settings.json, using any model from the list:

{
  "defaultProvider": "unigpt",
  "defaultModel": "gpt-5.4"
}

Commands

Command What it does
/login unigpt Save your API key (or replace it with a new one)
/model Choose a model
/unigpt-refresh Reload the list of models, e.g. after uniGPT adds new ones
/logout Remove your key from pi

Updating

pi update --extensions

Logging out and uninstalling

To remove your API key, type /logout and choose uniGPT. The uniGPT models disappear from /model until you log in again. This only removes the key from pi; it does not revoke the key at uniGPT.

To uninstall the extension, log out first (uninstalling does not delete the saved key), then run:

pi remove git:imsc.uni-graz.at/git/behackl/pi-unigpt

If you made uniGPT your default, also remove defaultProvider and defaultModel from ~/.pi/agent/settings.json.

Things to know

  • The thinking level setting has no effect. uniGPT decides how much each model reasons; models that reason still do so.
  • Costs are shown as zero. Pi doesn't track uniGPT usage; this does not mean usage is unlimited. Your university's usage rules still apply.

Troubleshooting

  • No uniGPT models in /model: type /unigpt-refresh. It tells you what is wrong, e.g. a rejected key or no network connection.
  • One model always fails with an error: that model may be unavailable on uniGPT's side. Pick another one.
  • pi -p "…" says a uniGPT model was not found: start pi normally once after logging in, so it can load the model list.
  • Installation fails with spawn npm ENOENT: you use pnpm instead of npm. Add "npmCommand": ["pnpm"] to ~/.pi/agent/settings.json and try again.

Still stuck? Open an issue with the output of /unigpt-refresh and the model you used. Never include your API key.

Advanced

Storing the key elsewhere. Pi saves your key unencrypted in ~/.pi/agent/auth.json, readable only by your user account. To keep it out of that file, change the unigpt entry there to read it from an environment variable or a password manager command:

{ "unigpt": { "type": "api_key", "key": "${UNIGPT_API_KEY}" } }
{ "unigpt": { "type": "api_key", "key": "!op read op://Private/uniGPT/credential" } }

Adjusting model limits. Pi knows the context size and output limit of common models. For a model it doesn't recognize, it assumes 128k tokens of context and 16k of output. If you know better, override them in ~/.pi/agent/models.json:

{ "providers": { "unigpt": { "modelOverrides": { "gpt-5.4": { "contextWindow": 200000 } } } } }

Pinning a version. To stay on one release, install with its tag, e.g. pi install git:imsc.uni-graz.at/git/behackl/pi-unigpt@v0.1.0.

Contributing

See DEVELOPMENT.md.

License

MIT