A 1950s telephone operator connecting calls at a switchboard
Operator
For Claude Code

You run the agents.

Operator makes the work visible and steerable: every tool call, diff, and delegation on one live board, each task sealed in its own git worktree, nothing leaving your machine.

a look inside
A look inside

The work, made legible.

No screenshots. These are the real views, rebuilt in the browser: the orchestration tree of nested tool calls and subagent delegations, a roster of agent lanes working through the project's task queue, each task sealed in its own git worktree, and staged diffs reviewed in place.

Orchestration

Every move, watched live.

Nested tool calls, subagent delegations, ticking durations. Operator rebuilds the timeline from Claude Code's own transcripts, so nothing needs installing and nothing gets missed.

orchestration · session 7c1f live
refactor auth module orchestratoropus running
Read src/auth/session.ts0.4s
Grep 'refreshToken'0.2s
delegate › extract-types haiku2.1s
Read types/auth.d.ts0.3s
delegate › write-tests sonnet3.2s
Edit auth/session.test.ts3.2s
Bash npm testqueued
3 tools 2 subagents worktree auth-refactor
Roster & queue

Staff it once. Queue the work.

Each lane pins a model, effort, and permissions, so launching a session is one click. Queue tasks against the roster and they dispatch, run, and come back done.

roster · operator 2 running
orchestrator fable running
code opus running
research sonnet idle
design sonnet your turn
review opus idle
qa haiku idle
Staff the project once. Each lane pins a model, effort, and permissions; a session launches against it in one click.
task queue · operator 1 running
Fix the tray icon in dark mode design diff ready
Refactor the auth module code running
Write release notes for 0.4 research queued
Sweep the flaky retry test backlog
1 of 4 shipped finished tasks come back as a diff to review
Worktrees & fan-out

Parallel, without collisions.

Every task runs in its own git worktree, so several agents can work one repo without stepping on each other. Fan a single prompt out to N attempts and keep the best diff.

worktrees 3 active
auth-refactor opus running +142 −38
docs-pass haiku ready +9 −2
flaky-tests sonnet merged → main
Every task gets its own git worktree, so branches never collide with main.
fan-out · fix the flaky retry test 4 agents
retry-fix-1 1/4 running +21 −9
retry-fix-2 2/4 your turn +14 −3
retry-fix-3 3/4 running +47 −18
retry-fix-4 4/4 queued +0 −0
One prompt to four agents at once, each sealed in its own worktree. Keep the best diff.
Conversation & plan

The thinking, readable.

The conversation streams as it happens, and the agent's own plan ticks off beside it. You always know what it is doing now and what it intends to do next.

conversation · refactor auth module streaming
Refactor auth so the token is passed explicitly, then update the tests.
On it. I'll thread the token through refresh() and adjust the suite. ◆ Edit · auth/session.test.ts
Running npm test to confirm the change
sonnet · write-tests every turn kept, nothing leaves the machine
plan mode 3/5 done
Map the token flow through session.ts
Thread the token into refresh()
Extract the shared AuthError type
Update auth/session.test.ts
Run the suite and note coverage
The agent's own TodoWrite, rendered live. It ticks off as it works.
Terminal & sessions

Real terminals, many at once.

Every session is a real pty you can type into, with its own reserved dev-server port. The sidebar tints each one by what it is doing right now: running, waiting on you, compacting, idle.

terminal · auth-refactor zsh
~/operator claude
Refactoring the auth module…
Read src/auth/session.ts · Grep 'refreshToken'
Dev server is running: http://localhost:5273/
✓ 24 passed
~/operator
pid 48213 OPERATOR_DEV_PORT 5273 a real pty, not a re-render
sessions 4 open
refactor auth module ⤷ 2 running
port the theme system your turn
sweep flaky tests idle
compact session log compacting…
Run several agents at once, each tinted by what it's doing right now.
Agent library

The right model for every job.

A visual editor over your .claude/agents files. Haiku for extraction, Sonnet for the everyday, Opus where it pays off: the model is picked per agent, right at the point of choice.

agents 5 defined
extract-types haikuproject
write-tests sonnetproject
security-review opususer
plan-architect opusplanproject
docs-writer haikuuser
Pick the model per agent: cheap models for grunt work, the pricey one where it pays off.
Review & usage

It comes back as a diff.

Review each session's changes in place, then commit, merge, or discard without leaving the window. The usage view keeps the token counts honest, parsed from your own local transcripts.

review · auth/session.ts +3 −1
@@ -18,7 +18,9 @@ export async function refresh(token)
export async function refresh(token: string) {
- const res = await fetch('/api/refresh')
+ const res = await fetch('/api/refresh', {
+ headers: { authorization: `Bearer ${token}` },
+ })
if (!res.ok) throw new AuthError(res.status)
return res.json()
}
2 of 5 files reviewed commit, merge, or discard without leaving the window
usage · last 7 days 25.6M tokens
sonnet12.7M
in 2.8Mout 610Kcache 9.3M
haiku7.2M
in 5.1Mout 120Kcache 2.0M
opus5.6M
in 1.2Mout 340Kcache 4.1M
API time14m 02s
Wall time1h 38m
Token counts parsed from your own local transcripts: what drove usage, and where the time went. Nothing sent anywhere.

Operator, standing by.

Free, about 10 MB. It reads the Claude Code sessions you already run, and nothing leaves your machine.