클로드 코드(Claude Code), 코덱스(Codex), 오픈코드(OpenCode), 그록(Grok) 등 다양한 AI 코딩 에이전트를 하나의 터미널(tmux) 창에서 통합 관리할 수 있는 오픈소스 TUI 도구입니다. 에이전트가 백그라운드에서 안전하게 작업을 지속하게 하고, 실시간 상태 확인 및 단축키를 통한 즉각적인 명령 전송과 코드 변경 사항 리뷰를 지원하여 개발자의 업무 효율을 극대화합니다.
번역된 본문
에이전트 매니저 (Agent Manager)
하나의 터미널에서 모든 AI 코딩 에이전트를 실행하세요. Claude Code, Codex, OpenCode, Grok이 각자 자신의 tmux 세션에서 나란히 실행되므로, 매니저를 종료해도 에이전트들은 계속 작업을 이어갑니다. 어떤 에이전트가 작업을 끝냈고 어느 것이 멈춰 있는지 터미널 탭을 뒤질 필요 없이, 모든 세션이 하나의 목록에 실시간 상태와 함께 표시되며, 접거나 재정렬할 수 있는 프로젝트 트리로 그룹화됩니다.
세션에 직접 접속하지 않고도 에이전트에 응답할 수 있습니다. 스페이스바(space)를 누르면 선택한 세션 창으로 프롬프트를 바로 전송하거나, 선택한 그룹에 새로운 에이전트를 실행합니다. 'v' 키를 누르면 멈춘 세션을 마지막으로 작업하던 시점부터 다시 시작합니다. 그리고 'ctrl+r'을 누르면 에이전트가 변경한 파일의 전체 diff(변경 사항)를 구문 강조가 적용된 전체 화면으로 볼 수 있으며, 특정 라인에 남긴 코멘트는 에이전트의 창으로 바로 전달됩니다.
지원 도구
현재 상태 감시 기능은 기본적으로 Claude Code, OpenCode, Codex, Grok을 지원합니다.
다른 모든 CLI(Command Line Interface) 도구도 세션으로 실행할 수 있습니다. [tools.<name>] 블록을 추가하고 상태 규칙을 설정하면 실시간 상태를 확인할 수 있습니다 (자세한 내용은 '설정' 참조).
설치 방법
Homebrew (macOS / Linux):brew install yoanwai/tap/agent-manager (tmux가 설치되어 있지 않으면 함께 설치됩니다.)
Go:go install github.com/YoanWai/agent-manager@latest (Go 1.26 이상 및 tmux 필요, $(go env GOPATH)/bin에 설치됩니다.)
빌드된 바이너리: Releases 페이지에서 다운로드 (macOS, Linux용 amd64/arm64 지원).
Windows: WSL2 환경 내에서 실행하세요. 에이전트 매니저는 Linux/macOS 도구인 tmux 기반으로 작동합니다. WSL 셸에서 Homebrew를 통해 설치하거나 Releases에서 Linux 바이너리를 다운로드하세요.
업데이트
매니저는 하루에 한 번 GitHub Releases를 확인하여, 새 버전이 나오면 헤더에 ↑ vX.Y.Z available 배지를 표시합니다. 설치한 방법에 따라 업데이트하세요:
brew upgrade yoanwai/tap/agent-manager (Homebrew)
go install github.com/YoanWai/agent-manager@latest (Go)
사용법agent-manager를 입력하여 실행합니다. 세션은 tmux 내부(am_* 네임스페이스)에서 실행되므로 매니저를 종료해도 세션은 유지됩니다. 세션 내부에서 Ctrl+Q를 누르면 매니저 화면으로 다시 돌아갑니다. agent-manager --version으로 버전을 확인할 수 있습니다.
단축키 (Keys)
n: 새 세션 (이름, 도구, 디렉토리, 선택적 시작 프롬프트, 그룹 선택)
g: 새 그룹 (이름, 상위 그룹, 기본 경로)
enter: 세션 접속 / 그룹 접기(fold)
ctrl+q: 세션 내부에서 매니저로 복귀
K / J (또는 shift+↑ / shift+↓): 세션 또는 그룹 순서 변경
m: 세션을 다른 그룹으로 이동
r: 세션 이름 변경 / 도구 편집, 그룹 이름 및 기본 경로 편집
v: 멈춘(dead) 세션 복구 (예: claude --continue를 사용해 대화 재개)
a / u: 세션 보관(Archive) / 복원, 또는 그룹 및 하위 트리 전체 보관/복원
d: 세션 삭제, 또는 그룹 및 하위 트리 전체 삭제
space: 빠른 프롬프트(Quick prompt) - 선택한 세션에 응답하거나 선택한 그룹에 에이전트 실행
ctrl+r: 선택한 세션의 변경 사항 검토 - 전체 화면 파일 diff, 라인 코멘트를 에이전트에게 전송
f: 그룹 접기 / 펼치기
s: 설정 (빠른 실행 도구, 테마, 리뷰 레이아웃)
t: 보관된 세션 보기 전환
e: 빈 그룹 숨기기 / 표시
/: 검색
?: 도움말
q: 종료 (세션은 계속 실행됨)
빠른 프롬프트 (Quick prompt)
스페이스바를 누르면 사이드바 하단에 프롬프트 입력 바가 나타납니다. 입력 바가 열려 있는 동안 커서가 이동하면 대상도 함께 변경됩니다 (↑↓ 키로 여전히 탐색 가능).
세션 행에서 enter를 누르면 입력한 텍스트가 해당 세션 창으로 바로 전송되어, 접속할 필요 없이 에이전트가 이를 사용자 메시지로 받습니다. 입력 바는 열린 상태를 유지하고 비워져 다음 응답을 받을 준비를 합니다.
그룹 행에서 enter를 누르면 해당 그룹의 기본 경로를 사용하여 프롬프트가 포함된 새 에이전트가 실행됩니다.
실행할 도구는 '설정(s)'의 기본값으로 시작되며 tab 키로 순환합니다(claude ↔ opencode ↔ 기타 설정된 도구). 현재 선택된 도구는 하단에 표시되며, 에이전트는 즉시 프롬프트 작업을 시작합니다.
esc 키로 입력 바를 닫을 수 있습니다. 새 세션 생성 폼의 선택적 프롬프트 필드도 동일한 방식으로 에이전트를 실행합니다. CLI에서 특정 플래그 뒤에 프롬프트를 입력받는 도구의 경우 prompt_flag로 선언할 수 있습니다 ('설정' 참조).
세션 자동 이름 지정 (Self-naming sessions)
사용자 지정 이름 없이 실행된 세션(빠른 실행 또는 이름을 비운 폼)은 claude-a1b2와 같은 임시 이름을 받습니다. 첫 프롬프트가 실행될 때, 에이전트에게 agent-manager rename "<name>" 명령을 한 번 실행하도록 요청하여 이름을 자동으로 구성합니다.
Agent Manager Run every AI coding agent from one terminal. Claude Code, Codex, OpenCode, and Grok run side by side, each in its own tmux session, so they keep working after you quit the manager. 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 where it left off with v . And ctrl+r opens a full-file diff of what an agent changed, syntax-highlighted, where a comment you leave on a line goes straight back to the agent's pane. Supported tools Status detection currently supports Claude Code , OpenCode , Codex , and Grok Build out of the box. Any other CLI tool can run as a session; add a [tools.<name>] block with status rules to get live status for it (see Configuration ). Install Homebrew (macOS / Linux) brew install yoanwai/tap/agent-manager Installs tmux with it if missing. Go go install github.com/YoanWai/agent-manager@latest Requires Go 1.26+ and tmux; installs to $(go env GOPATH)/bin . Prebuilt binaries Download from Releases (macOS and Linux, amd64/arm64). Windows Run inside WSL2 : agent-manager lives on tmux, which is a Linux/macOS tool. In a WSL shell, install with Homebrew or grab the Linux binary from Releases. Updating The manager checks GitHub Releases once a day and shows a ↑ vX.Y.Z available badge in the header when a newer version is out. Pull it in the way you installed: brew upgrade yoanwai/tap/agent-manager # Homebrew go install github.com/YoanWai/agent-manager@latest # Go 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. agent-manager --version prints the version. Keys Key Action n New session (name, tool, directory, optional starting prompt, group picker) g New group (name, parent, default path) enter Attach session / fold group ctrl+q Inside a session: back to the manager K / J (or shift+↑ / shift+↓ ) Reorder session or group among its visible siblings m Move session to another group r Rename session / edit tool; edit group name and default path v Revive a dead session ( revive_command , e.g. claude --continue , resumes the conversation) a / u Archive / restore a session, or a group and its entire subtree d Delete session, or a group + its entire subtree space Quick prompt: answer the selected session, or spawn an agent in the selected group ctrl+r Review the selected session's changes: full-screen whole-file diffs, line comments sent to the agent f Fold / unfold group s Settings (quick-spawn tool, theme, review layout) t Toggle archived view e Hide / show empty groups / Search ? Help q Quit (sessions keep running) Quick prompt Press space to dock a prompt bar at the bottom of the sidebar. The target follows the cursor while the bar is open ( ↑↓ still navigate): On a session row, enter sends the typed text straight into the session's pane, so the agent gets it as a user message without you attaching. The bar stays open and clears, ready for the next answer. On a group row, enter spawns a new agent in that group with the prompt embedded, using the group's default path. The spawn tool starts at the Settings ( s ) default and tab cycles it (claude ↔ opencode ↔ any configured tool); the footer shows the current pick. The agent starts working on the prompt immediately. esc closes the bar. The new-session form's optional prompt field launches an agent the same way; tools whose CLI takes the prompt behind a flag declare it with prompt_flag (see Configuration ). Self-naming sessions Sessions spawned without a custom name (every quick spawn, and the form with the name left blank) get a placeholder like claude-a1b2 , and their first prompt opens by asking the agent to run agent-manager rename "<name>" once with a short name for the broad feature of the session (not a single subtask). The directive also tells the agent not to rename again unless you ask. When the first prompt cannot carry the directive (a /slash command, or no prompt at all), the manager sends it as its own message once the tool's input box appears in the pane. The subcommand drops the name into a per-session file; the manager picks it up on the next poll and updates the sidebar row and the tmux status bar. This works with any tool, since it only needs the agent to read its prompt and run one shell command. Sessions you name yourself keep that name: the first prompt only notes that agent-manager rename is available later if you ask, and does not instruct the agent to rename now. You can still ask an agent to rename its session later, or run agent-manager rename yourself from a shell inside the session. Declaring the repo under review A session's working directory is often an umbrella folder holding many repos, so review can only guess which one the agent means. An agent that knows which repo it is working in can say so by running agent-manager review-repo <path> from a shell inside its session. The subcommand checks that the path is (or sits inside) a git repo, resolves it to the repo root, and drops it into a per-session file; the manager picks it up on the next poll and review opens on that repo the next time you open it. A path that is not inside a git repo is rejected, so a declaration is always a fact rather than a guess. An agent can also declare what its branch diffs against by running agent-manager review-base <ref> from inside its worktree: the ref is validated in that repo, stored per session and repo, and the "vs target" scope uses it from then on. agent-manager review-base --clear returns to automatic detection. A stored ref that stops resolving surfaces as an error in review, and B opens a target picker (the repo's branches plus an auto entry) to set or clear it by hand. Agents usually work in git worktrees, one branch per worktree, and those worktrees can live anywhere on disk. A declared path that is a worktree root is accepted wherever it lives, so one review-repo call names both the repo and the branch under review. Review resolves its target in a fixed order: a repo you picked by hand with r or b wins for as long as the manager is running, then the agent's declared repo, then the ranking (dirty working trees first, then most recent commit). When the picked or declared path stops being a git repo, review says so in the status line and r is there to pick the right one. MCP: how agents discover these commands Every session the manager spawns or revives carries the agent-manager MCP server, so MCP-capable agents see rename , review_repo and review_base as native tools with descriptions telling them when to call each: no prompt injection, no per-project setup. The server lives in the same binary ( agent-manager mcp , stdio) and identifies the calling session through its environment. Registration is per tool. The built-in claude, codex, opencode and grok tools register automatically: claude gets a generated --mcp-config file, codex gets -c mcp_servers... overrides, opencode gets an OPENCODE_CONFIG merge file, and grok gets a one-time grok mcp add --scope user entry on its first launch. A custom tool opts in with mcp = "<style>" in its config section, or out with mcp = "none" . The CLI subcommands keep working everywhere, MCP or not. Diff review Press ctrl+r on a session to open a full-screen review of its repo: changed files with +/− counts on the left, the whole file on the right with syntax highlighting and changed lines tinted, so every edit reads in full context. Arrow keys and ctrl+d / ctrl+u scroll the file, g / G jump to top and bottom, J / K (or tab / shift+tab ) switch files, n / N jump between changes, u toggles unified and side-by-side, s cycles the scope (uncommitted, vs target, last commit, staged), and space marks a file reviewed. When the wo