Install any skill in seconds. Free to start, no credit card required.
Get Started Free →Use when launching, monitoring, or controlling AI coding agents (Claude Code, Codex, OpenCode, etc.) in tmux via Agent of Empires (aoe). Covers creating sessions, capturing agent output, running parallel worktree agents, and organizing work into groups and profiles. Prefer aoe over raw tmux for agent management.
| Test case | Without → With | Effect | Δ tokens | Δ turns |
|---|---|---|---|---|
| case-03 | ✗→✓ | ▲ Improved | 72% | 0% |
| case-01 | ✗→✓ | ▲ Improved | 224% | 0% |
| case-02 | ✗→✓ | ▲ Improved | 9% | 0% |
| case-04 | ✗→✓ | ▲ Improved | 2% | 0% |
| case-05 | ✗→✓ | ▲ Improved | 1% | 0% |
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.bash# 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
bash# Human-readable list aoe list # JSON output for parsing aoe list --json # List across all profiles aoe list --all
JSON output shape (aoe list --json):
json[ { "id": "a1b2c3d4-...", "title": "my feature", "path": "/home/user/project", "group": "backend", "tool": "claude", "command": "claude", "profile": "default", "created_at": "2025-01-01T00:00:00Z", "workspace_repos": [] } ]
command is omitted when empty; worktree appears only for worktree-backed sessions. list --json does not include live status; use aoe status --json or aoe session capture --json for that.
bashaoe 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
bash# 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):
json{ "id": "a1b2c3d4-...", "title": "my feature", "status": "waiting", "tool": "claude", "content": "... pane text ...", "lines": 50 }
JSON output shape (aoe session show --json):
json{ "id": "a1b2c3d4-...", "title": "my feature", "path": "/home/user/project", "group": "backend", "tool": "claude", "command": "claude", "status": "running", "profile": "default" }
JSON output shape (aoe status --json):
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:
bashaoe session show # auto-detects current session aoe session capture # auto-detects current session aoe session current --json
bashaoe 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 --force
bashaoe profile list aoe profile create staging aoe profile delete staging aoe profile default staging # set default aoe -p staging list # use inline
bashaoe worktree list aoe worktree info <id-or-title> aoe worktree cleanup -f
bashaoe remove <id-or-title> aoe remove <id-or-title> --delete-worktree --force
bashaoe add /path/to/repo -t "feature X" -l # ... wait ... aoe session capture "feature X" --json
bashaoe 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 once
Poll all sessions until none are running:
bashwhile 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 done
bashfor id in $(aoe list --json | jq -r '.[].id'); do echo "=== $id ===" aoe session capture "$id" -n 100 --strip-ansi echo done
Groups 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.
Other measured skills in the registry, with their headline benchmark lift.