One prompt becomes N isolated attempts.
Each attempt gets its own worktree, branch and engine. No shared state, nothing to step on.
you
prompt engineering → context engineering → graph engineering
One agent is a conversation. Five at once need a multiplexer — isolated worktrees, hosted sessions, and one SSH connection you can close.
Runs on macOS & Linux (Windows via WSL). npm, bun, npx, or one curl line — Rove brings its own Bun runtime. Needs git and one engine CLI on your PATH.
FOUR TASKS RUNNING, NOBODY ATTACHED PICK A TASK →
ROVE
+ New taskn
J/K move · ⏎ open
Kanbantab project · ←↓↑→ card · enter detail · n new · esc close
rove1/3~/i/rove
Backlog (3)
Stream the diff pane#41
Adopt orphaned worktrees#44
Ledger backfill plan#12
In progress (2)
Refresh before 401#38
Why checkout flakes#9
Done (6)
Pin the playwright image#7
Name tabs by conversation#31
+4 more
ROUTINESkeeping the daemon awake
nightly flake sweepin 6h
dep auditin 2d
weekly changelogpaused ·in 3d
Sweep flaky tests and report.[ run now ]
RECENT RUNS
#12dispatched3h ago
#11skipped_missed1d ago
[⌃ A P] Create PR
AllChanges
scope: vs main
INBOX 2
ATTENTION
▌ledger-api › copilot 1? needs input9mledger-migration
storefront › kimi 1✓ done12mflaky-e2e
RECENT
rove › Stream the diff pane⠹ running2mstreaming-diff
rove › pytest18moauth-refresh
enter open d delete
CLAUDE 5h 42% → 14:00 · 7d 12% ⌃ A commands · F1 help · [settings]
A real session: three repositories, four tasks, each with its own worktree, branch and terminal tabs. Nothing is attached to any of them right now — every engine runs in a hosted PTY behind the daemon, so the work continues with the TUI closed. This is zen mode: Files is collapsed and the workspace takes the freed width. Hit ☯ ZEN at the bottom of the rail to bring it back, or pick a task on the left — this is a live layout, not a screenshot. The full layout: Tasks on the left, the split workspace, Changes on the right. Pick a task, or use [~] Zen to collapse Files — this is a live layout, not a screenshot.
Each attempt gets its own worktree, branch and engine. No shared state, nothing to step on.
you
Engines live in hosted PTYs behind a daemon — drop the connection and the fleet keeps working. No terminal to hand? rove web.
$
One rove api send lands in another agent’s session — both directions, mid-flight, while you sleep.
orchestrator
attempt b
rove api send — one verb, either direction
One line, then one command. The only metric that matters: merged code per hour of your attention.
$ curl -fsSL https://rove.sma1lboy.me/install.sh | sh $ ssh devbox && cd repo $ rove 3 attempts running. Go do something else.