Keyboard shortcuts

Press ← or → to navigate between chapters

Press S or / to search in the book

Press ? to show this help

Press Esc to hide this help

Roadmap

volee is young. This page lists what exists, what comes next and what is deliberately out of scope. Dates are targets, not promises.

0.1: see everything, launch and talk

MilestoneContentStatus
BootstrapWorkspace, CI, documentation site, contributor guides, agent rulesDone
FoundationDomain model, SQLite event store, daemon with JSON-RPC over a Unix socket, volee ls, discovery of every Claude Code sessionDone
Launch and observevolee spawn (worktree + claude --bg + per-agent hooks), hook ingestion, git delivery state, volee diffDone
InterfaceHierarchy view, preview, take over with claude attach, messages and composer, changes, your own tools, launch dialogs, keymap and help, themes, semantic zoomDone
MessagingMCP server for agents, typed threads, delivery to working, idle and stopped agents, inbox, message pulses on the graphDone
MissionsSupervisor plus coordinator agent, change and analysis missions, delivery evidence, volee tidyDone
More viewsNetwork, repositories and worktrees, timelineDone
ReleasePrebuilt binaries for macOS and Linux, shell installer, demo recordingsDone: v0.1.0

0.2: other harnesses and tuios panes

MilestoneContentStatus
Other harnessesAgents of any MCP-capable harness join volee and its missions with volee mcp --join (ADR 0014)Done
tuios panesClaude Code sessions in tuios panes are shown, previewed and reached from the interface (ADR 0015)Done
Launch recoveryA failed launch runs again without a git step (ADR 0016); volee forget removes an agent that no longer runsDone
Releasev0.2.0Done: v0.2.0

0.3: setting up and tidying

MilestoneContentStatus
Shell completionsvolee completions <shell> prints a completion scriptDone
Setup commandsCommands each new worktree runs before its agent starts, such as bun install (ADR 0017)Done
Forget from the interfaceThe interface forgets an agent that no longer runs, like volee forgetDone
Fixes from the 0.2 reviewThe forge line of volee daemon status, focus steps for tuios panes on the daemon’s serverDone

0.4: more places agents run

MilestoneContentStatus
tmux panesClaude Code sessions in tmux panes are shown, previewed and reached from the interface, like tuios panesDone: v0.4.0
Setup in sightThe preview of an agent whose session has not started shows the end of its setup logDone: v0.4.0
Stalled launchesA launch whose session can never start ends as failed, ready to run again, instead of launching foreverDone: v0.4.1

0.5 and 0.6: reading an agent’s conversation

MilestoneContentStatus
Full screenz shows an agent’s screen across the whole window, scrolled with j and k; a takes it over from thereDone: v0.5.0
Wide sessionsThe preview of a Claude Code session wider than 200 columns replays without garbling, and the end of its conversation stays in viewDone: v0.5.1
Long linesThe full-screen view wraps lines wider than the window; the preview keeps cutting themDone: v0.6.0

0.8: a host for every agent

MilestoneContentStatus
HostsEvery agent volee launches runs in a volee host that holds its terminal and its exact screen, emulated by libghostty-vt, and survives the interface, the daemon and the terminal that started it (ADR 0019, ADR 0020)Done
Take over and watcha and volee attach take an agent over from any terminal, Ctrl+Q comes back; the preview and z show the exact screen without resizing the agent (ADR 0021)Done
Wall of screens5 shows the hosted agents of the list as tiles of live screens; volee host wall opens it from a shellDone
OpenCodevolee spawn --harness opencode and the launch dialog launch OpenCode agents in hosts, follow their state from their screen and resume them (ADR 0022)Done
Every agent on the machineOpenCode agents started elsewhere are found in the process table; A or volee adopt moves an agent volee does not host into a host (ADR 0023)Done
Back after a rebootThe daemon resumes the agents a reboot interrupted, in new hosts; volee daemon install starts it at login (ADR 0024)Done
Hosts by handvolee host spawn, ls, peek, attach, stop and wall run any command line in a host, without the daemonDone
Mirrors removedThe 0.7.0 previews of background sessions read from tuios panes by their title are gone; tuios and tmux still show the sessions started by hand in their panesDone
Releasev0.8.0Done: v0.8.0

0.9 and 0.10: keys, and typing inside volee

MilestoneContentStatus
KeysA popup of the keys of each screen, a leader key, vim keys, every key configurable, a theme picker (ADR 0025)Done: v0.9.0
Edit modeThe full-screen view of an agent in a volee host is live, and typing goes to the agent inside volee’s frame until Ctrl+Q (ADR 0026)Done: v0.10.0

0.11: open every agent where it runs

An audit on 2026-11-10 found that volee owned the agents it showed, where it should plug into them: typing into a session volee did not start needed an adoption, and the list kept sessions that were gone. The plan that followed has five steps, each released only once a person can make its trip by keyboard (journeys).

MilestoneContentStatus
JourneysScripts that drive the real interface by keyboard with a real agent are the gate of every releaseDone
The list is what runsOne row per session the harness lists, finished background sessions included; a session that is gone leaves the list; a one-off run of a few seconds never shows (ADR 0027)Done
Open without owningenter, a double click or i opens any agent where it runs, inside volee: claude attach on a background session, tuios pane-view on a tuios pane; nothing is stopped or restarted (ADR 0027)Done
Releasev0.11.0Done: v0.11.0

0.12: one emulator, and a wall of every agent

MilestoneContentStatus
One emulatorThe preview, the full-screen view, edit mode and the wall read every screen through libghostty-vt; vt100 is gone (ADR 0028)Done
Live previewThe preview of an agent in a volee host is its live screen, on the connection the full-screen view and edit mode useDone
The mouseIn edit mode, clicks, drags and the wheel reach a program that asked for them, on its own cellsDone
The wall, inside5 shows the screen of every agent of the list that runs, in a volee host or not, as many to a page as the terminal shows at a readable size; what is opened from the wall comes back to itDone
Releasev0.12.0Done: v0.12.0
The same screen in every viewThe proof the plan asked for, run after the release: the preview and the wall dropped an agent’s cursor block and showed a run of blank rows as one. Fixed, and a test and a journey now compare the three views cell by cell (ADR 0028)Done: v0.12.1
A screen at rest stays currentThe screen of an agent volee does not host was read again only while the agent worked: at rest it went stale, as after a command typed in its pane. The preview now reads it again every five seconds and a tile of the wall every fifteen (ADR 0028)Done: v0.12.2
A pane’s screen, row for rowThe daemon says what it read: the screen itself (a volee host’s snapshot, with the size of its terminal; a multiplexer’s capture of a pane) or the replay of a session’s output. The preview, the wall, the full-screen view and volee logs show a pane’s screen row for row, blank rows included (ADR 0028)Done: v0.12.2
An exact preview everywhereMet for an agent in a volee host, a view open on a session and a multiplexer pane. For a Claude Code background session that is not open, volee has its replay, which is its screen as far as measured (50 rows of 50): the full-screen view and volee logs show every row of it, and the views that crop show a run of blank rows as one row that says how many it stands for, where they used to hide it without a word. Decided while the project’s owner was away, and his to overturn (ADR 0028). The size of a replay is still told from what it writes: nothing gives itDone

0.13: agents of other AIs

MilestoneContentStatus
Another AI, in its paneAn OpenCode agent started by hand in a tuios or tmux pane is placed in its pane; its preview and its tile are the pane’s screen, and in a tuios pane enter opens it inside voleeDone
volee runvolee run -- <command> runs any program as an agent of the list, in a volee host, from the terminal it is typed in; the leave key gives the terminal back and the program keeps running (ADR 0029)Done
Agents tuios recognizesAn agent of a harness volee has no listing for (Codex CLI, Gemini CLI, Aider…) is found through tuios when it runs in one of its panes (ADR 0030). Checked with stand-in programs carrying the harnesses’ names: the real ones were not availableDone
Releasev0.13.0Done: v0.13.0

0.14: missions as a lead runs them

MilestoneContentStatus
A question with its answersAn agent asks the person a question that offers its answers; the messages window numbers them, a number then y answers, and volee msg answer does it from a shell (ADR 0031)Done
Your approval before a mergeA mission’s coordinator presents its report as a question. On “ok merge” volee merges the work itself (the pull request on GitHub, or a merge commit in a repository without a remote), closes the mission and tidies it in one gesture; a merge that cannot go through changes nothing and says why. No agent merges (ADR 0032)Done
A leadvolee lead starts the agent you talk to: it launches agents and missions for you, never codes, does not wait in a loop, and tells you in three lines what came back; duplicates are refused with whom to write to (ADR 0033)Done
Releasev0.14.0Done: v0.14.0
Writing to a leadA lead does what you write to it through volee (volee msg send, or m in the interface), the same as what you type in its terminal: a message volee hands an agent as from the human is the human’s own word. Found by a mission run on a real daemon after 0.14.0 was installedDone: v0.14.1

0.15: a session typed in any terminal

MilestoneContentStatus
A session in a terminal of its ownenter on a Claude Code session typed in a terminal tab no longer fails. It says which key to press there (the left arrow on its empty prompt, which has Claude Code move the conversation to the background), waits, and opens the conversation by itself, on the same row. It is the same in every terminal application: none is asked for anything (ADR 0034)Done
Releasev0.15.0Done: v0.15.0

0.16: the cockpit’s main screen

MilestoneContentStatus
The treeThe tree of the selected agent, children side by side, and the sessions started on their own in rows. Cards in the agent’s own color, with its state as a filled badge, its model, its activity over five minutes, the lines it changed and its deliveryDone
The frameThe list grouped by kind (leads, missions, terminals, background) with the detail under it; from 160 columns, what waits for you and a journal at the right; the selected agent’s actions on its screen’s border; agents counted by role; keys drawn as keysDone
The context an agent usesOn its card, the share of its context window an agent’s conversation uses, read from its status line, which still shows the person’s own (ADR 0035)Done
The terminal’s backgroundEvery theme draws on the terminal’s own background, unless [tui] background = "theme"Done
Found on the way to the releaseA lead no longer takes its own row of list_agents for a duplicate of the mission it is asked to start (the row is marked you). A coordinator’s name shows whole in the list. A mission’s worker is judged only on evidence read after it stopped: one that committed and stopped within seconds was once said to have no commits. What is typed in edit mode before the agent’s host answers is sent once it does, instead of being droppedDone
Releasev0.16.0Done: v0.16.0

0.17: the tree comes to life

MilestoneContentStatus
Messages between cardsEach message travels from its sender’s card to its recipient’s as a small comet, up the links to their common ancestor and down again, in the color of what it is; a card the person writes to flashes, and shows the messages waiting for it (✉ 1)Done
Living linksLight dotted links in a tint of each agent’s color, the selected lineage in solid lines, dots flowing to the agents at work; the border of a card that waits for the person pulsesDone
A skyline of activityOn each card, a column per five seconds: a low bar while the agent worked, a step taller per tool call, yellow while it waited, red when it failed, faded once it stoppedDone
A large zoomBigger cards in the tree, with what the agent did before, its last message and its delivery; chosen when the tree is smallDone
One status lineThe two rows of key hints become one line in the manner of vim’s: the mode at the left (VOLEE, EDIT in the agent’s color, FILTER…), the few keys of the moment, ? help at the rightDone
Releasev0.17.0Done: v0.17.0

Next

Nothing is scheduled: the plan that ran from 0.11 to 0.14 is complete. What comes next is chosen among the items below.

Later

  • A location adapter for Zellij (jump to a pane-hosted agent); tuios and tmux have one (ADR 0015).
  • Profiles for Codex CLI, Gemini CLI, Grok Build and others, each measured on the real program (ADR 0022). Until then, volee run runs any of them as an agent, with a state read on its screen, and agents of any MCP-capable harness can join through volee mcp --join.
  • Finding agents of harnesses other than OpenCode in the process table, so that they show outside tuios too.
  • Messaging sessions started outside volee.
  • The status line while volee attach or volee run holds the whole terminal, and a choice to put it at the top.
  • The cockpit’s last touches: dim italic secondary text, the journal’s times and arrows, subagents as blinking satellites, cards that unfold when an agent starts.
  • The context of sessions volee did not launch: Claude Code gives it only to a session’s status line, which volee sets for the agents it launches (ADR 0035).
  • Pressing the left arrow for the person where a terminal application has a door for it (Ghostty 1.4 on macOS was measured to have one), and waiting from volee attach as the interface does (ADR 0034).
  • A Homebrew tap and a crates.io release.

Not planned

  • Running agents inside tmux or another multiplexer: hosts hold their terminals (ADR 0019).
  • Windows support, until the harnesses and Unix-socket replacements make it reasonable.
  • A web or desktop interface.