agent-manager

Docs · Sessions and groups

Sessions outlive the manager.

Every agent is a real tmux session with its own directory, command and environment. Quit the manager and they keep working; close the laptop lid and they are still there.

Killing without losing the row

x ends a session that is holding RAM you want back, and on a group row it ends every live session under it. X ends every live session in view. Each asks to confirm first, and what it ends is the tmux session, not the record: the row stays in the tree, marked dead, with its name, group and conversation id intact.

Reviving the same conversation

v relaunches a dead session under its old id, keeping its name, group and history. When the manager holds that session's own conversation id, revive resumes that exact conversation through the tool's resume_by_id_command:

claude --resume {id}
codex resume {id}
opencode --session {id}
grok --resume {id}
gemini --resume {id}

The id arrives one of two ways: tools with a session_id_flag launch under an id the manager mints, and tools that mint their own are read back by a session_store capturer. Without an id, revive falls back to revive_command (claude --continue), which resumes the directory's most recent conversation, and the manager says so in the status line, since sessions sharing a directory would otherwise land on the wrong one. On a group row v revives everything dead under it, and V revives everything dead in view; both revive what they can and name the first failure rather than stopping.

Groups are a tree

Groups are paths like backend/api/auth, forming a tree of unlimited depth, and sessions live at any node including the root. Create subgroups inline with g, fold a subtree with enter on its row, fold or unfold everything with F, hide or restore empty groups with e, and edit a group's name and default path with r.

K and J reorder sessions among their siblings or whole groups among theirs, and the order persists across restarts along with everything else. m moves a session to another group. a archives a session or a whole subtree and u restores it, un-archiving whichever ancestors it needs; t toggles the archived view.

Sessions name themselves

A session spawned without a name gets a placeholder like claude-a1b2, and its first prompt opens by asking the agent to run agent-manager rename once, with a short name for the broad feature it is working on rather than a single subtask. The directive also tells the agent not to rename again unless you ask.

When the first prompt cannot carry the directive, because it is a /slash command or there is no prompt at all, the manager sends it as its own message once the tool's input box appears. The subcommand drops the name into a per-session file, and the manager picks it up on the next poll. A name you set yourself is never overwritten: the first prompt only notes that renaming is available later if you ask.