Goose — pointing it at your own API provider
Goose is an open-source agent with an extension system. The provider is yours to choose.
3 min · · Updated · goose · harness · интеграции
Goose is an open-source agent that runs in the terminal and through extensions. Like most modern harnesses it isn't tied to one vendor: the provider and model are yours to set.
What to know about the address
The main fork when connecting any agent is the API format. In Goose the address goes without /v1 in both cases:
- Anthropic provider —
ANTHROPIC_HOST=https://api.zukko.pro; Goose appends/v1/messagesitself - OpenAI provider —
OPENAI_HOST=https://api.zukko.pro(root only, no path) plus a separateOPENAI_BASE_PATH=v1/chat/completions
Mix them up and you get an unexplained 404 — the most common setup mistake there is. For the OpenAI provider, a 404 usually means a wrong OPENAI_BASE_PATH or a stray /v1 in OPENAI_HOST.
If you're unsure which format your client speaks, test both with plain curl; it takes a minute.
Setup
Through environment variables, Anthropic mode:
export GOOSE_PROVIDER=anthropic
export ANTHROPIC_HOST=https://api.zukko.pro
export ANTHROPIC_API_KEY=fetch_your_key
export GOOSE_MODEL=claude-opus-5-5OpenAI-compatible mode:
export GOOSE_PROVIDER=openai
export OPENAI_HOST=https://api.zukko.pro
export OPENAI_BASE_PATH=v1/chat/completions
export OPENAI_API_KEY=fetch_your_key
export GOOSE_MODEL=gpt-5.6-solA fetch_... key comes from your Zukko dashboard. Add the variables to ~/.zshrc or ~/.bashrc so you don't set them every session.
Goose also has its own config.yaml — you can set the provider, address, and model there with the same values, but the key goes in an environment variable or through goose configure: a key written directly into config.yaml is ignored. goose configure doesn't accept custom model names, so set GOOSE_MODEL as a variable, in config.yaml, or in goose Desktop.
Choosing a model
The current list is always one request away:
curl https://api.zukko.pro/v1/models -H "Authorization: Bearer fetch_your_key"Models not responding at the moment are dropped from the listing — done specifically for agents, so you don't pick a broken one at random and conclude the whole service is down.
For agent work it pays to keep two: something strong for hard steps and something cheap for routine. claude-opus-5-5 and glm-5.3 are a sensible pair — three times apart in price ($0.30 against $0.10 per million), and in an agent loop the spend is mostly input tokens. Just keep in mind that GLM has a 128K context, not 1M.
Extensions and tools
Goose extends through additional tools, and for agent work that's the core of it. What matters is that tool calls reach the model and come back — if an intermediary sits between you, it must translate them correctly.
One request settles it: send a task with a tool definition and check the reply contains a call rather than prose like "I can't run commands, please do it yourself".
If it doesn't work
401. The key didn't get through or was truncated. Check for a trailing space — copying adds one surprisingly often.
404. Almost always a /v1 in ANTHROPIC_HOST or OPENAI_HOST where it doesn't belong, or a wrong OPENAI_BASE_PATH (it should be v1/chat/completions).
Empty reply or a very long wait. Some models spend tokens on internal reasoning first. With a small limit they never reach the text. Raise max_tokens to a few thousand.
The model answers in prose instead of acting. Check that tools are enabled in Goose itself and that the chosen model supports calling them.
zukko
Pay 25×
less
for Claude Code & ChatGPT
One fetch_* key and base URL api.zukko.pro — for Cursor, Claude Code, Codex, and any SDK.
Related articles
- opencode agents: setting up roles, models and toolsA custom agent in opencode is a role, a model and a set of permissions. A working config where a cheap model handles routine work and a stronger one edits code.
- OpenAI API Keys in the Open: Why You Should Not Use ThemWhere free keys on GitHub come from, why using them is dangerous for you and for the owner, and how to protect your own key from the same leak.
- GLM API Errors: Why the Request Fails and How to Fix ItA wrong model id, an overflowing 128K context, the key, the balance, limits: the typical causes of GLM API errors and a quick way to find yours.
- Plan mode in Claude Code: plan first, then edit the codeIn plan mode Claude Code reads your code and proposes a plan but edits nothing until you agree. How to enable it, use it and what it costs.