Parallel coding agents in your terminal.
One managed task, one worktree, one branch. Run parallel work on a host that stays awake; disconnect your terminal and pick it back up over SSH.
macOS / Linux: use a POSIX shell. Requires git and a signed-in engine CLI. The installer sets up Bun if needed.
or with
Works with Claude Code, Codex, Copilot, Gemini CLI, OpenCode and more.
Needs git and a signed-in engine CLI; installation can set up Bun ≥ 1.3.11. Native Windows also needs Node.js and Git for Windows.
Note 1 — Physical view Fig. 1
The whole product, running. The notes below take it apart.
Every glyph is one the sidebar really draws; every engine name ships. The full schedule is in the docs.
Note 2 — General assembly Fig. 2
One prompt becomes one or more Tasks. A Task is the unit Rove isolates: it creates a git worktree, cuts a branch, and opens terminal tabs inside it. Nothing is shared sideways, so a second agent on the same prompt is working in a different directory on a different branch.
Inside a Task you can open more tabs — a second agent on the same files with its own conversation — and splits, which only divide the screen.
| Item | Qty | Part | Note |
|---|---|---|---|
| 1 | 1 | Git worktree | Own checkout on disk |
| 2 | 1 | Branch | Cut when the task is made |
| 3 | N | Terminal tab | Same files, separate conversation |
Project-main tasks reuse a saved checkout and directory tasks reuse a directory you own; neither is supplied with items 1 and 2.
- All three parts are created when the task is made. Nothing is allocated later.
Note 3 — Isolation Fig. 3
Isolation drops one notch at each level down, and the product says so in three lines:
new Task → own worktree + own branch (parallel work can't collide) new Tab → own conversation, SAME files (a helper in the same checkout) new Split → same screen, one tab divided (a monitor beside the work)
That is the whole mental model. If two agents must not touch each other's files, give them two Tasks. If one agent should read what another just wrote, give it a Tab.
Note 4 — Fan out, fan in Fig. 4
One round of that command measures as 5 attempts5 worktrees5 branches.
rove api add --repo "$PWD" \ --agents claude:2,codex:2,copilot:1 \ --prompt "Try independent approaches to simplify the auth flow."
Each sibling gets its own worktree and branch. When the round is done, rove api collect --group <id> reads the whole round's health in one call — per-task branch, diff size, checks, and the worker's own report — and rove api land --task-id <id> merges the winner. The losing branches stay on disk.
Agents talk to each other as peers. A worker spawned from another task reports home with a bare rove api send --prompt "succeeded: … (branch fix/auth-flow)". Rove recorded who spawned whom, so the reply routes back to the exact tab. There is no coordinator process.
Note 5 — Continuous operation Fig. 5
Engines run in a separate PTY host. Quitting the TUI or dropping SSH only detaches: work continues while that host stays awake. Host sleep pauses local work; closing an SSH client laptop leaves an awake remote host working. Reboot ends processes. Reattach restores saved screens and relaunches commands; conversation resume depends on the engine. Restored output does not mean the task completed.
Machines. Got a second computer — a desktop at home, a box in the cloud? Add it once with rove machine add and its tasks show up in the same sidebar as your local ones. It rides on the SSH access you already have: no ports to open, no new login.
| Rev | Date | Description |
|---|---|---|
| 2026-09 | Engines pi, omp added to the contrib class | |
| — | 2026-09 | Released as 0.9.198 on npm |