---
title: "agent-manager"
description: "Run every AI coding agent side by side in one tmux TUI: live status, instant prompts, isolated git worktrees, agent-to-agent delegation, managed terminals, and in-place diff review."
canonical: "https://agent-manager.dev/"
last-updated: "2026-10-15"
section: "Site"
source: "agent-manager"
---

# agent-manager

Go · tmux · **Apache-2.0** · macOS, Linux, and Windows

# The fastest developer workflow for every AI coding agent.

**agent-manager** is a Go terminal UI on top of tmux that runs every AI coding agent side by side. Everything is one keypress: spawn one in a sentence, answer a blocked one without attaching, review its diff without leaving the list. Each session runs your own installed CLI as-is: your login, your config, your MCP servers, every feature it ships.

- [Install](/docs/install/)
- [How it compares](/compare/)

$ `brew install agent-manager`

[![YoanWai/agent-manager on Trendshift](https://trendshift.io/api/badge/trendshift/repositories/89312/daily?language=Go)](https://trendshift.io/repositories/89312?utm_source=trendshift-badge&utm_medium=badge&utm_campaign=badge-trendshift-89312) [![Live on Peerlist Launchpad](/assets/peerlist-launch-laurel.webp)](https://peerlist.io/yoanwai/project/agent-manager)

![Animated demo: five prompts send five fresh agents to work from quick prompt mode without the cursor leaving the tree, the first on Opus at high effort picked with ctrl+l and ctrl+x, each row named by the prompt it was given, then a session's diff opens in review.](/assets/demo.gif)

_Five agents sent to work, one key each, the first on its own model and effort. All of it without leaving the list._

Seen in the wild

## The launch escaped the launch post.

[All coverage →](/coverage/)

- [Hacker News](https://news.ycombinator.com/item?id=49107749): community · Show HN launch discussion
- [TLDR Dev](https://tldr.tech/dev/2026-07-31): newsletter · Launches & Tools
- [daily.dev](https://daily.dev/posts/github---yoanwai-agent-manager-terminal-ui-to-manage-ai-coding-agent-sessions-claude-code-opencod-mikayess2): syndication · Hacker News pickup and discussion
- [Product Hunt](https://www.producthunt.com/products/agent-manager): launch · Featured launch, August 2026
- [Peerlist Launchpad](https://peerlist.io/yoanwai/project/agent-manager): launch · Live on week 35, August 2026
- [Trendshift](https://trendshift.io/repositories/89312): trending · Reached the daily trending list
- [Claude Workshop](https://www.claudeworkshop.com/research/agent-manager-puts-ai-agents-in-tmux): field note · Reviewing agents where they run

## Every task gets its own agent, seconds apart.

**A sentence is the whole ceremony.** Hit `space` on a group row, type the task, press enter: that agent is already running, with your prompt embedded and the group's directory set. No form, no `cd`, no naming. The bar clears and stays open, so the next task goes to the next agent immediately, in a different project if you want. On a session row the same key answers an agent that is already working. When the work needs its own branch, `ctrl+t` in the same bar spawns the agent into a fresh git worktree.

### `space` One sentence, one agent

Type what it should do, press enter, repeat. They go out as fast as you can describe them, each already working, across as many projects as you keep open, and you never left the list to start them.

### `tab` A different tool and model per spawn

Cycle claude, opencode, codex, grok, gemini, agy, pi, cmd, hermes, muse or omp without leaving the bar. `ctrl+l`, `ctrl+x` and `ctrl+y` pick its model, reasoning effort and profile, read live from the CLI. The target row shows what the next enter will start, and each CLI remembers your last picks.

### `space` Answer in place

On a session row the same key sends your reply into that agent's pane as a user message, so a blocked agent never costs you an attach.

### `auto` They name themselves

A session starts as `claude-a1b2` and renames itself once the agent knows what the work is, so a screen of them still reads as a list of features.

### `mcp` Agents spawn agents

An agent can work the same list you do: spawn a session on its own task, read another one's screen, message it, and wait on one before taking its next step. Repo work takes a worktree each, and sessions sharing a checkout declare the files they are about to edit, so an overlap surfaces before either commits. [The tools they call](/docs/mcp/).

Six states, and for Claude Code they arrive from its own hook events rather than from guessing at the pane. [How detection works](/docs/status/).

**working**Mid-turn. Editing, running tests, thinking.

**waiting**Blocked on you. A permission prompt or a question.

**finished**Turn complete, nothing pending.

**errored**The agent reported a failure.

**idle**Alive at a prompt with nothing to do.

**dead**Session ended. The row and its history stay.

![Animated demo: space opens quick prompt mode on a finished Claude Code session, and the question goes straight into its pane, which turns from finished to working and starts answering.](/assets/demo-space.gif)

_The reply lands in the agent's pane as a user message, and on a group the same bar spawns. No attach, no tab switch._

![The sessions view: twenty-odd agent sessions grouped under backend, its api subgroup, frontend and infra, each with a colour-coded live status, a real Claude Code transcript in the preview on the right, and machine gauges at the bottom left.](/assets/screenshot-sessions.png)

_A folded group keeps its per-status counts, so a collapsed subtree still says whether anything under it needs you._

---

## However many you run, it still reads as a list of projects.

**Groups are paths, not folders.** `backend/api/auth` nests as deep as the work does, sessions live at any node, and everything you arrange stays arranged across restarts. Fold what you are not looking at, archive what is finished, and the fleet stops looking like a wall of processes.

### `↵` Fold, and still know

A folded group keeps a count per status on its row, so a collapsed subtree still says whether anything under it is blocked on you. `F` folds or unfolds the whole tree at once.

### `g` Nest as deep as you want

Make a subgroup inline while spawning, give it a default path, and every agent started there lands in the right directory.

### `K` `J` Order that sticks

Reorder sessions among their siblings or whole groups among theirs. `m` moves a session elsewhere, and the arrangement survives a restart.

### `a` Archive the finished ones

Park a session, or a group and its entire subtree, out of the view. Archive ends the process and keeps the last preview; `u` resumes it, and `t` shows what is parked. [Groups in full](/docs/sessions/).

The arrows walk the same tree sideways: `→` steps into the row under the cursor, focusing the session or opening the group, and `←` steps back out, closing the group or leaving a focused agent from the head of its prompt. The pair is in beta, and Settings has a row that turns it off.

The shells you keep next to the agents live here too: `T` opens a terminal under the selected agent, or in the selected group, for builds, Git, and one-off commands. A nested shell is named after the session it hangs under.

![Animated demo: a group folds down to one row keeping its per-status counts, the whole tree folds and unfolds at once, a session moves down and back among its siblings, a nested group is created, then a session is archived and found again in the archived view.](/assets/demo-groups.gif)

_A folded subtree still says whether anything under it is blocked on you._

---

## The mouse works across the whole manager.

**Every row, pane and seam answers to it.** The wheel moves the cursor, a click focuses a session, and a click on its row or the mouse back button brings you back. Drag a row by its `⠿` handle to reorder it or move it into another group, and the `[…]` at the end of every row opens its actions. The divider between the list and the preview drags, and a click on `messages` in the key legend opens them.

### Click to focus, drag to move

One click focuses a session, the same as `→`, and a double click folds a group. The `⠿` handle drags a row into place, and `[…]` or a right click lists everything the row can do.

### Drag to copy, click to open

In a focused pane a drag selects text and copies it, and a click on a link opens it in your browser. An agent that tracks the mouse itself still gets a plain click.

### The wheel stays inside

The manager claims mouse reporting, so a wheel notch moves the cursor, scrolls the diff, or walks a focused pane's scrollback, and never scrolls the manager away.

### Yours to turn off

Settings has a mouse row, on by default. Off hands the terminal back its native selection over the list and the preview. [Every key and click](/docs/keys/).

![Animated demo: the wheel moves the cursor, a click focuses a session, a click on its row comes back, the ⠿ handle drags a row within its group and into another one, and […] opens the row's actions.](/assets/demo-mouse.gif)

_Three real Claude Code sessions, driven by the mouse alone._

---

## Review mode, one key from the list.

**The manager becomes a reviewer.** `ctrl+r` takes the whole screen for the selected session's repo: changed files with +/- counts on the left, the entire file on the right, syntax highlighted with the changed lines tinted, and its own keymap while you are in there. It refreshes as the agent keeps editing, and `esc` puts you back on the row you came from.

A session's directory is often an umbrella folder holding a dozen repos, so the agent settles it rather than you: through the MCP tools it declares the repo or worktree it moved into and the branch its work merges into, both validated against git, and review opens there. Nothing declared? Dirty working trees rank first, then the most recent commit. [How it resolves](/docs/review/#which-repo).

![Animated demo of the review screen: a changed Go file scrolled side by side, the layout switched to unified, the next file opened, then a line comment sent back to the agent, which starts working on it.](/assets/demo-diff.gif)

_Fig. 6ctrl+r · review mode_

### `auto` It targets itself

The agent's declared repo and merge base win over the ranking; worktrees are found wherever they live on disk.

### `r` `b` `B` Or you take over

Pick the repo, the branch from its worktrees, or the target the diff compares against. Your pick wins for as long as the manager runs.

### `s` Four scopes

Uncommitted, versus the merge target, the last commit, or staged, so the same screen works before and after a commit.

### `u` Split or unified

Toggle the layout in place, cursor held on the same source line. `n` jumps to the next change.

Then the part the others on the [comparison](/compare/) only do in a browser:

**Comment a line, and the agent gets your notes.** `c` writes a note on the line under the cursor and they stay on the review screen until you send them. `C` flattens every note into one review prompt and delivers it into that agent's pane, so it starts on your feedback while you watch the diff update. [The review loop](/docs/review/#comments).

---

## Kill it for the RAM. Revive the same conversation.

The process and the record are separate things, so ending one never costs you the other.

### `x` Kill, keep the row

The tmux session ends and the RAM comes back. The row stays, marked dead, name and conversation id intact.

### `v` Revive, same thread

Relaunches on _that exact conversation_ through the tool's own resume command, not a fresh one.

### `↑` The row remembers

A killed session still shows the snapshot of its pane from when it had one, so the row says what the agent was doing when it stopped. [More](/docs/sessions/).

### `f` Fork the thread

A named sibling continues the same conversation, so one copy explores an idea while the original keeps working. Each fork is a full session of its own, review included.

![Animated demo: x on a group ends every session under it and the rows stay, marked dead with their snapshots intact, then v and one confirm relaunch the whole subtree, each session back on the conversation it was holding.](/assets/demo-revive.gif)

_The process and the record are separate things, so the RAM comes back and the thread does not._

---

## The agents it knows.

Every spawn is the tool you already installed, launched with the config, login, and subscription it already has. `tab` cycles the tool the next spawn will use, and the `n` form or `ctrl+l`, `ctrl+x` and `ctrl+y` in the bar pick the model, effort and profile that tool lists. Live status ships for these:

Claude CodeOpenCodeCodex Grok BuildGemini CLIAntigravity CLIPiCommand CodeHermes AgentMuse CodeOh My Pi

Each profile lives in the binary, rules included, so a release that fixes a CLI's new screen reaches everyone on the next update. Settings picks which ones the pickers offer, and a CLI outside the list is one prefilled request away. [The eleven, and how a new one gets in](/docs/agents/).

The manager registers its own MCP server into every MCP-capable session it spawns, so the agent can drive the workspace: spawn a teammate, send it a message, wait until it is done, and open a terminal the user can watch. [How registration works](/docs/mcp/).

- `create_session`Starts another agent on a named task, in its own worktree if the work needs one.
- `send_session`Queues a message for another agent, delivered once it is at rest.
- `create_terminal`Opens a shell under the caller for work the user should see.
- `review`Declares the repo, merge base and diff scope so review opens in the right place.

---

## Questions

### What is agent-manager?

agent-manager is a terminal UI written in Go that runs every AI coding agent as a live tmux session. Each row in its list is a real tmux session running a real coding CLI, coloured by what that CLI's pane is doing, so a fleet of agents is read, answered and reviewed from one screen.

### Which coding CLIs does agent-manager support?

Eleven, as of v0.40.0: Claude Code, OpenCode, Codex, Grok Build, Gemini CLI, Antigravity CLI, Pi, Command Code, Hermes Agent, Muse Code and Oh My Pi. Each one's launch command, resume and fork commands, MCP registration and status rules are built into the binary, so an upgrade brings the current version of all of them. Hermes, Antigravity and Oh My Pi have no fork. A CLI outside that list is a feature request, and the CLIs row in Settings opens one prefilled.

### Can each session run on its own model?

Yes, since v0.40.0. The new-session form has model and effort rows, plus a profile row for a CLI that has profiles, and quick prompt mode picks the same with ctrl+l, ctrl+x and ctrl+y. agent-manager spawn takes --model, --effort and --profile. The lists are read live from each CLI, so a model the CLI ships tomorrow shows up without an agent-manager update. Each CLI keeps your last picks, and the choice is saved on the session, so restart, revive and fork run on it.

### What does agent-manager cost?

Nothing. It is free and open source under the Apache-2.0 licence, with no account, no licence key and no paid tier. The coding CLIs it runs are billed by their own vendors.

### What licence is agent-manager under?

Apache-2.0, since v0.19.0 on 4 August 2026. Releases up to v0.18.0 shipped under MIT, which is why write-ups from July 2026 list MIT. The LICENSE and NOTICE files, GitHub's licence detection and the Homebrew and AUR packages all say Apache-2.0.

### Does agent-manager support the mouse?

Yes, since v0.38.0. The wheel moves the cursor, a click focuses a session (a double click in the full-screen layout), a row drags by its handle to reorder it or move it into another group, and the menu at the end of every row opens its actions. The divider between the list and the preview drags. In a focused pane a drag selects and copies text, and a click on a link opens it. Settings has a mouse toggle that hands native selection back to the terminal.

### Which platforms does agent-manager run on?

macOS and Linux on both amd64 and arm64. Windows runs natively on psmux 3.4 or newer with PowerShell 7.3 or newer, and it still runs inside WSL2. macOS, Linux and WSL2 need tmux 3.1 or newer and git.

### How do I install agent-manager?

brew install agent-manager on macOS or Linux, from homebrew-core. On Windows, irm https://raw.githubusercontent.com/YoanWai/agent-manager/main/install.ps1 | iex. There is also a Homebrew cask for the prebuilt binary, an install script, an AUR package, mise, go install, and prebuilt binaries for every release.

### Can an agent drive agent-manager?

Yes. The binary carries an MCP server that registers into every MCP-capable session it starts, so an agent can spawn other agents, message them, wait on them, claim shared tasks, reserve files and drive terminals on the developer's own machine.

### Does agent-manager replace Claude Code, Codex or OpenCode?

No. It starts the CLIs you already installed, with their login, config, MCP servers and features unchanged. It reads each pane the way a human would, or Claude Code hook events, and colours the row by what that CLI is doing.

### How does agent-manager compare to herdr and plain tmux?

agent-manager is a Go TUI on tmux, so sessions stay alive if you quit it and you answer or review from the list. herdr replaces tmux with its own runtime. Plain tmux keeps sessions alive but cannot tell which agent is blocked. The feature table is at https://agent-manager.dev/compare/.

### How is agent-manager different from a Claude Code tmux session picker?

A picker such as tmux-claude-hatch or claude-tmux lists the Claude Code sessions in tmux and jumps to one. agent-manager runs eleven coding CLIs, answers a session without attaching, revives a dead one on its own conversation, and reviews its diff with line comments that go back to the agent. The pickers are lighter, and they find Claude sessions you started by hand. The comparison, lazyclaude and ccmux included, is at https://agent-manager.dev/compare/#claude-code-tmux.

### Can I run several coding agents at once?

Yes. That is what it is for. Each agent is its own tmux session in one list, grouped by project, with live status so you can see which is working, which is waiting on you, and which has finished.

### Does agent-manager send my code or prompts to a cloud service?

No. It is a local binary. Sessions run on your machine as tmux sessions. Nothing about your sessions, prompts, code or repositories is sent anywhere. The coding CLIs you start talk to their own vendors; agent-manager does not proxy them.

---

## Quit. They keep working.

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. Close the manager, close the laptop: they are still there when you come back.

**Not here yet:** cost tracking. If that is what you came for, the [comparison](/compare/) says which project does it.

- [Install it](/docs/install/)
- [Read the docs](/docs/)
- [Source ↗](https://github.com/YoanWai/agent-manager)
