MartinLoop
Puts budgets, verifier gates and run receipts around coding-agent jobs started from an MCP host
Start, watch and steer other AI coding CLIs running in local tmux windows from one host CLI
By Mert Kaya (individual) TypeScript Local · stdio Developer toolsAI and ML
42 popularity score ★ 108 ↓ 174/wk
Opens the app, which asks before it adds the server.
claude mcp add reevesagents -- npx -y reevesagents mcp{
"mcpServers": {
"reevesagents": {
"command": "npx",
"args": [
"-y",
"reevesagents",
"mcp"
]
}
}
}{
"mcpServers": {
"reevesagents": {
"command": "npx",
"args": [
"-y",
"reevesagents",
"mcp"
]
}
}
}{
"servers": {
"reevesagents": {
"type": "stdio",
"command": "npx",
"args": [
"-y",
"reevesagents",
"mcp"
]
}
}
}[mcp_servers.reevesagents]
command = "npx"
args = ["-y", "reevesagents", "mcp"]gemini mcp add --scope user reevesagents npx -- -y reevesagents mcpOpens the app, which asks before it adds the server. Then replace each <NAME> in its settings with your value.
git clone https://github.com/mertkayacs/reevesagents.git
cd reevesagents
pnpm install
pnpm buildclaude mcp add reevesagents -- node '<ABSOLUTE_PATH_TO_CLONE>/dist/cli.js' mcp{
"mcpServers": {
"reevesagents": {
"command": "node",
"args": [
"<ABSOLUTE_PATH_TO_CLONE>/dist/cli.js",
"mcp"
]
}
}
}{
"mcpServers": {
"reevesagents": {
"command": "node",
"args": [
"<ABSOLUTE_PATH_TO_CLONE>/dist/cli.js",
"mcp"
]
}
}
}{
"servers": {
"reevesagents": {
"type": "stdio",
"command": "node",
"args": [
"<ABSOLUTE_PATH_TO_CLONE>/dist/cli.js",
"mcp"
]
}
}
}[mcp_servers.reevesagents]
command = "node"
args = ["<ABSOLUTE_PATH_TO_CLONE>/dist/cli.js", "mcp"]gemini mcp add --scope user reevesagents node -- '<ABSOLUTE_PATH_TO_CLONE>/dist/cli.js' mcpREEVES_REGISTRY |
Optional: Overrides the state folder for runs, history and presets. |
|---|---|
REEVES_CONFIG |
Optional: Overrides the path of the config file. |
ReevesAgents is a local workspace for running several AI coding command-line tools side by side (Claude Code, Codex, OpenCode, Kimi, Qwen, Aider and others), each one in its own tmux window. You get a terminal UI, a Web UI bound to loopback and a CLI. The optional Agent Control MCP server, started with `reevesagents mcp`, gives those controls to one host CLI, so that agent can act as the lead and use the others as workers.
From the host you can launch a worker with a provider, model, starting prompt and permission mode, then read its recent output, paste text in, press keys, interrupt it, or end a single agent or a whole run. There are also tools for an approval queue, saved run presets, archived history, global settings, and attaching the server to other host CLIs. Another tool reports which helper CLIs (Perplexity, Google Colab, Hugging Face, Ollama) are installed, though agents run those from their own shell. The provider catalog is served as the `reevesagents://providers` resource and an operator guide as `reevesagents://guide`.
State lives in plain JSON files under `~/.reeves`. Model traffic is not proxied and each provider CLI keeps its own login. Workers only get the MCP tools if you attach the server to their CLI too. On native Windows it uses its own tmux-compatible multiplexer, winmux, instead of tmux.
What the source shows: the server registers 31 tools. `read` gives the last 20 lines unless you pass `lines`. By default a run holds up to 100 agents (`max_agents`), spawns nest at most 5 levels deep (`max_depth`), new agents start in `ask` permission mode, and agents live as long as they like until `max_lifetime_ms` is set above 0.
| Runtime | Node.js 22.12+ |
|---|---|
| Runs on | macOS, Windows, Linux |
| Also |
|
When Codex is the host it must run with full access, for example `codex --sandbox danger-full-access` or a profile that sets `sandbox_mode = "danger-full-access"`, because its default sandbox blocks tmux launches. Run `reevesagents doctor` to see which provider CLIs are detected.
Drives only provider CLIs installed and authenticated on the same machine; a window stuck at a login prompt has to be signed in by hand. `send_text` pastes without submitting, so a `send_key` enter is needed after it. `stop`, `kill` and the delete tools act only on runs and tmux targets recorded in its own state. Two state registries must not share one tmux server, because the orphan sweep judges ownership against the current registry. Native Windows is not covered by the main package; the README names macOS, Linux and WSL.
Suits a developer who already uses several coding CLIs in the terminal and wants one of them to fan work out to the others, watch their output and steer them, all on their own machine. It needs tmux and the provider CLIs set up first, so it is not for someone with a single assistant or no shell access. Because the host can start processes, type into them and launch workers with permission prompts skipped, attach it only to a CLI you trust; people who want a hosted or sandboxed agent service should look elsewhere.
11 only read, 13 change things, 7 can delete or overwrite. A ? marks an optional parameter.
list_providerslist_toolsspawn changesprovider: stringrun_id?: stringmodel?: stringtask?: stringnickname?: stringname?: stringworking_dir?: stringpermissions?: enumauth_mode?: enumeffort?: enumextra_args?: arrayreadagent_id: stringlines?: numbersend_text changesagent_id: stringtext: stringsend_key changesagent_id: stringkey: enuminterrupt changesagent_id: stringkill deletesagent_id: stringstop deletesrun_id: stringlistopen changesid: stringdoctorreap deleteslist_historydelete deletesagent_id: stringdelete_run deletesrun_id: stringdelete_history deletesid: stringrequest_approval changesagent_id: stringaction: stringsummary: stringdetails?: objectrisk?: enumresolve_approval changesapproval_id: stringdecision: enumnote?: stringcheck_approvalapproval_id: stringlist_approvalsrun_id?: stringstatus?: enumget_configset_config changespeek_interval_ms?: numberpeek_lines?: numbermax_depth?: numbermax_agents?: numberready_delay_ms?: numbermax_lifetime_ms?: numberdefault_permissions?: enumlanguage?: stringweb_theme?: enumlist_presetssave_preset changesrun_id: stringname: stringdescription?: stringstart_preset changesname: stringrun_name?: stringworking_dir?: stringdelete_preset deletesname: stringlist_hostsattach_host changeskey?: stringdetach_host changeskey: stringinstall_skills changesstatus?: booleanreevesagents://providersreevesagents://guide