The terminal layer for local agent delegation.
Talk to one agent. It stands up the others.
agent-office is a tiny, terminal-native delegation layer. It lets the CLI agent you are already talking to launch and message other local CLI agents in named tmux rooms.
No API proxy. No model adapters. No workflow engine. Just real CLIs in real terminals.
agent-office itself never calls provider APIs or takes over authentication. Each launched CLI keeps its own runtime, account, and terminal.
Animated preview · Open the 720p MP4 with audio
After Bash, tmux, and at least one authenticated CLI agent (claude, codex, or grok) are available:
git clone https://github.com/Mr-AK-AI/agent-office.git
cd agent-office
./agent-office.sh up
./agent-office.sh send --all 'State your role and wait for a focused task.'Watch the rooms with tmux -L agent-office attach -t office. Detach with Ctrl-b, then d; the agents keep running.
You
└─ current CLI agent
└─ agent-office
└─ tmux -L agent-office
├─ writer → claude
├─ reviewer → codex
└─ wild → grok
The agent in your current conversation remains the lead. Other agents run as their original CLI processes in isolated tmux windows. agent-office only starts those terminals and types tasks into them.
Despite the name, this is not a pixel office, dashboard, visual workspace, or autonomous multi-agent framework.
up — start named windows on an isolated tmux server (-L agent-office), session office. Each window runs a real CLI.
send — type text into one window with tmux send-keys. To the receiving CLI, it is ordinary keyboard input.
./agent-office.sh up writer:claude reviewer:codex
./agent-office.sh send reviewer 'Review the current change and list the three highest-risk issues.'
./agent-office.sh send --all 'State your role and wait for a focused task.'send --all broadcasts to agent rooms and skips the spare sh window. --include-shell opts into that window explicitly.
The delegation is one-way by design: agent-office controls terminals; it does not consume them.
Requirements:
- Bash and
tmux(brew install tmuxorsudo apt install tmux) - At least one interactive CLI agent already installed and authenticated
- macOS or Linux
Open this repository in the CLI agent you already use and say:
Pull up a Codex reviewer. Ask it to inspect this repository and report the three highest-risk issues.
The lead agent follows spec/TWO-VERBS.md, starts the room, and sends the task. A desktop terminal may attach automatically so you can watch. If it does not, ask the lead to open the rooms or run:
tmux -L agent-office attach -t officeRunning ./agent-office.sh up with no arguments auto-detects claude, codex, and grok, then adds a spare sh room. It stops if none of those agent CLIs is on PATH. Named name:command rooms can launch other interactive terminal CLIs.
Stopping and viewing rooms use ordinary tmux commands; they are not additional agent-office verbs.
# View the default office
tmux -L agent-office attach -t office
# Stop every room in the default office
tmux -L agent-office kill-session -t office
# Start clean after stopping it
./agent-office.sh up| Symptom | What to check |
|---|---|
need tmux |
Install tmux with brew install tmux or sudo apt install tmux. |
no agent CLI found on PATH |
Install and authenticate at least one supported CLI, then start a new shell. |
no session office |
Run ./agent-office.sh up before send. |
| A changed room command does not take effect | up preserves an existing named room. Stop the session, then start it again. |
| No desktop window appears | Attach manually with the tmux command above. agent-office never attaches inside the lead conversation. |
| A launched CLI asks you to sign in | Complete that CLI's own login in its room; agent-office never handles credentials. |
If you need a separate session, prefix each agent-office command with OFFICE_SESSION=my_office, then target the same name in tmux:
OFFICE_SESSION=my_office ./agent-office.sh up
OFFICE_SESSION=my_office ./agent-office.sh send --all 'Wait for a focused task.'
tmux -L agent-office attach -t my_officeSession and room names may contain letters, numbers, _, and -, and cannot begin with -.
- No model proxy or provider-specific adapter
- No patches to the launched CLIs
- No shared-memory fiction, task graph, or result aggregation
- No scraping, capture, or automatic reading of other terminals
- Your current conversation stays where it is
You inspect the tmux rooms yourself. agent-office does not grant model credentials; it only starts CLIs already available on the machine.
| Client | Instruction files |
|---|---|
| Claude Code | skill/SKILL.md + spec/TWO-VERBS.md + agent-office.sh → ~/.claude/skills/agent-office/ |
| Grok | the same three files → ~/.grok/skills/agent-office/ |
| Codex | append spec/TWO-VERBS.md to AGENTS.md or ~/.codex/AGENTS.md; keep the script on PATH |
| Other CLI agents | provide spec/TWO-VERBS.md and a resolvable script path |
This repository already includes .claude/skills/agent-office/, .grok/skills/agent-office/, and a root AGENTS.md for trying it in place.
mkdir -p ~/.claude/skills/agent-office ~/.grok/skills/agent-office
cp skill/SKILL.md spec/TWO-VERBS.md agent-office.sh ~/.claude/skills/agent-office/
cp skill/SKILL.md spec/TWO-VERBS.md agent-office.sh ~/.grok/skills/agent-office/For a Codex project that already has AGENTS.md, append rather than replace:
cat spec/TWO-VERBS.md >> /path/to/project/AGENTS.md
cp agent-office.sh /path/to/project/Focused bug reports and pull requests are welcome. Read CONTRIBUTING.md before changing the two-verb contract.
Use Discussions for questions and ideas. Please report security vulnerabilities privately as described in SECURITY.md.
Project origin and evolution: HISTORY.md.
If agent-office brought up a real agent terminal, consider giving the repository a Star. If it did not behave as expected, open a Bug Report with your operating system, tmux version, agent CLI version, exact command, and complete error output.
MIT © 2026 Mr-AK-AI. See LICENSE.
