Goose is the open-source agent CLI — Apache-2.0, 55k stars, and recently moved to github.com/aaif-goose/goose (the old block/goose links redirect). It talks to any LLM through provider plugins, and its generic OpenAI provider works with any OpenAI-compatible endpoint. That includes Wallaby. Disclosure: Wallaby Token sells API access to Kimi K3, and the endpoint used here is ours.
The whole setup is two lines of YAML and two environment variables. One of them has a trap in it — we hit it, and it is the main reason this guide exists.
What you need
- A Wallaby Token account (create one at wallabytoken.com; new accounts get $0.50 in free credit, no card) and an API key from the console
- macOS or Linux
- Five minutes
Step 1: Install the goose CLI
curl -fsSL https://github.com/aaif-goose/goose/releases/download/stable/download_cli.sh | bash
One naming trap before you start: brew install goose installs a database migration tool, not the agent. Same name, different project. Use the installer above.
goose --version # 1.54.0 at the time of writing
Step 2: Set your key and endpoint
export OPENAI_API_KEY=sk-your-wallaby-key
export OPENAI_HOST=https://api.wallabytoken.com
Read that second line again. No /v1 at the end. Goose's OpenAI provider appends /v1/chat/completions itself. If you include the /v1, as most API docs tell you to, your requests go to /v1/v1/chat/completions and die with a 404. The exact error from our first run:
Request failed: Resource not found (404) at https://api.wallabytoken.com/v1/v1/chat/completions: Invalid URL (POST /v1/v1/chat/completions).
Drop the suffix and it works. Add both lines to ~/.zshrc so they survive new terminals.
Step 3: Point goose at the model
Two lines in ~/.config/goose/config.yaml:
GOOSE_PROVIDER: openai
GOOSE_MODEL: kimi-k3
Step 4: Run it
goose run -t "Write a Python function that checks whether a string is a palindrome"
Or the interactive way: cd into a project, run goose, and start a session. Our verification run, unedited:
__( O)> ● new session · openai kimi-k3
\____) 20261010_2 · /private/tmp/agentlab
L L goose is ready
Wallaby K3 via goose OK
I can help with coding, debugging, explanations, and general problem-solving.
Verify on the billing side
A working reply is two legs of the stool; the third is the bill. Open your console's Usage Logs. Seconds after the run, the request shows up with model, token counts, and cost, itemized per request. Total cost of that smoke prompt: under two cents.
Pricing
Per 1M tokens, as of October 2026 (current rates always on the pricing page):
| Wallaby | Official list | |
|---|---|---|
| Input | $2.70 | $3.00 |
| Cached input | $0.27 | $0.30 |
| Output | $13.50 | $15.00 |
Agent loops re-read the same context every turn, which is exactly what cached input pricing rewards — the $0.27 line does real work in a tool like goose. The $0.50 trial credit covers this guide many times over.
FAQ
Does goose support custom OpenAI-compatible providers?
Yes. Set GOOSE_PROVIDER: openai, point OPENAI_HOST at the endpoint's root (no /v1), and provide the key in OPENAI_API_KEY.
Why do I get 404 at /v1/v1/chat/completions?
Your OPENAI_HOST ends in /v1 and goose added another one. Remove the suffix.
Is there a native Wallaby provider coming? We submitted one — PR #12717 adds Wallaby as a declarative provider and is in review at the time of writing. When it lands, this guide shrinks to "pick Wallaby from the list."
Get started
Create an account at wallabytoken.com, mint a key, export two variables, write two lines of YAML. If goose is your agent of choice, you are five minutes from Kimi K3. And if you hit the 404, you now know it is a doubled /v1, not your key.
Every request lands on your invoice as an itemized line with token counts — no content logs, no training on your data, no usage reports built from your traffic. We host open-weight models only, keep a public status page, and run our own work through the same gateway we sell.