Crush,on a canvas of its own
Run Crush in as many cards as you like, each the real `crush` TUI in its own terminal. Crush reports its state — working, blocked, idle — straight to its card, arrows give it browsers, terminals and notes, and every card resumes its own session after a restart.
Official sitegithub.com/charmbracelet/crush- The real
crushTUI, your own providers - Your Crush config is never written
- Free, for Windows 10 and 11
It knows when Crush is done — and when it’s asking
Crush’s hooks have a single event, before a tool runs. But Crush also reports its agent state to the herdr terminal multiplexer — and NeuroSquad plays herdr for every Crush card.
workingstateworking on the first output of a run. The card’s icon spins and the Squad card counts it as working. Only the coordinator’s runs count; sub-agents don’t move it.
blockedstateblocked on a permission request. The card reads the pending call from Crush’s database and the toast says Crush needs your permission: bash — rm -rf dist.
idlestateidle when the run completes, is cancelled or fails. The next queued prompt goes out, the journal gets the answer, and a toast says it’s done.
Its questions, too
Crush’s question tool isn’t a herdr state, so while a turn runs the card checks Crush’s database once a second: an open question reads Crush is asking: Tabs or spaces?.
Nobody else can forge it
Each card’s pane id carries a signature of this app run; a report without it is dropped.
On Windows, too
Crush reports over a Unix socket, which Node can’t listen on under Windows — so a small PowerShell listener takes it. Without one, the card falls back to watching the terminal.
Three things Crush does in NeuroSquad
Replicas of the app, played step by step. When Crush asks for permission, the answer is yours.
Crush fixes a failing test through the connected terminal, stops on its permission dialog before deleting a folder, and finishes — the journal writes itself.
Everything Crush can do in NeuroSquad
Crush gets nearly everything Claude Code does. Here is all of it — including where Crush works differently, and what can’t be done.
- 01
Knows its state
Crush’s own status reports tell the card every turn, so nothing is guessed.
Finished and waiting are different
With
Docs: Finished and waiting are differentHERDR_ENVset, Crush reportsworking,blockedandidle, each with its session id. NeuroSquad listens for every card — exact turn starts, permission waits and ends.A notification that says what it needs
The toast names the pending call —
Docs: A notification that says what it needsCrush needs your permission: bash — rm -rf dist— or the question Crush asks. One per agent; a waiting one stays until you answer.Cancelled and failed runs end
Escape twice cancels a run in Crush;
Docs: Cancelled and failed runs endidlefollows and the card marks it finished, with Crush still running. A run that fails ends the same way.Picks up where it left off
Crush mints its own session ids — a card can’t choose one. Every report carries the id, so the next launch is
Docs: Picks up where it left offcrush --session <id>.The Squad status card
Every AI agent of the workspace on one card, with its model — or your Crush config’s large model before the first turn.
Docs: The Squad status card
- 02
Works through the canvas
An arrow from the card is a set of tools, reached over NeuroSquad’s MCP server.
Arrows are tools
An arrow to a browser, terminal, note or another agent lets Crush use
Docs: Arrows are toolsmcp_neurosquad_browser_*,terminal_*,note_*oragent_*— pre-approved by aPreToolUsehook, so NeuroSquad’s own tools never prompt.New arrows: listed up front
Crush 0.92 never hears that a server’s tool list changed. So every built-in tool is listed from the start and the arrows decide at call time. New skill and installed-server arrows apply on the card’s next start.
Docs: New arrows: listed up frontCanvas mode
Docs: Canvas modebash,job_output,job_kill,download,fetch,agentic_fetchandsourcegraphare left out of Crush’s tools altogether — not denied, absent — so--yolocan’t bring them back.MCP servers from the registry
Installed servers come as a second server with no pre-approval: Crush shows its own permission dialog before every call.
Docs: MCP servers from the registrySkills from skills.sh
An arrow to a skill card gives Crush
Docs: Skills from skills.shskill_loadwith each skill and when to use it, from the card’s next start.
- 03
Built for long runs
Context, Summarize Session, rate limits and a running journal — handled on the card.
Context meter
The latest request’s prompt tokens from Crush’s database; the window from the card’s config, your configs or Crush’s provider list. The ring turns amber from 80%.
Docs: Context meterCompact is Summarize Session
The card’s Compact button opens Crush’s command palette and runs Summarize Session for you.
Docs: Compact is Summarize SessionContinues after a rate limit
A turn that ends on a quota or rate-limit error shows the limit on the card; when the provider names a reset, the card counts down and sends “continue”.
Docs: Continues after a rate limitPrompt queue
Line up the next messages: each goes out when Crush reports
Docs: Prompt queueidle— never in a pause mid-thought.Journal and hand-off
Crush’s last reply is read from the card’s
Docs: Journal and hand-offcrush.db: the journal note, a hand-off to a fresh agent,agent_wait, custom cards and Telegram all get Crush’s real answer.
- 04
Works in a team
Each card has its own Crush data folder, so any number of them share a project.
A data folder per card
Crush locks its data folder, so two cards in one project couldn’t both run on
Docs: A data folder per card.crush/. Each card gets its own, holding its config layer and its sessions — none of your Crush files are written.Isolated worktrees
Give an agent its own git worktree, so parallel agents never edit the same files. The data folder follows the card, not the folder.
Docs: Isolated worktreesAdd a reviewer
One click starts an agent on a different CLI in the same worktree, with a prompt to review without editing. Crush can be that reviewer too.
Docs: Add a reviewerDangerous mode, per card
For a run you trust, a card starts Crush with
Docs: Dangerous mode, per card--yolo: no permission dialogs. Off by default; canvas mode still holds.Instructions
Crush reads
Docs: InstructionsAGENTS.md,CRUSH.mdandCLAUDE.mditself, and NeuroSquad’s session instructions arrive in its system prompt from the MCP server.
- 05
Cost, control and access
What it spends, what it may spend, which model it runs on, and how you reach it.
Cost and requests — no tokens
Each card’s cost is Crush’s own total, sub-agents included, and every model request is counted. Crush overwrites its token counters on each request, so per-request tokens can’t be known — the column shows a dash, not a guess.
Docs: Cost and requests — no tokensBudget brake
A limit per workspace. Past it, each Crush gets Escape twice — the run is cancelled, Crush keeps running (Ctrl+C would open its quit dialog) — and automatic prompts stop.
Docs: Budget brakeOpenRouter models
Crush’s built-in
Docs: OpenRouter modelsopenrouterprovider in the card’s own config, with the key from a variable only that card sees and NeuroSquad’s attribution headers.From your phone
Scan a QR code and the whole canvas opens in the phone’s browser: read Crush’s TUI, answer its dialog, send the next prompt.
Docs: From your phoneInstalled by the wizard
The setup wizard can install Crush for you (
Docs: Installed by the wizardnpm install -g @charmland/crush). NeuroSquad runs itscrush.exedirectly, not through the npm shim.
Who’s waiting, and what it cost
Two cards that answer the questions you ask most when several Crush agents run at once.
The Squad status card
Every agent of the workspace with its status, model and turn time. The ones waiting on you come first, with what Crush asks.
coupon-fixCrushclaude-sonnet-4.5Crush needs your permission: bash — rm -rf distNeeds you2:34
api-migrationCrushclaude-sonnet-4.5Move routes to the new clientWorking9:33
lint-setupCrushopenrouter/autoCrush is asking: Tabs or spaces?Needs you1:17
docs-passCrushopenrouter/autoUpdate the READMEFinished5 min. ago
Usage & cost
Read from each card’s own `crush.db`. Cost and requests are exact and add up to the total — tokens aren’t shown, because Crush doesn’t keep them per request.
| Agent | Tokens | Cost | ||
|---|---|---|---|---|
| coupon-fix | — | $2.33 | ||
| api-migration | — | $1.41 | ||
| docs-pass | — | $0.18 | ||
| Total | 86 | — | $3.92 |
The real Crush, plus its own folder
NeuroSquad starts the same `crush` you run yourself, in a real terminal in the card. This is everything it adds:
No secrets on disk
The config names $NEUROSQUAD_MCP_TOKEN; Crush expands it from the card’s environment.
Opens straight on the prompt
A fresh data folder would open on Crush’s “initialise this project?” screen and swallow the first prompt, so it’s pre-answered. AGENTS.md is read either way.
Found where you installed it
A release crush.exe (winget, scoop, go install) first, then the npm package’s binary, run directly.
Crush in NeuroSquad, answered
Give Crush a canvas
Free for Windows 10 and 11. Your code, your providers and your costs stay on your machine.