Skip to content

Repository files navigation

              █   ▀    
        █ ▄ █ █▀█ █ █▀█
        ▀▄▀▄▀ █ █ █ █▄█
         ▀ ▀  ▀ ▀ ▀ █  
        whip — a fast coding-agent harness in Go

An LLM tool-use loop (bash / read / write / edit / subagent), an interactive bubbletea session, and provider-routable models. One binary, no runtime, config you can read.

Why whip

  • Agent harnesses should be FAST — literally as fast as possible. whip is built in Go around that constraint: parallel tool calls, streaming everything, nothing between you and the model but a loop.
  • Defaults across other harnesses suck. They all have awesome patterns, but none of them bring them all together. whip cherry-picks the best ideas from pi, opencode, codex, and exo into one opinionated harness (see docs/roadmap.md — every feature cites its source).
  • Go is great for networking-heavy applications, and harnesses do a whole lot of networking. whip leans on channels where the TypeScript reference designs hand-roll promises — per-path file locks and background subagents collapse into primitives the compiler checks (docs/concurrency.md).
  • whip is focused on a future where open-source models are the preferred models. Keeping up with those models is hard — whip brings you an opinion on what model you should be using: live discovery from every provider's catalog, new models surfaced in the picker, a fast default that tracks the frontier.

Install

curl -fsSL https://raw.githubusercontent.com/context-labs/whip/main/install.sh | sh

Checksum-verified prebuilt binaries (Linux/macOS, x64/arm64). Or from source (Go ≥ 1.27):

go install github.com/context-labs/whip/cmd/whip@latest

Then whip and you're in. Defaults to inference.net models — any OpenAI-compatible endpoint works as a provider. One command wires up OpenRouter's whole catalog (/model lists every model, no per-model config):

whip auth openrouter   # masked key prompt — or /auth openrouter in-session

To update to the latest release later, run whip update — it re-runs the install script above.

Codex subscription

Whip can use an existing ChatGPT/Codex subscription instead of an API key. Run whip auth codex and follow the displayed URL and one-time code. On approval, Whip saves the login and adds the account's available Codex models to /model immediately. The same flow is available from an active session with /auth codex. /usage shows the subscription's rate-limit windows; whip auth codex logout removes the provider from Whip again.

Whip saves the login in ~/.codex/auth.json. Expiring tokens refresh locally and are never printed or added to conversations. Whip fetches the signed-in account's https://chatgpt.com/backend-api/codex/models catalog and refreshes it every 24 hours (or with /model refresh), so plan and rollout availability come from the backend rather than a hard-coded list. gpt-5.5 @ codex-subscription remains as a compatible fallback route. OAuth credentials are only sent to https://chatgpt.com/backend-api.

First things to try

/context-doctor     audit what a fresh session injects, in tokens
/goal <text>        work until done
/model              pick a model — type to filter (new) entries come from the
                    provider catalog, no config needed

Drop a .mcp.json in your repo and MCP servers just appear (/mcp to see them). ctrl+c once interrupts; twice quits.

Docs

The full setup, config reference, MCP, browser/computer-use, and how everything works: docs/README.md.

Highlights:

About

A fast coding-agent harness in Go. Tool-use loop, bubbletea TUI, provider-routable models with live catalog discovery, MCP support, background subagents. One binary, no runtime, built for open-source models.

Resources

Contributing

Stars

226 stars

Watchers

2 watching

Forks

Releases

Packages

Used by

Contributors

Languages