{"slug": "agent-manager-the-fastest-workflow-for-every-coding-agent", "title": "Agent-manager: The fastest workflow for every coding agent", "summary": "Agent-manager, an open-source tool by developer yoanwai, offers a keyboard-driven workflow for managing multiple coding agents such as Claude, opencode, codex, grok, gemini, pi, and hermes, allowing users to spawn, answer, and review agents without leaving the interface. The tool, available via Homebrew and under the Apache-2.0 license, supports macOS, Linux, and WSL, and organizes sessions into nested groups with status counts, worktrees, and a built-in diff reviewer.", "body_md": "### tab A different tool per spawn\n\nCycle claude, opencode, codex, grok, gemini, pi, hermes or anything you configured without leaving the bar. The footer shows which one the next enter will start.\n\nGo · tmux · **Apache-2.0** · macOS, Linux, and WSL\n\n**agent-manager.** Everything is one keypress. Spawn one in a sentence, answer a blocked one\nwithout attaching, review its diff without leaving the list. Each session runs your own\ninstalled CLI as-is: your login, your config, your MCP servers, every feature it ships.\n\n`brew install yoanwai/tap/agent-manager`\n\nSeen in the wild\n\n**A sentence is the whole ceremony.** Hit\nspace on a group row, type the task, press enter: that agent is\nalready running, with your prompt embedded and the group's directory set. No form, no\n`cd`\n\n, no naming. The bar clears and stays open, so the next task goes to the\nnext agent immediately, in a different project if you want. On a session row the same key\nanswers an agent that is already working. When the work needs its own branch,\nalt+w in the same bar spawns the agent into a fresh git worktree.\n\nType 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.\n\nCycle claude, opencode, codex, grok, gemini, pi, hermes or anything you configured without leaving the bar. The footer shows which one the next enter will start.\n\nOn 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.\n\nA session starts as `claude-a1b2`\n\nand renames itself once the agent knows\nwhat the work is, so a screen of them still reads as a list of features.\n\nAn agent can work the same list you do: spawn a session on its own task, read another\none's screen, message it, and wait on one before taking its next step. Repo work takes\na worktree each, and sessions sharing a checkout declare the files they are about to\nedit, so an overlap surfaces before either commits.\n[The tools they call](/docs/mcp/).\n\nSix states, and for Claude Code they arrive from its own hook events rather than from\nguessing at the pane. [How detection works](/docs/status/).\n\n**Groups are paths, not folders.** `backend/api/auth`\n\nnests as deep\nas the work does, sessions live at any node, and everything you arrange stays arranged\nacross restarts. Fold what you are not looking at, archive what is finished, and the\nfleet stops looking like a wall of processes.\n\nA 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.\n\nMake a subgroup inline while spawning, give it a default path, and every agent started there lands in the right directory.\n\nReorder sessions among their siblings or whole groups among theirs. m moves a session elsewhere, and the arrangement survives a restart.\n\nPark a session, or a group and its entire subtree, out of the view. Archive ends the\nprocess and keeps the last preview; u resumes it, and\nt shows what is parked.\n[Groups in full](/docs/sessions/).\n\nThe 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.\n\nThe 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.\n\n**The manager becomes a reviewer.** ctrl+r takes the\nwhole screen for the selected session's repo: changed files with +/- counts on the\nleft, the entire file on the right, syntax highlighted with the changed lines tinted, and\nits own keymap while you are in there. It refreshes as the agent keeps editing, and\nesc puts you back on the row you came from.\n\nA session's directory is often an umbrella folder holding a dozen repos, so the agent\nsettles it rather than you: through the MCP tools it declares the repo or worktree it\nmoved into and the branch its work merges into, both validated against git, and review\nopens there. Nothing declared? Dirty working trees rank first, then the most recent\ncommit. [How it resolves](/docs/review/#which-repo).\n\nThe agent's declared repo and merge base win over the ranking; worktrees are found wherever they live on disk.\n\nPick the repo, the branch from its worktrees, or the target the diff compares against. Your pick wins for as long as the manager runs.\n\nUncommitted, versus the merge target, the last commit, or staged, so the same screen works before and after a commit.\n\nToggle the layout in place, cursor held on the same source line. n jumps to the next change.\n\nThen the part the others on the [comparison](/compare/) only do in a browser:\n\nThe process and the record are separate things, so ending one never costs you the other.\n\nThe tmux session ends and the RAM comes back. The row stays, marked dead, name and conversation id intact.\n\nRelaunches on *that exact conversation* through the tool's own resume command,\nnot a fresh one.\n\nA killed session still shows the snapshot of its pane from when it had one, so the\nrow says what the agent was doing when it stopped.\n[More](/docs/sessions/).\n\nA 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.\n\nEvery 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. Live status ships for these:\n\nAnything else runs as a session immediately, and earns the same status the moment you\ndescribe it. [The whole block](/docs/config/).\n\n```\n[tools.mytool]\ncommand = \"mytool\"\ndefault_status = \"idle\"\nrules = [\n  { state = \"working\", pattern = \"esc to interrupt\" },\n  { state = \"errored\", pattern = \"(?im)^\\\\s*error:\" },\n]\n```\n\nThe manager registers its own MCP server into every session it spawns, so the agent can\ndrive the workspace: spawn a teammate, send it a message, wait until it is done, and open\na terminal the user can watch. [How registration works](/docs/mcp/).\n\nSessions live on a private tmux server named `agentmgr`\n\n, so they never mix with\nthe tmux you run yourself and a `kill-server`\n\non your own socket leaves them\nalone. Close the manager, close the laptop: they are still there when you come back.", "url": "https://wpnews.pro/news/agent-manager-the-fastest-workflow-for-every-coding-agent", "canonical_source": "https://agent-manager.dev/", "published_at": "2026-09-03 10:09:59+00:00", "updated_at": "2026-09-03 10:22:20.106279+00:00", "lang": "en", "topics": ["developer-tools", "ai-agents", "ai-tools"], "entities": ["agent-manager", "yoanwai", "Claude", "opencode", "codex", "grok", "gemini", "pi"], "alternates": {"html": "https://wpnews.pro/news/agent-manager-the-fastest-workflow-for-every-coding-agent", "markdown": "https://wpnews.pro/news/agent-manager-the-fastest-workflow-for-every-coding-agent.md", "text": "https://wpnews.pro/news/agent-manager-the-fastest-workflow-for-every-coding-agent.txt", "jsonld": "https://wpnews.pro/news/agent-manager-the-fastest-workflow-for-every-coding-agent.jsonld"}}