The fastest workflow for every AI coding agent.
Claude Code, Codex, OpenCode, Grok, Gemini CLI, Pi, and Hermes Agent run side by side. Each tool runs in its own persistent tmux session.
agent-manager is a thin layer over the CLIs you already have. Each session launches your own installed tool as-is: your login, your subscription, your config files, your MCP servers, and every feature the tool ships all carry over, exactly as they behave in a plain terminal.
Instead of hunting through terminal tabs to see which agent is done and which is stuck, every session shows up in one list with live status, grouped into a project tree you can fold and reorder. You answer any of them without attaching: space sends a prompt straight into a session's pane, or spawns a new agent in the selected group. A dead session revives on its own conversation with v. And ctrl+r opens a full-file diff of what an agent changed, syntax-highlighted, where the comments you leave on lines go back to the agent's pane as one review prompt when you press C.
Press f on a session to continue its conversation in a separate named fork.
The tools you use alongside agents live in the same list: T opens a shell under the selected agent, or in the selected group, for builds, Git, and one-off commands. An agent can spawn another, send it a message, and wait until it is done: every MCP-capable session carries those tools on launch.
Not here yet: cost tracking and mouse-driven list navigation.
Jump to: Install · Usage · Keys · Diff review · Configuration · Docs site
Status detection supports Claude Code, OpenCode, Codex, Grok Build, Gemini CLI, Pi, and Hermes Agent by default. Other CLI tools can run as sessions. Add a [tools.<name>] block to give another tool live status rules (see Configuration).
Runs on macOS and Linux, and on Windows inside WSL2.
brew install yoanwai/tap/agent-managerInstalls tmux with it if missing, and Homebrew runs on git, so both dependencies are covered. The tap ships a cask, so an install from the older formula switches over with brew uninstall agent-manager followed by the command above.
curl -fsSL https://raw.githubusercontent.com/YoanWai/agent-manager/main/install.sh | shDownloads the latest release for your platform, verifies it against the published checksums, and installs it to ~/.local/bin. Then it checks for tmux 3.1+ and git and offers to install whichever is missing through the package manager it finds (Homebrew, apt, dnf, pacman, zypper, or apk), printing the exact command when you decline. Set AGENT_MANAGER_INSTALL_DIR for another directory, AGENT_MANAGER_VERSION to pin a version, and AGENT_MANAGER_INSTALL_DEPS=1 to answer the dependency prompt up front (=0 to skip it).
Arch Linux, mise, go install, prebuilt binaries, Windows (WSL2), dependencies, and updating: docs/install.md.
agent-managerSessions run inside tmux (am_* namespace), so they survive the manager quitting. Inside a session, Ctrl+Q detaches back to the manager when your terminal and tmux leave it available; Ctrl+\ is an alternate under the same rule. Ctrl+R opens the session's diff review and F3 opens its directory in your editor. In a full-screen attach, the session footer also shows an inner tmux prefix followed by d when configured. When nested inside another tmux, send the inner prefix shown in the footer, then press d. If both tmux servers use the same prefix, invoke the outer tmux's send-prefix binding; if the outer tmux otherwise captures the inner prefix, configure it to forward that key. agent-manager --version prints the version.
Agent sessions live on a private tmux server named agentmgr, so they never mix with the tmux you run yourself and a kill-server on your own socket leaves them alone. To reach one from a plain shell, name that server: tmux -L agentmgr ls, then tmux -L agentmgr attach -t am_<id>.
The full reference, every key, the quick prompt, killing and reviving, diff review, groups, status detection, stats, and themes, lives in docs/usage.md. Tell your agent what you want to review in Agent Manager, and your agent will set it up for you to view in the review panel. You can also tell your agent to manage sessions and terminals in Agent Manager. The short version:
| Key | Action |
|---|---|
n |
New session (name, tool, directory, optional starting prompt, group) |
space |
Quick prompt: answer the selected session, or spawn an agent in the selected group |
enter |
Focus the session in place; keys go to the agent while the list stays |
→ / ← |
Step in and out: → focuses the session or opens the group, ← closes the group and, at the start of a focused agent's prompt, comes back to the list. In beta, and Settings can turn the pair off |
ctrl+r |
Review the session's changes as full-file diffs; c comments a line, C sends a numbered review round, and sent comments stay visible as open or handled |
x / v |
Kill a session to free its RAM / revive it on its own conversation |
R |
Restart a session on an empty context: same name, group, directory and tool, fresh conversation |
s |
Settings (default tool, theme or follow the OS light/dark mode, list density, review layout, desktop notifications) |
? |
The key map for the current screen; review shows only review bindings |
A session can spawn into its own git worktree (<repo>-worktrees/<name>, branch am/<name>), toggled on the n form, with alt+w in the quick prompt, or by default in Settings.
Configuration (adding your own tools, status rules, revive commands) is in docs/configuration.md.
go run .
env -u TMUX TMUX_TMPDIR=/tmp/amtest go test ./... # end-to-end tests drive a real tmux serverSee CONTRIBUTING.md for the checks CI runs, and AGENTS.md if you point a coding agent at this repo.
Bug reports, feature ideas, and pull requests are welcome. See CONTRIBUTING.md for setup and the checks CI runs. Questions and setups worth sharing go in Discussions. Security reports go through a private advisory; see SECURITY.md.



