Agent Manager Fleet TUI
YoanWai/agent-manager
Runs several coding-agent CLIs as real tmux sessions in one terminal UI, color-coded by whether each is working, waiting, idle or blocked.
Starts, monitors and organizes coding agent sessions that run in tmux through the aoe command, including groups, profiles and worktree-based parallel work.
$ npx skills add agent-of-empires/agent-of-empires --skill aoe -a claude-codeProject install by default; add -g for ~/.claude/skills/.
$ gh skill install agent-of-empires/agent-of-empires aoe --agent claude-codeProject scope by default; add --scope user for a personal install. Needs GitHub CLI 2.90.0 or later (public preview).
$ git clone --depth 1 https://github.com/agent-of-empires/agent-of-empires.git skills-src && mkdir -p .claude/skills && cp -r skills-src/contrib/openclaw-skill .claude/skills/aoe && rm -rf skills-srcUse ~/.claude/skills/ instead of .claude/skills for a personal install. The folder must contain SKILL.md.
Claude Code skills documentation · loads skills from .claude/skills/
Install the "aoe" agent skill from https://github.com/agent-of-empires/agent-of-empires/tree/main/contrib/openclaw-skill into .claude/skills/aoe/ in this project. Copy the whole folder (SKILL.md and every file beside it), keep the folder name "aoe", then confirm the skill loads.Claude Code copies the folder itself, the same result as the manual copy. Check what it changed before you commit it.
$skill-installer install https://github.com/agent-of-empires/agent-of-empires/tree/main/contrib/openclaw-skillType this inside Codex. $skill-installer <name> installs a curated skill from openai/skills. The installer writes to $CODEX_HOME/skills (default ~/.codex/skills). Restart Codex if the skill does not show up.
$ npx skills add agent-of-empires/agent-of-empires --skill aoe -a codexProject install goes to .agents/skills/; add -g for ~/.codex/skills/.
$ gh skill install agent-of-empires/agent-of-empires aoe --agent codexProject scope by default (.agents/skills/); add --scope user for a personal install.
$ git clone --depth 1 https://github.com/agent-of-empires/agent-of-empires.git skills-src && mkdir -p .agents/skills && cp -r skills-src/contrib/openclaw-skill .agents/skills/aoe && rm -rf skills-srcUse ~/.agents/skills/ instead of .agents/skills for a personal install.
Codex skills documentation · loads skills from .agents/skills/
Install the "aoe" agent skill from https://github.com/agent-of-empires/agent-of-empires/tree/main/contrib/openclaw-skill into .agents/skills/aoe/ in this project. Copy the whole folder (SKILL.md and every file beside it), keep the folder name "aoe", then confirm the skill loads.Codex copies the folder itself, the same result as the manual copy. Check what it changed before you commit it.
$ npx skills add agent-of-empires/agent-of-empires --skill aoe -a cursorProject install goes to .agents/skills/; add -g for ~/.cursor/skills/.
$ gh skill install agent-of-empires/agent-of-empires aoe --agent cursorProject scope by default (.agents/skills/); add --scope user for a personal install.
$ git clone --depth 1 https://github.com/agent-of-empires/agent-of-empires.git skills-src && mkdir -p .cursor/skills && cp -r skills-src/contrib/openclaw-skill .cursor/skills/aoe && rm -rf skills-srcUse ~/.cursor/skills/ instead of .cursor/skills for a personal install.
Cursor skills documentation · loads skills from .cursor/skills/, .agents/skills/, .claude/skills/, .codex/skills/
Install the "aoe" agent skill from https://github.com/agent-of-empires/agent-of-empires/tree/main/contrib/openclaw-skill into .cursor/skills/aoe/ in this project. Copy the whole folder (SKILL.md and every file beside it), keep the folder name "aoe", then confirm the skill loads.Cursor copies the folder itself, the same result as the manual copy. Check what it changed before you commit it.
$ gemini skills install https://github.com/agent-of-empires/agent-of-empires.git --path contrib/openclaw-skill--scope user (default) or --scope workspace; --path is the subfolder of the repo that holds the skill; --consent skips the security confirmation prompt.
$ npx skills add agent-of-empires/agent-of-empires --skill aoe -a gemini-cliProject install goes to .agents/skills/; add -g for ~/.gemini/skills/.
$ gh skill install agent-of-empires/agent-of-empires aoe --agent gemini-cliProject scope by default (.agents/skills/); add --scope user for a personal install.
$ git clone --depth 1 https://github.com/agent-of-empires/agent-of-empires.git skills-src && mkdir -p .gemini/skills && cp -r skills-src/contrib/openclaw-skill .gemini/skills/aoe && rm -rf skills-srcUse ~/.gemini/skills/ instead of .gemini/skills for a personal install, then run /skills reload.
Gemini CLI skills documentation · loads skills from .gemini/skills/, .agents/skills/
Install the "aoe" agent skill from https://github.com/agent-of-empires/agent-of-empires/tree/main/contrib/openclaw-skill into .gemini/skills/aoe/ in this project. Copy the whole folder (SKILL.md and every file beside it), keep the folder name "aoe", then confirm the skill loads.Gemini CLI copies the folder itself, the same result as the manual copy. Check what it changed before you commit it.
$ gh skill install agent-of-empires/agent-of-empires aoeInstalls for Copilot at project scope by default; add --scope user for a personal install. Preview a skill first with gh skill preview. Needs GitHub CLI 2.90.0 or later (public preview).
$ npx skills add agent-of-empires/agent-of-empires --skill aoe -a github-copilotProject install goes to .agents/skills/; add -g for ~/.copilot/skills/.
$ git clone --depth 1 https://github.com/agent-of-empires/agent-of-empires.git skills-src && mkdir -p .github/skills && cp -r skills-src/contrib/openclaw-skill .github/skills/aoe && rm -rf skills-srcUse ~/.copilot/skills/ instead of .github/skills for a personal install. Commit .github/skills so cloud agent and code review can use it.
GitHub Copilot skills documentation · loads skills from .github/skills/, .claude/skills/, .agents/skills/
Install the "aoe" agent skill from https://github.com/agent-of-empires/agent-of-empires/tree/main/contrib/openclaw-skill into .github/skills/aoe/ in this project. Copy the whole folder (SKILL.md and every file beside it), keep the folder name "aoe", then confirm the skill loads.GitHub Copilot copies the folder itself, the same result as the manual copy. Check what it changed before you commit it.
$ npx skills add agent-of-empires/agent-of-empires --skill aoe -a opencodeOpenCode documents no install command of its own. Project install goes to .agents/skills/; add -g for ~/.config/opencode/skills/.
$ gh skill install agent-of-empires/agent-of-empires aoe --agent opencodeProject scope by default (.agents/skills/); add --scope user for a personal install.
$ git clone --depth 1 https://github.com/agent-of-empires/agent-of-empires.git skills-src && mkdir -p .opencode/skills && cp -r skills-src/contrib/openclaw-skill .opencode/skills/aoe && rm -rf skills-srcUse ~/.config/opencode/skills/ instead of .opencode/skills for a personal install.
OpenCode skills documentation · loads skills from .opencode/skills/, .claude/skills/, .agents/skills/
Install the "aoe" agent skill from https://github.com/agent-of-empires/agent-of-empires/tree/main/contrib/openclaw-skill into .opencode/skills/aoe/ in this project. Copy the whole folder (SKILL.md and every file beside it), keep the folder name "aoe", then confirm the skill loads.OpenCode copies the folder itself, the same result as the manual copy. Check what it changed before you commit it.
aoeStarts, monitors and organizes coding agent sessions that run in tmux through the aoe command, including groups, profiles and worktree-based parallel work.
The skill teaches the agent to use the aoe CLI, rather than raw tmux commands, to run coding agents such as Claude Code, Codex and OpenCode. Each session has an ID, title, tool and project path; sessions can be placed in nested groups like backend/api, kept in separate profiles, and reported with a status such as running, waiting, idle, stopped, error, starting or unknown.
Commands covered include adding a session for a directory with a title, listing sessions as text or JSON, checking status, capturing a session's output for review, and sending input to a session. The JSON listing documents session states (live, archived, trashed) and warns that it carries no live status, so status or capture commands are needed for that. It is not meant for tmux window or pane management that has nothing to do with coding agents.
Read from SKILL.md and the folder at commit 8e70782. It shows what the files ask for, not the result of running them.
Pre-approves nothing: there is no allowed-tools line, so your agent's usual permission prompts apply.
From allowed-tools in the SKILL.md frontmatter.
Shell commands in SKILL.md call:
jqFrom the folder's file list and the shell code blocks in SKILL.md.
No URLs in SKILL.md.
From URLs in SKILL.md, links to its own repository left out.
Names no API keys, tokens, secrets or passwords.
From names ending in _API_KEY, _TOKEN, _SECRET, _KEY or _PASSWORD in SKILL.md.
Agent of Empires Session Manager loads about 2.1k tokens when it runs. Until then it costs about 16 tokens; SKILL.md has 666 words of instructions outside code blocks.
Estimates: characters ÷ 4, the usual rule of thumb; real counts depend on the model's tokenizer. Scripts and assets cost tokens only if the agent reads them.
The automated check found no risky patterns in SKILL.md.
Automated static check — not a guarantee. Review scripts before installing. It scans the text of SKILL.md for risky patterns (piping downloads into a shell, reading credential files, hidden Unicode, destructive commands); files beside SKILL.md are not scanned.
The full file from agent-of-empires/agent-of-empires at commit 8e70782, republished under its MIT licence (© agent-of-empires). 666 words, ~2,085 tokens.
.claude/skills/aoe/SKILL.md (or your agent's skills folder).Use aoe to create, manage, and monitor AI coding agent sessions (Claude Code, Codex, OpenCode, etc.) in tmux. Prefer aoe over raw tmux commands for agent management.
Do NOT use this skill for general tmux window/pane management unrelated to coding agents.
claude), and project path./, e.g. backend/api).-p <name> globally or set AGENT_OF_EMPIRES_PROFILE.running, waiting, idle, stopped, error, starting, unknown.# Add a session for the current directory
aoe add . -t "my feature"
# Add with group, launch immediately
aoe add /path/to/repo -t "API work" -g backend -l
# Add with specific tool
aoe add . -t "codex session" -c codex
# Add in a git worktree (parallel branch)
aoe add . -t "fix-123" -w fix/issue-123 -l
# Add in Docker sandbox
aoe add . -t "sandboxed" -s -l
# Add as sub-session of another
aoe add . -t "sub task" -P <parent-id>
# Enable YOLO mode (skip permission prompts)
aoe add . -t "yolo" -y -l# Human-readable list
aoe list
# JSON output for parsing
aoe list --json
# List across all profiles
aoe list --all
# Skip trashed and archived rows (default is every persisted session)
aoe list --json --state=liveJSON output shape (aoe list --json):
[
{
"id": "a1b2c3d4-...",
"title": "my feature",
"path": "/home/user/project",
"group": "backend",
"tool": "claude",
"command": "claude",
"profile": "default",
"state": "live",
"created_at": "2025-01-01T00:00:00Z",
"workspace_repos": []
}
]command is omitted when empty; worktree appears only for worktree-backed sessions. state is live, archived, or trashed; trashed_at and archived_at are set independently, and trashing leaves archived_at alone, so a session archived and then trashed carries both keys and reports trashed. Neither timestamp is durable, but they do not clear alike: archived_at is cleared by aoe session unarchive, by aoe session favorite, and by anything that wakes the session (aoe send, and aoe session restart when it sends its wake message), while trashed_at is cleared only by aoe session restore. Key off state rather than caching a timestamp. A trashed session stays in the listing and keeps its title, so check state before treating a row as a live session. list --json does not include live status; use aoe status --json or aoe session capture --json for that.
snoozed_until and pinned_at round out the four state timestamps the REST API exposes: pinned_at appears whenever the session is pinned for the web sidebar, while snoozed_until appears only while the snooze is still active (the API's own gate), so an expired deadline omits the key instead of advertising a snooze that already ended. Both are independent of state, and neither key appears on a row carrying neither marker. snoozed_until also clears readily, more often than its siblings: waking the session (aoe send), archiving, favoriting, unsnoozing, or pinning all remove it on the next read, so treat a missing key as no active snooze rather than a listing gap.
aoe session start <id-or-title>
aoe session stop <id-or-title>
aoe session restart <id-or-title>
aoe session attach <id-or-title> # interactive attach# Show session metadata
aoe session show <id-or-title> --json
# Capture tmux pane content (key for monitoring)
aoe session capture <id-or-title> --json
aoe session capture <id-or-title> -n 100 --strip-ansi
aoe session capture <id-or-title> # plain text, good for piping
# Quick status summary
aoe status --json
aoe status -q # just the waiting count (for scripting)JSON output shape (aoe session capture --json):
{
"id": "a1b2c3d4-...",
"title": "my feature",
"status": "waiting",
"tool": "claude",
"content": "... pane text ...",
"lines": 50
}JSON output shape (aoe session show --json):
{
"id": "a1b2c3d4-...",
"title": "my feature",
"path": "/home/user/project",
"group": "backend",
"tool": "claude",
"command": "claude",
"status": "running",
"state": "live",
"profile": "default"
}state is live, archived, or trashed, the same vocabulary aoe list --json uses; trashed_at and archived_at are set independently, and trashing deliberately leaves archived_at alone, so a session archived and then trashed carries both keys and reports trashed. Neither timestamp is durable, and they do not clear alike: archived_at is cleared by aoe session unarchive, by aoe session favorite, and by anything that wakes the session, which means aoe send and aoe session restart when it sends its wake message (with session.restart_wake_message set to the empty string it does not send one, and the archive survives the restart). trashed_at is cleared only by aoe session restore. Read the current state rather than caching a timestamp; status is the pane's live status and does not carry it, since an archived session can still be running.
The same two keys apply here as in aoe list --json: pinned_at whenever the session is pinned for the web sidebar, snoozed_until only while the snooze is still active.
JSON output shape (aoe status --json):
{
"waiting": 1,
"running": 2,
"idle": 1,
"stopped": 1,
"error": 0,
"total": 5
}When called from within an aoe-managed tmux session, identifier can be omitted:
aoe session show # auto-detects current session
aoe session capture # auto-detects current session
aoe session current --jsonaoe session rename <id> -t "new title"
aoe session rename <id> -g "new/group"
aoe group create mygroup
aoe group move <id-or-title> mygroup
aoe group list --json
aoe group delete mygroup --forceaoe profile list
aoe profile create staging
aoe profile delete staging
aoe profile default staging # set default
aoe -p staging list # use inlineaoe worktree list
aoe worktree info <id-or-title>
aoe worktree cleanup -faoe remove <id-or-title>
aoe remove <id-or-title> --delete-worktree --forceaoe add /path/to/repo -t "feature X" -l
# ... wait ...
aoe session capture "feature X" --jsonaoe add . -t "issue-100" -w fix/issue-100 -l
aoe add . -t "issue-101" -w fix/issue-101 -l
aoe add . -t "issue-102" -w fix/issue-102 -l
aoe status --json # check all at oncePoll all sessions until none are running:
while true; do
status=$(aoe status --json)
waiting=$(echo "$status" | jq '.waiting')
running=$(echo "$status" | jq '.running')
if [ "$running" -eq 0 ] && [ "$waiting" -eq 0 ]; then
echo "All agents finished"
break
fi
echo "Running: $running, Waiting: $waiting"
sleep 30
donefor id in $(aoe list --json | jq -r '.[].id'); do
echo "=== $id ==="
aoe session capture "$id" -n 100 --strip-ansi
echo
doneGroups are primarily managed through the aoe TUI (run aoe with no arguments). The TUI supports bulk start/stop/restart on groups. Use CLI commands above for scripted workflows.
© agent-of-empires, MIT. Rendered from Markdown: HTML in the file is shown as text, images as links, and headings moved down two levels. Raw file
Just SKILL.md in contrib/openclaw-skill of agent-of-empires/agent-of-empires.
Open the folder on GitHubat commit 8e70782
Agent of Empires Session Manager next to the 5 skills that share the most tags, products or categories with it. Stars are the repository's; “used in” counts other GitHub owners with a copy.
| Skill | Stars | Used in | Tokens | Auto-check | Licence | Repo updated |
|---|---|---|---|---|---|---|
| Agent of Empires Session Manager this skillagent-of-empires/agent-of-empires | 3.3k | — | ~2.1k | Automated safety check: Pass | MIT | |
| Agent Manager Fleet TUIYoanWai/agent-manager | 582 | — | ~1k | Automated safety check: Pass | Apache-2.0 | |
| Agtx Task Sweepfynnfluegge/agtx | 1.7k | — | ~1.7k | Automated safety check: Pass | Apache-2.0 | |
| Clawteamwin4r/ClawTeam-OpenClaw | 1.5k | — | ~3.1k | Automated safety check: Pass | MIT | |
| Huashu Agent Swarmalchaincyf/huashu-skills | 1.7k | — | ~576 | Automated safety check: Pass | MIT | |
| Multi Agent Orchestrationcat-xierluo/legal-skills | 720 | — | ~6.6k | Automated safety check: Pass | MIT |
YoanWai/agent-manager
Runs several coding-agent CLIs as real tmux sessions in one terminal UI, color-coded by whether each is working, waiting, idle or blocked.
fynnfluegge/agtx
Breaks a conversation's results into feature-level tasks and pushes them to the agtx kanban board, where each task gets its own worktree and agent session.
win4r/ClawTeam-OpenClaw
Multi-agent swarm orchestration. An agent skill from win4r/ClawTeam-OpenClaw.
alchaincyf/huashu-skills
多Agent蜂群并行协作,纯git自组织,适合大型项目开发。当用户提到"蜂群模式"、"多agent"、"并行开发"、"agent swarm"时使用。
cat-xierluo/legal-skills
编排两个以上边界独立的本地 worker,使用 Orca Run/Task/Dispatch、独立 worktree/session 或 tmux 回退,由 PM 负责拆解、派发、巡检、429 停滞恢复、独立验收、PR 收口与临时资源清理;也用于用户明确要求“并行推进”“多个 worker”“PM 总控”“Wave Autopilot”或防止 PM…
stablyai/orca
Operate Orca-managed worktrees, folder contexts, terminals, repos, automations, artifacts, skill sharing, worktree comments, and Orca's embedded browser…
agent-of-empires/agent-of-empires
Launches, monitors and organizes AI coding agent sessions such as Claude Code or Codex inside tmux, tracking status, capturing output and managing git worktrees for parallel branches.
Works with
Categories
Starts, monitors and organizes coding agent sessions that run in tmux through the aoe command, including groups, profiles and worktree-based parallel work. The skill teaches the agent to use the aoe CLI, rather than raw tmux commands, to run coding agents such as Claude Code, Codex and OpenCode. Each session has an ID, title, tool and project path; sessions can be placed in nested groups like backend/api, kept in separate profiles, and reported with a status such as running, waiting, idle, stopped, error, starting or unknown.
Agent of Empires Session Manager fits situations like: launching several coding agents on different project directories; checking which agent sessions are running, waiting or idle; capturing a session's output to review what an agent did; setting up parallel worktree-based development with separate agents.
Run `npx skills add agent-of-empires/agent-of-empires --skill aoe -a claude-code`. Or copy the skill folder (contrib/openclaw-skill in agent-of-empires/agent-of-empires) into .claude/skills/aoe in your project. Claude Code loads it when a task matches its description.
Run `npx skills add agent-of-empires/agent-of-empires --skill aoe -a codex`. Or copy the skill folder (contrib/openclaw-skill in agent-of-empires/agent-of-empires) into .agents/skills/aoe in your project. Codex loads it when a task matches its description.
Cursor, Gemini CLI, GitHub Copilot and OpenCode also load SKILL.md folders. With the skills CLI, run `npx skills add agent-of-empires/agent-of-empires --skill aoe -a cursor` (or -a gemini-cli, github-copilot or opencode for the others). To copy it by hand, put the folder in .cursor/skills/aoe, .gemini/skills/aoe, .github/skills/aoe and .opencode/skills/aoe in your project.
Going by SKILL.md and its folder, Agent of Empires Session Manager needs the command-line tools its instructions call (jq). Our summary lists: The aoe (Agent of Empires) CLI; tmux.
SKILL.md contains no URLs. Any network use would come from the scripts or tools the agent runs. This is read from the text; nothing was executed.
Our automated static check of SKILL.md found no risky patterns, such as piping downloads into a shell, reading credential files or hidden Unicode. It is not a guarantee. Review the folder before installing.
Agent of Empires Session Manager is published under the MIT licence (the repository's licence). It allows redistribution, so the full SKILL.md is shown on this page.
About 2.1k tokens (SKILL.md is roughly 8.3k characters). Agents keep only the skill's name and description in context until a task matches; then they load SKILL.md in full.
Skills that share tags, products or a category with Agent of Empires Session Manager: Agent Manager Fleet TUI (YoanWai/agent-manager, 582 stars), Agtx Task Sweep (fynnfluegge/agtx, 1.7k stars), Clawteam (win4r/ClawTeam-OpenClaw, 1.5k stars) and Huashu Agent Swarm (alchaincyf/huashu-skills, 1.7k stars). The comparison table on this page puts their stars, adoption, token cost, safety result and licence side by side.
agent-of-empires (a GitHub organization) maintains it in agent-of-empires/agent-of-empires, which has 3,332 GitHub stars. The repository holds 2 skills in this directory. The repository was last updated on October 10, 2026.
Source: agent-of-empires/agent-of-empires on GitHub. Facts on this page come from the repository at the commit we read; the author's words are quoted as theirs.