Crush
Crush is an open-source terminal AI coding agent from Charm. It has a polished TUI, multi-model switching, LSP integration, and MCP server support. Configured via crush.json.
Prerequisites
| Item | Requirement |
|---|---|
| Node.js | latest LTS |
| Crush | latest |
| WRouter | A working sk- token |
Install
bash
npm install -g @charmland/crush
# macOS also via Homebrew
brew install charmbracelet/tap/crush
crush --versionConfigure
Config path:
- Linux / macOS:
~/.config/crush/crush.json - Windows:
%USERPROFILE%\.config\crush\crush.json
If it doesn't exist, create it with:
json
{
"$schema": "https://charm.land/crush.json",
"providers": {
"wrouter": {
"type": "openai-compat",
"base_url": "https://wrouter.ai/v1",
"api_key": "$WROUTER_API_KEY",
"models": [
{
"id": "claude-sonnet-4-6",
"name": "Claude Sonnet 4.6",
"context_window": 200000,
"default_max_tokens": 32768,
"can_reason": true
},
{
"id": "gemini-2.5-flash",
"name": "Gemini 2.5 Flash",
"context_window": 1000000,
"default_max_tokens": 32768,
"can_reason": false
}
]
}
}
}Field notes:
| Field | Note |
|---|---|
type | Must be openai-compat |
base_url | Must end in /v1 |
api_key | Use $WROUTER_API_KEY to read from env, not plaintext |
models[].id | Must match WRouter's model ID exactly |
Set the API key
bash
# macOS / Linux
export WROUTER_API_KEY="sk-xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx"
# Windows PowerShell
$env:WROUTER_API_KEY="sk-xxxx..."Verify
bash
crushIn the TUI's model picker, switch to a WRouter model and prompt.
Known limitations
- Crush's
can_reasonflag only affects UI hints; actual reasoning behavior depends on the upstream model. - LSP and MCP servers are configured separately from the provider block; see Crush's docs.