Homebrew 默认公式从源码构建,要预编译二进制需改用 brew install --cask yoanwai/tap/agent-manager;Scoop 桶独立更新,可能落后于最新 release,需 scoop update 后再 scoop update agent-manager;安装脚本从 main 分支下载的副本不在 checksums.txt 中,无法校验
agent-manager
wainmannApache-2.0活跃维护把 Claude Code、Codex、Gemini CLI 等多个 AI 编码代理放进同一个 tmux 终端界面并行运行,实时显示状态、管理 worktree 并审查代码差异。
Terminal multiplexer for AI coding agents. Run Claude Code, Codex, OpenCode, Gemini CLI and more side by side in one tmux TUI, with live status, worktrees and diff review. Discord: discord.gg/ecS88An7pF
brew install agent-managerREADME 未说明;仅要求 macOS、Linux 或 Windows(需 psmux),也可在 WSL2 内运行,依赖 tmux 3.1+ 与 git
在 tmux TUI 里并排运行多个 AI 编码 CLI,统一查看状态、审阅 diff
把 Claude Code、Codex、Gemini CLI 等多个 AI 编码代理放进同一个 tmux 终端界面并行运行,实时显示状态、管理 worktree 并审查代码差异。
核心能力
- 每个 AI CLI 跑在独立持久 tmux 会话中
- 单列表展示所有会话实时状态并按项目树分组
- 无需 attach 即可向会话发送提示词或新建 agent
- ctrl+r 打开语法高亮全文件 diff 并回传行级评论
- 按 f 在独立命名分支中继续会话对话
容易踩的坑
- v0.48.1最新正式版2026-11-07 · 2026-11-07 23:40 UTC
Run every AI coding agent from one terminal. Claude Code, Codex, OpenCode, Grok Build, Gemini CLI, Antigravity CLI, Pi, Command Code, Hermes Agent, Muse Code, Oh My Pi, Cursor CLI, and Kiro CLI run side by side, each in its own tmux session, with live status, a project tree, quick prompt mode, and full-file diff review. Runs on macOS, Linux and Windows (with psmux), and inside WSL2. See it running.
v0.48.1
Updates wait until your install can receive them
The update message now waits until your package manager has the release, and pressing u says plainly when an upgrade changed nothing.
Highlights
UpdatesThe message waits for your Homebrew, mise, Scoop or AUR install, and u reports an upgrade that changed nothing.
Thank you
Started something
- @ipl31 is batching status-label updates and finishing compatible-mode rendering (#1025, #1026)
- @subbeh stamps git describe into local builds (#1017)
What's Changed
- fix(update): show the update message once this install can receive it by @YoanWai in https://github.com/wainmann/agent-manager/pull/1027
Full Changelog: https://github.com/wainmann/agent-manager/compare/v0.48.0...v0.48.1
Install
# macOS / Linux brew install agent-manager curl -fsSL -o install.sh https://github.com/wainmann/agent-manager/releases/latest/download/install.sh && sh install.sh mise use -g ubi:wainmann/agent-manager go install github.com/YoanWai/agent-manager@latest # Arch Linux yay -S agent-manager-bin# Windows. The Scoop bucket can lag this release. scoop bucket add yoanwai https://github.com/YoanWai/scoop-bucket scoop install yoanwai/agent-manager # Download install.ps1 (attached below, listed in checksums.txt), read it, # then run it. Windows PowerShell 5.1 has no &&. irm https://github.com/wainmann/agent-manager/releases/latest/download/install.ps1 -OutFile install.ps1 if ($?) { Get-Content .\install.ps1 Unblock-File .\install.ps1 powershell -NoProfile -ExecutionPolicy Bypass -File .\install.ps1 }install.shis attached too.gh attestation verify <file> --repo wainmann/agent-managerchecks build provenance onceghis logged in. Older releases verify with--owner YoanWai --signer-repo YoanWai/agent-managerin place of--repo wainmann/agent-manager.The shell short form runs the script without a local copy:
curl -fsSL https://raw.githubusercontent.com/wainmann/agent-manager/main/install.sh | sh.Prebuilt macOS, Linux and Windows binaries are attached below.
Get involved
Discussions for questions and setups, issues for bugs and ideas, CONTRIBUTING.md to send a patch.
- v0.48.02026-11-07 · 2026-11-07 17:59 UTC
查看更新说明
Run every AI coding agent from one terminal. Claude Code, Codex, OpenCode, Grok Build, Gemini CLI, Antigravity CLI, Pi, Command Code, Hermes Agent, Muse Code, Oh My Pi, Cursor CLI, and Kiro CLI run side by side, each in its own tmux session, with live status, a project tree, quick prompt mode, and full-file diff review. Runs on macOS, Linux and Windows (with psmux), and inside WSL2. See it running.
v0.48.0
Kiro CLI joins, terminals get names, and waiting rows can rest
Kiro CLI joins the built-in agents with live status, MCP registration and conversation revival. Name a terminal when creating it, move an SSH session between groups through MCP or the CLI, and mark a waiting row idle until its screen changes. Claude and Codex status detection, message delivery and focused input also get fixes.
Highlights
Kiro CLIKiro CLI 3.1.0 or newer joins the built-in tools, with live status, MCP registration and conversation revival.Named terminalsGive create_terminal a name or pass --name to agent-manager terminal create, including on an SSH host.Remote movesmove_session and agent-manager move accept host::id to move an SSH session between groups.Mark idlePress . on a waiting row to leave it idle until its screen changes.Claude statusQuestion dialogs hold queued messages, quoted dialog text avoids false waits, and signed-out turns stop reading as working.Codex and inputA cut-off Codex status row stays working, and Shift+Enter reaches the focused agent.Message deliverySessions can exchange messages without the old pairwise cap; canceling a replacement preserves the unread result.Startup and installMCP registration has a timeout, and installers download from wainmann while still verifying older releases.
Thank you
Built it
- @mgkvibez added names at terminal creation: https://github.com/wainmann/agent-manager/pull/962
- @subbeh added moves on SSH hosts: https://github.com/wainmann/agent-manager/pull/963
- @subbeh added waiting-row acknowledgment: https://github.com/wainmann/agent-manager/pull/996
- @subbeh fixed Claude question delivery: https://github.com/wainmann/agent-manager/pull/978
- @subbeh improved Claude dialog detection: https://github.com/wainmann/agent-manager/pull/990
- @subbeh isolated tmux test configuration: https://github.com/wainmann/agent-manager/pull/992
- @cvas22 bounded MCP registration so startup can continue: https://github.com/wainmann/agent-manager/pull/796
- @ribeirojose added coverage for guards found by mutation testing: https://github.com/wainmann/agent-manager/pull/993
What's Changed
- fix(install): download from wainmann/agent-manager and keep verifying earlier releases by @YoanWai in https://github.com/wainmann/agent-manager/pull/966
- ci: upload coverage with OIDC only by @YoanWai in https://github.com/wainmann/agent-manager/pull/976
- fix(execution): keep the unread result when the runner is canceled mid-replace by @YoanWai in https://github.com/wainmann/agent-manager/pull/977
- fix(status): hold messages on every screen of a Claude question dialog by @subbeh in https://github.com/wainmann/agent-manager/pull/978
- docs: add a GitHub Sponsors badge to the README header by @YoanWai in https://github.com/wainmann/agent-manager/pull/983
- fix(mcpreg): bound the MCP registration and start without it on timeout by @cvas22 in https://github.com/wainmann/agent-manager/pull/796
- docs: correct the network note and add uninstall steps by @YoanWai in https://github.com/wainmann/agent-manager/pull/984
- feat(terminal): name a terminal at creation by @mgkvibez in https://github.com/wainmann/agent-manager/pull/962
- feat(mcp): move a session on an SSH host from move_session by @subbeh in https://github.com/wainmann/agent-manager/pull/963
- test(tmux): start test servers without the developer's tmux.conf by @subbeh in https://github.com/wainmann/agent-manager/pull/992
- test: cover the guards mu
- v0.47.12026-11-02 · 2026-11-02 23:40 UTC
查看更新说明
Run every AI coding agent from one terminal. Claude Code, Codex, OpenCode, Grok Build, Gemini CLI, Antigravity CLI, Pi, Command Code, Hermes Agent, Muse Code, Oh My Pi, and Cursor CLI run side by side, each in its own tmux session, with live status, a project tree, quick prompt mode, and full-file diff review. Runs on macOS, Linux and Windows (with psmux), and inside WSL2. See it running.
What's Changed
- fix(notices): show a pinned message someone dismissed before the pin by @YoanWai in https://github.com/wainmann/agent-manager/pull/961
- ci: run gitleaks via the CLI by @YoanWai in https://github.com/wainmann/agent-manager/pull/960
- chore: point runtime URL constants at wainmann/agent-manager by @YoanWai in https://github.com/wainmann/agent-manager/pull/967
- docs: point doc links at wainmann/agent-manager by @YoanWai in https://github.com/wainmann/agent-manager/pull/968
- ci: release with the workflow token by @YoanWai in https://github.com/wainmann/agent-manager/pull/969
- chore: point runtime URLs at wainmann/agent-manager by @YoanWai in https://github.com/wainmann/agent-manager/pull/965
- ci: fail the badges run on a rejected token and keep a Codecov token fallback by @YoanWai in https://github.com/wainmann/agent-manager/pull/972
- docs: use the wainmann mise slug by @YoanWai in https://github.com/wainmann/agent-manager/pull/973
Full Changelog: https://github.com/wainmann/agent-manager/compare/v0.47.0...v0.47.1
Install
# macOS / Linux brew install agent-manager curl -fsSL -o install.sh https://github.com/wainmann/agent-manager/releases/latest/download/install.sh && sh install.sh mise use -g ubi:wainmann/agent-manager go install github.com/YoanWai/agent-manager@latest # Arch Linux yay -S agent-manager-bin# Windows. The Scoop bucket can lag this release. scoop bucket add yoanwai https://github.com/YoanWai/scoop-bucket scoop install yoanwai/agent-manager # Download install.ps1 (attached below, listed in checksums.txt), read it, # then run it. Windows PowerShell 5.1 has no &&. irm https://github.com/wainmann/agent-manager/releases/latest/download/install.ps1 -OutFile install.ps1 if ($?) { Get-Content .\install.ps1 Unblock-File .\install.ps1 powershell -NoProfile -ExecutionPolicy Bypass -File .\install.ps1 }install.shis attached too.gh attestation verify <file> --repo wainmann/agent-managerchecks build provenance onceghis logged in. Older releases verify with--owner YoanWai --signer-repo YoanWai/agent-managerin place of--repo wainmann/agent-manager.The shell short form runs the script without a local copy:
curl -fsSL https://raw.githubusercontent.com/wainmann/agent-manager/main/install.sh | sh.Prebuilt macOS, Linux and Windows binaries are attached below.
Get involved
Discussions for questions and setups, issues for bugs and ideas, CONTRIBUTING.md to send a patch.
- v0.47.02026-11-01 · 2026-11-01 23:34 UTC
查看更新说明
Run every AI coding agent from one terminal. Claude Code, Codex, OpenCode, Grok Build, Gemini CLI, Antigravity CLI, Pi, Command Code, Hermes Agent, Muse Code, Oh My Pi, and Cursor CLI run side by side, each in its own tmux session, with live status, a project tree, quick prompt mode, and full-file diff review. Runs on macOS, Linux and Windows (with psmux), and inside WSL2. See it running.
v0.47.0
Links open from a session, and agents can move sessions between groups
Every link an agent prints opens on a click in a focused pane, including Claude Code's markdown links and URLs that wrap across rows. Hovering a link names its target on the status bar. Agents and scripts can file a session under another group with the new
move_sessionMCP tool andagent-manager move. The quick bar loads models again after you tab to another CLI.Highlights
LinksMarkdown links and wrapped URLs open on a click in a focused pane. File links show in the file manager.MoveThemove_sessionMCP tool andagent-manager movefile a session under another group.Quick bar modelsTabbing to another CLI loads its models, so the model and effort picks show up again.Compatible symbolsArrow hints read up/down and left/right, for fonts that lack the arrow marks.Group labelsDeleting a group from the CLI or MCP updates the status bar of every session it moved.Pinned messagesA pinned message stays in the messages panel until it expires.
Thank you
Built it
- @subbeh asked for and built moving a session to another group from MCP and the CLI (#924, #950)
- @ipl31 made Compatible symbols spell arrow hints as words (#918)
Started something
- @mgkvibez offered to build named terminals (#948)
What's Changed
- feat(mcp): move a session to another group from MCP and the CLI by @subbeh in https://github.com/YoanWai/agent-manager/pull/950
- feat(notices): pin a feed message so it stays until it expires by @YoanWai in https://github.com/YoanWai/agent-manager/pull/953
- fix(focus): open markdown, wrapped and file links from a session by @YoanWai in https://github.com/YoanWai/agent-manager/pull/958
- fix(ui): read the models of the CLI the quick bar tabs to by @YoanWai in https://github.com/YoanWai/agent-manager/pull/954
- fix(ui): use portable navigation in compatible mode by @ipl31 in https://github.com/YoanWai/agent-manager/pull/918
- fix(cli): relabel sessions delete-group moves to the root by @YoanWai in https://github.com/YoanWai/agent-manager/pull/959
- chore(feed): stop reading the pre-v0.40.0 feed cache by @YoanWai in https://github.com/YoanWai/agent-manager/pull/957
Full Changelog: https://github.com/YoanWai/agent-manager/compare/v0.46.0...v0.47.0
Install
# macOS / Linux brew install agent-manager curl -fsSL -o install.sh https://github.com/YoanWai/agent-manager/releases/latest/download/install.sh && sh install.sh mise use -g ubi:YoanWai/agent-manager go install github.com/YoanWai/agent-manager@latest # Arch Linux yay -S agent-manager-bin# Windows. The Scoop bucket can lag this release. scoop bucket add yoanwai https://github.com/YoanWai/scoop-bucket scoop install yoanwai/agent-manager # Download install.ps1 (attached below, listed in checksums.txt), read it, # then run it. Windows PowerShell 5.1 has no &&. irm https://github.com/YoanWai/agent-manager/releases/latest/download/install.ps1 -OutFile install.ps1 if ($?) { Get-Content .\install.ps1 Unblock-File .\install.ps1 powershell -NoProfile -ExecutionPolicy Bypass -File .\install.ps1 }install.shis attached too.gh attestation verify <file> --repo YoanWai/agent-managerchecks build provenance onceghis logged in.The shell short form runs the script without a local copy:
curl -fsSL https://raw.githubusercontent.com/YoanWai/agent-manager/main/install.sh | sh.Prebuilt macOS, Linux and Windows binaries are attached below.
Get invol
- v0.46.02026-10-31 · 2026-10-31 23:44 UTC
查看更新说明
Run every AI coding agent from one terminal. Claude Code, Codex, OpenCode, Grok Build, Gemini CLI, Antigravity CLI, Pi, Command Code, Hermes Agent, Muse Code, Oh My Pi, and Cursor CLI run side by side, each in its own tmux session, with live status, a project tree, quick prompt mode, and full-file diff review. Runs on macOS, Linux and Windows (with psmux), and inside WSL2. See it running.
v0.46.0
Messages are an inbox now, and review walks the branch commit by commit
The messages panel is an inbox: messages sit in a list grouped by kind, and the one you pick opens beside it. A release opens on Overview, Changes and Thanks tabs, with every merged PR listed. Review's commit scope steps through each commit on the branch, and marks and comments stay on the commit they were made on. Links in a focused pane show a hand pointer.
Highlights
InboxMessages sit in a list grouped by kind. The one you pick opens beside it, with tabs for a release's notes.Commit reviewReview steps through every commit on the branch, and marks and comments stay on their own commit.Review scopeReview reopens in the scope each session last used. Settings picks the scope for the rest.Link pointerA link in a focused pane shows a hand pointer, so you can tell it opens on click.Narrow footersFooter help stacks onto more rows in a narrow terminal instead of getting cut off.Your keysList badges and confirms name the key you bound, not the default one.Any remoteReview and new worktrees find the default branch on a remote with any name.Worktree toggleA git repo stays worktree-ready while the New Session form or the quick bar sits open.
Thank you
Built it
- @ribeirojose rebuilt how keys and clicks reach each screen, so the card on top always answers first (#861)
- @chancez made review step through any commit and find the default branch on any remote (#784, #792, #793, #794)
- @ipl31 stacked footer help in narrow terminals and fixed the worktree toggle (#896, #903, #906)
- @semlak made badges and confirms name the key you bound (#937)
Found it
- @larroy tracked the worktree toggle bug down on Windows (#929)
Started something
- @keepmacawake laid out how macOS sleep works for a keep-awake setting (#882)
- @tonyperkins asked for
agent-manager focusand named terminals (#947, #948) - @cvas22 kept the MCP registration timeout PR current with main (#796)
What's Changed
- feat(notices): turn the messages panel into an inbox by @YoanWai in https://github.com/YoanWai/agent-manager/pull/944
- feat(ui): review any commit on the branch by @chancez in https://github.com/YoanWai/agent-manager/pull/793
- feat(ui): show a hand pointer over links in a focused pane by @YoanWai in https://github.com/YoanWai/agent-manager/pull/945
- fix(ui): stack footer help in narrow terminals by @ipl31 in https://github.com/YoanWai/agent-manager/pull/896
- fix(ui): name the configured key in list badges and confirms by @semlak in https://github.com/YoanWai/agent-manager/pull/937
- fix(git): find the default branch on any remote by @chancez in https://github.com/YoanWai/agent-manager/pull/792
- fix(ui): keep the worktree row available while the form or quick bar is idle by @YoanWai in https://github.com/YoanWai/agent-manager/pull/938
- fix(ui): swap the list as soon as t toggles the archived view by @YoanWai in https://github.com/YoanWai/agent-manager/pull/943
- fix(tmux): keep killing a canceled command's group until it is empty by @YoanWai in https://github.com/YoanWai/agent-manager/pull/940
- Route every key and click through a surface stack by @ribeirojose in https://github.com/YoanWai/agent-manager/pull/861
- refactor(ui): follow-ups from the surface stack by @YoanWai in https://github.com/YoanWai/agent-manager/pull/942
- test: isolate tests that build git repos from an inherited GIT_DIR by @chancez in https://github.com/YoanWai/agent-manager/pull/794
- docs(re
用户点评
登录用户的真实使用记录,可按版本和硬件筛选还没有人点评。第一个说出真实体验的人最有价值。

Claude Code, Codex, OpenCode, Grok, Gemini CLI, Antigravity CLI, Pi, Command Code, Hermes Agent, Muse Code, Oh My Pi, Cursor CLI, and Kiro CLI 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 mouse works across the whole manager. The wheel moves the cursor, a click on a session focuses it, and a click on its row or the mouse back button brings you back. Drag a row by its handle (⠿ in Advanced, = in Compatible) 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 while any message is left, a click on messages in the key legend opens it. In a focused pane a drag selects and copies text, and a click on a link opens it in your browser. Settings has a mouse toggle for terminals where you want native selection back. Settings → symbols switches between Advanced geometric marks (the default) and Compatible ASCII marks, with a live preview.
![Mouse demo with the geometric marks used by Advanced mode: the wheel moves the cursor, clicks focus and leave sessions, the ⠿ handle drags rows, and […] opens row actions](https://github.com/wainmann/agent-manager/blob/HEAD/docs/demo-mouse.gif)
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.
Save named instructions in Settings and reuse them from the New Session form, the quick prompt, a focused session, spawn --saved, send --saved, or create_session. See Saved prompts.
Not here yet: cost tracking.
Jump to: Install · Usage · Keys · Diff review · Configuration · Docs site
Supported tools
Status detection supports Claude Code, OpenCode, Codex, Grok Build, Gemini CLI, Antigravity CLI, Pi, Command Code, Hermes Agent, Muse Code, Oh My Pi, Cursor CLI, and Kiro CLI. Each one's launch, revive, fork, and status rules ship in the binary (Hermes, Antigravity, Oh My Pi, Cursor CLI, and Kiro CLI have no fork), so an upgrade brings the current version of all of them (see Configuration). A CLI that is not on the list is a feature request.
Install
Runs on macOS and Linux, natively on Windows with psmux, and inside WSL2.
Homebrew (macOS / Linux)
brew install agent-manager
Installs tmux with it if missing, and Homebrew runs on git, so both dependencies are covered. This is the homebrew-core formula, which builds from source. For the prebuilt binary, brew install --cask yoanwai/tap/agent-manager.
Scoop (Windows)
scoop bucket add yoanwai https://github.com/YoanWai/scoop-bucket
scoop install yoanwai/agent-manager
Installs the version published in that bucket, and Scoop installs psmux with it. The bucket is updated on its own, so it can lag the latest release. To update, close agent-manager and run scoop update, then scoop update agent-manager. A global install adds --global to the second command, in an elevated PowerShell. The in-app updater shows those instructions instead of replacing Scoop's binary.
Install script (macOS / Linux)
Download the script, read it, then run it. sh install.sh runs only after that download succeeds.
curl -fsSL -o install.sh https://raw.githubusercontent.com/wainmann/agent-manager/main/install.sh &&
sh install.sh
That copy is the script on main. It is not in checksums.txt. The release that first attaches install.sh lists that file in checksums.txt. Once it does, download the attached file and, when gh is logged in, verify it before the script runs:
curl -fsSL -o install.sh https://github.com/wainmann/agent-manager/releases/latest/download/install.sh &&
gh attestation verify install.sh --repo wainmann/agent-manager &&
sh install.sh
The release URL above has no file until that tag exists, so the first command is the one that works until then. Older releases verify with --owner YoanWai --signer-repo YoanWai/agent-manager in place of --repo wainmann/agent-manager.
Downloads 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. On macOS it offers Homebrew, and offers to install Homebrew first when that is missing. On Linux it offers apt, dnf, pacman, zypper, apk, or Homebrew, and on a desktop it also offers the clipboard and notification packages. It prints the command when you decline. A run with no terminal skips the prompt and still installs the binary. 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). AGENT_MANAGER_VERIFY_ATTESTATION=1 refuses the install unless gh attestation verify accepts the downloaded archive. When that check fails, the script tries again with --owner YoanWai --signer-repo YoanWai/agent-manager, which older releases need, and stops only if both fail. Leave it unset to install on a machine without gh. gh uses one exit status for a rejected attestation, a missing login, and a network error, so the script does not try to tell those apart.
Running it without a file to read first:
curl -fsSL https://raw.githubusercontent.com/wainmann/agent-manager/main/install.sh | sh
Verified zip (Windows)
Download the Windows zip for your architecture and checksums.txt from the same release. Compare its SHA-256 with the matching line in checksums.txt before extracting it. The manual Windows install gives the PowerShell commands, optional provenance verification, and dependency setup.
Install script (Windows)
Download the script, read it, then run it. The installer runs only after that download succeeds. Windows PowerShell 5.1 has no &&, so the guard is if ($?). Until the release attaches install.ps1, the file to read is the copy on main. That copy is not in checksums.txt.
irm https://raw.githubusercontent.com/wainmann/agent-manager/main/install.ps1 -OutFile install.ps1
if ($?) {
Get-Content .\install.ps1
Unblock-File .\install.ps1
powershell -NoProfile -ExecutionPolicy Bypass -File .\install.ps1
}
Once the release attaches install.ps1 and lists it in checksums.txt, download that file instead. Logged in to gh, verify it after the download and before the installer. Older releases verify with --owner YoanWai --signer-repo YoanWai/agent-manager in place of --repo wainmann/agent-manager. A missing gh stops the example: PowerShell would otherwise keep the previous $LASTEXITCODE, and a 0 from an earlier command would look like a successful verify. That release URL has no file until that tag exists.
irm https://github.com/wainmann/agent-manager/releases/latest/download/install.ps1 -OutFile install.ps1
if ($?) {
Get-Command gh -ErrorAction Stop | Out-Null
if ($?) {
gh attestation verify .\install.ps1 --repo wainmann/agent-manager
if ($LASTEXITCODE -ne 0) { throw 'attestation verification failed' }
if ($LASTEXITCODE -eq 0) {
Get-Content .\install.ps1
Unblock-File .\install.ps1
powershell -NoProfile -ExecutionPolicy Bypass -File .\install.ps1
}
}
}
On a Windows client with no execution policy set, the effective policy is Restricted, so every .ps1 is refused. -ExecutionPolicy Bypass applies to that process only, after you have read the file. Where the policy is already RemoteSigned, Unblock-File then .\install.ps1 is enough. RemoteSigned refuses an unsigned script that still has the Mark of the Web. A browser download sets that mark. irm -OutFile does not (Microsoft documents Invoke-WebRequest as not marking the Internet zone). Unblock-File does nothing in that case.
Installs the latest release to %LOCALAPPDATA%\Programs\agent-manager, adds it to your user Path, and offers to install psmux, git, or PowerShell 7 when one is missing. AGENT_MANAGER_INSTALL_DEPS=1 answers yes. AGENT_MANAGER_INSTALL_DEPS=0 skips the prompt. With no terminal it skips the prompt and still leaves the binary installed. AGENT_MANAGER_VERIFY_ATTESTATION behaves as it does on the shell script.
Arch Linux, mise, go install, prebuilt binaries, Windows (native and WSL2), dependencies, updating, and uninstalling: docs/install.md.
Usage
agent-manager
Sessions 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+C reaches the agent as its cancel key while a session is focused, so an interrupted prompt leaves the manager running. Ctrl+R opens the session's diff review and F3 opens its directory in your editor; the keybindings row in Settings (s) moves any of them, or hands one back to the agent, and moves or turns off any action of the manager's own list, with esc and ctrl+c staying as they are (see Key bindings). 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, quick prompt mode, 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, the model, effort and profile the tool reports, environment profile, directory, optional starting prompt, group) |
space | Quick prompt mode: 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 |
| click / double click | Focus a session from its row or its preview / fold or unfold a group. The full-screen layout selects on a click and focuses on a double click |
drag ⠿ / = | Reorder a row, drop it into another group, or nest a terminal under an agent |
[…] / right click | The row's actions: attach, prompt, review, fork, rename, move, archive, kill, delete and more |
| click the list / mouse back | Focused: back to the list. A click on another row focuses that one |
→ / ← | 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. 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, mouse, review layout, desktop notifications, editor, keybindings) |
? | 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 ctrl+t in quick prompt mode, or by default in Settings.
A session can start on a model, reasoning effort and profile of its own, picked on the n form, with ctrl+l, ctrl+x and ctrl+y in quick prompt mode, or with spawn --model --effort --profile. The lists come from each CLI at runtime, so a new model shows up the day the CLI ships it, and restart, revive and fork keep the choice (see Model, effort and profile).
A session can also launch under an environment profile, a named set of environment variables such as a second CLAUDE_CONFIG_DIR, defined with agent-manager env set and picked per session or as a group's default (see Environment profiles).




Configuration (Settings, the editor o opens, and the key tables) is in docs/configuration.md.
Development
go run .
mkdir -p /tmp/amtest && env -u TMUX TMUX_TMPDIR=/tmp/amtest SHELL=/bin/sh go test -race ./... # end-to-end tests drive a real tmux server
See CONTRIBUTING.md for the checks CI runs, and AGENTS.md if you point a coding agent at this repo.
Community
Join the Agent Manager Community on Discord. Ask questions and get setup help in #help, share your setup in #workflows, and talk about contributing in #dev. Bugs and feature requests go in GitHub issues.
Contributing
Contributors and collaborators wanted. agent-manager is actively looking for people to help build it. Unassigned issues are free to take, comment on one to claim it, and regular contributors get invited as collaborators. Say hi in #dev on Discord.
Bug reports, feature ideas, and pull requests are welcome. See CONTRIBUTING.md for setup and the checks CI runs. Project roles and how decisions are made are in GOVERNANCE.md, with the current roster in MAINTAINERS.md. Questions and setups worth sharing go in Discussions. Security reports go through a private advisory; see SECURITY.md.