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/messages itself
  • OpenAI provider — OPENAI_HOST=https://api.zukko.pro (root only, no path) plus a separate OPENAI_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:

bash
export GOOSE_PROVIDER=anthropic
export ANTHROPIC_HOST=https://api.zukko.pro
export ANTHROPIC_API_KEY=fetch_your_key
export GOOSE_MODEL=claude-opus-5-5

OpenAI-compatible mode:

bash
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-sol

A 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:

bash
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.

Get API keyDocumentation

api.zukko.pro · fetch_*

Goose — custom API provider setup · Zukko