The workbench for coding agents

Bring your own agent.
Keep your own context.

Claude Code, Codex, whichever subscription you already pay for. Crowbar runs them side by side on real branches, lets you switch mid-conversation without losing a word, and never asks you to create an account.

Get it through QuiverSee what it does
In development · free · open source · no account · macOS and Linux
The app · macOS and Linux

One window. Every agent, every branch.

Crowbar in light mode: the sidebar with a project, its branches and chats; a chat with rendered Markdown in the middle; the README open beside it.Crowbar in dark mode: the sidebar with a project, its branches and chats; a chat with rendered Markdown in the middle; the README open beside it.
01 / 07 · Bring your own providerManifest-first

Your subscription. Our bench.

A provider is a small file: how to launch the agent, which modes it has, how it reports back. Claude Code and Codex are supported today; adding another CLI means writing a manifest, not forking the app. Switch between them mid-conversation; cancel one, start another, the context stays yours. Manifests travel through Quiver, the same channel that will deliver Crowbar itself.

providers / codex.manifestdetected
binary
codex
launch
app-server · unix socket
native modes
trusted · full-auto
reports
hooks → turn, tool, permission
context
kept by Crowbar
delivered via
Quiver
02 / 07 · Switch mid-conversationSame branch · same transcript

Change your mind mid-sentence.

One model drafts, another reviews, a third is cheaper for the boring part. In Crowbar that is a chip in the composer, not a new window. Pick a different provider between turns and the conversation carries on, same branch, same diff in view.

Claude CodeCodexThe chip always shows which agent is actually answering. No silent defaults.
03 / 07 · ThreadsNest as deep as you need · never out of sync

Conversations that branch like your code.

A chat can start another chat. The child inherits the context it needs, works its own question, and reports back — neither drifts. Spin one off to chase a flaky test while the parent keeps shipping. Spin three off. Spin one off the child. All of it in the sidebar, under the branch it belongs to, resumable tomorrow.

Pricing ininteger centsfeature/pricing-rounding · +34 −2Why does the tax test flake?Reproduce under loaddone · back in the parentBisect the rounding helperrunningPricing in integer centsfeature/pricing-rounding · +34 −2Why does the tax test flake?Reproduce under loaddone · back in the parentBisect the rounding helperrunning
04 / 07 · Branch reviewLike a pull request · 100% local

Pull requests, without the pull.

Open any branch as a review: the whole diff against its base, a comment on any line, threads you reply to and resolve. Agents read the same threads and answer in them — ask for a change on line 20, get the fix and a reply. None of it leaves your disk: no GitHub account, no pushed branch, no PR to open first.

feature/pricing-rounding → mainsrc/pricing.ts · +2 −1
18export function bulkDiscount(cents: number, qty: number) {
19− return cents * qty * 0.9
19+ const total = cents * qty
20+ return Math.round(total * 0.9)
You · line 20

Round once, at the boundary — not in here.

Claude Code

Moved the rounding into ledger.ts; this returns the exact value now. Resolving.

✓ Resolved
21}
05 / 07 · Markdown-first inputsExcalidraw for both sides

You get the same tools the agent gets.

Agents reply in rich Markdown; most tools hand you a plain text box in return. Crowbar treats both sides the same: your prompt is a document — headings, lists, code, tables, attachments — and when a data flow is easier drawn than typed, you draw it. Excalidraw boards live inside the conversation, and the agent reads them and draws back.

cartround()ledgerround once, at the boundary
Move pricing to integer centsEvery amount crossing a module boundary must be an integer. Start with the two hot paths:
  • pricing.ts — bulk-discount multiplier
  • tax.ts — the rounding helper
attached · flow.excalidraw · ledger.sql · failing.log
06 / 07 · Local-firstOne folder on disk

No account. No paywall. No server in between.

There is no authentication server to sign in to and no premium tier to unlock. Everything is available the moment the install finishes. Your chats, branches and reviews stay on your machine, in a local daemon and a local database you can inspect. Your agents talk to their own providers; the only thing that comes from us is Crowbar itself, through Quiver.

0accounts to create
0features behind a plan
0model calls proxied through us
1folder that holds everything
07 / 07 · More to comeBuilt in the open

On the horizon.

  1. 01
    Deterministic workflows

    Script a plan, a build, a review and a verify step once; run it across agents the same way every time.

  2. 02
    Extensions, via Quiver

    Panes and commands distributed through Quiver, the same channel that will carry Crowbar and its provider manifests.

  3. 03
    And more.

    The changelog is public and the issues are open. Tell us what your bench is missing.

The claw of the crowbar, printed as a one-bit halftone.
Not available yet

Pick it up.

Crowbar will ship through Quiver, a distribution system that will also carry its provider manifests and, eventually, its extensions. No installer page, no app store, no account — one command, once it's ready.

Get it through QuiverRead the source