Operator
A Mac app for Claude Code. You run the agents: decide what each one does, then tune every lane’s model and effort so the plan runs close to its limit and never past it.
- When2025 to now
- ForIndependent
- Built withReact, Vite, Tailwind, Electron, node-pty, xterm.js
- LinksThe landing, source on GitHub (MIT)
The brief
I run several Claude Code sessions at once, often on the same repo. I decide what each agent does, hand work between them, read the diff before it lands, and tune each lane’s model and effort: cheap models where the work is mechanical, high effort only where it pays.
It is a living tool, not a product: no roadmap, no support queue, no telemetry, no account. If it is close but not quite right for you, the source is yours to change.
The mark
A field of dots pulling into a circle: many agents, one center.
Orchestrating
- Staff the project once, then work the board. Each lane pins a model, an effort level and permissions. The card is the task, the agent is a chip on it, and Waiting is the column that needs you.
- Hand work between agents. Every hop lands in the dispatch log with its outcome. A dispatch from a lane that is not the coordinator waits for your approval, and nothing retries.
- Watch the call tree as it happens, rebuilt from Claude Code’s own transcript files. Nothing to instrument.
- Run agents in parallel: one git worktree per task, so nothing touches your working tree until you say so.






Tuning
- Set the model and the effort per agent, in the .claude/agents files you already have. These two decide what a lane spends.
- See what each model spends, per project and per day, read from the transcripts on disk. Tokens, never dollars.
- Run close to the limit, never past it. Session, week and per-model caps, each with its reset. A timed-out read says no data, never 0%.
- Review the diff and land it in place: commit, merge or discard.




Scope
Operator hosts Claude Code’s own CLI over a pty and reads the transcripts it writes. It stops an agent with Claude Code’s own interrupt, so the session survives, and passes effort as a launch flag, because settings.json drops the fifth level without a word. It does not host or proxy the model, send anything to a server, or estimate what a session cost.
Under the hood
React, Vite and Tailwind on an Electron main process; node-pty with xterm.js for the terminals. The landing shows the app’s own panels at true scale, each running its own small state machine, over a page written in my handwriting.
Where it stands
Free and open source, used every day on this site and others. The download is on the landing.