back

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.

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.

The Operator mark: a field of dots pulling into a circle.The Operator mark: a field of dots pulling into a circle.
The Operator dock icon: the same mark on a light rounded square.
The mark. The dock icon.

Orchestrating

The team rail beside the board: lanes with their models, task cards in columns.The team rail beside the board: lanes with their models, task cards in columns.
The team and the board.
The comms log: four dispatches between lanes, one held for approval with Approve and Decline buttons.The comms log: four dispatches between lanes, one held for approval with Approve and Decline buttons.
Comms. One dispatch held for approval.
The agents list: five agents, each with a model chip and an effort level.The agents list: five agents, each with a model chip and an effort level.
Agents, each with its model and effort.

Tuning

The plan meter: session, week and Opus bars with their reset times, and API billing reading no data.The plan meter: session, week and Opus bars with their reset times, and API billing reading no data.
The plan meter. Absent is not zero.
The review panel: a diff of auth/session.ts with three lines added and one removed.The review panel: a diff of auth/session.ts with three lines added and one removed.
Review, before it lands.

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.