Goose
Goose adds UberLLM as a custom provider described by one JSON file.
Before you start
- An UberLLM account with credit, and an API key from
Dashboard → Keys (
ull_...).
Setup with a file
- Save this as
uberllm.jsonin Goose'scustom_providersfolder:- macOS / Linux:
~/.config/goose/custom_providers/ - Windows:
%APPDATA%\Block\goose\config\custom_providers\
- macOS / Linux:
{
"name": "uberllm",
"engine": "openai",
"display_name": "UberLLM",
"description": "DeepSeek, GLM, Kimi, Gemini, Claude, Qwen and other models through one OpenAI-compatible API key.",
"api_key_env": "UBERLLM_API_KEY",
"base_url": "https://api.uberllm.dev/v1/chat/completions",
"headers": { "x-title": "goose" },
"models": [
{ "name": "deepseek/deepseek-v4.1-flash", "context_limit": 1048576 },
{ "name": "z-ai/glm-5.2", "context_limit": 1048576 },
{ "name": "moonshotai/kimi-k3", "context_limit": 1048576 },
{ "name": "google/gemini-2.5-flash", "context_limit": 1048576 },
{ "name": "anthropic/claude-haiku-4.5", "context_limit": 200000 }
],
"supports_streaming": true,
"requires_auth": true
}
- Set the key and start a session:
export UBERLLM_API_KEY="ull_your-key"
goose session start --provider uberllm
To keep the key in Goose's keychain instead, open the UberLLM provider in Goose Desktop and enter the key there.
Setup with goose configure
Run goose configure → Custom Providers → Add A Custom Provider, then:
- API Type:
OpenAI Compatible - Name:
UberLLM - API URL:
https://api.uberllm.dev/v1/chat/completions - Authentication Required: Yes → Static API key → paste your key
- Available Models:
deepseek/deepseek-v4.1-flash,z-ai/glm-5.2,moonshotai/kimi-k3 - Streaming Support: Yes
Recommended models
Checked on 2026-10-30: each one answered and made a tool call through UberLLM.
| Model | Context |
|---|---|
deepseek/deepseek-v4.1-flash |
1,048,576 |
z-ai/glm-5.2 |
1,048,576 |
moonshotai/kimi-k3 |
1,048,576 |
anthropic/claude-haiku-4.5 |
200,000 |
Goose may send openai/gpt-5* ids to the OpenAI Responses API. UberLLM serves that
route too (Responses API), so those ids work as well.
Common errors
| What you see | Cause and fix |
|---|---|
401 |
UBERLLM_API_KEY not set in this shell, or mistyped. |
404 "page not found" |
base_url typo, or an openai/gpt-5* model (see above). |
404 model_not_found |
A model name is not a catalog id. |
402 insufficient_credits |
Balance empty. Add credit under Dashboard → Credits. |