ReevesAgents

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

Connect your client

Local (npm)

Add in one click

Opens the app, which asks before it adds the server.

Or add it by command or config

Claude CodeTerminal
claude mcp add reevesagents -- npx -y reevesagents mcp
Claude Desktopclaude_desktop_config.json
{
  "mcpServers": {
    "reevesagents": {
      "command": "npx",
      "args": [
        "-y",
        "reevesagents",
        "mcp"
      ]
    }
  }
}
Cursor~/.cursor/mcp.json
{
  "mcpServers": {
    "reevesagents": {
      "command": "npx",
      "args": [
        "-y",
        "reevesagents",
        "mcp"
      ]
    }
  }
}
VS Code.vscode/mcp.json
{
  "servers": {
    "reevesagents": {
      "type": "stdio",
      "command": "npx",
      "args": [
        "-y",
        "reevesagents",
        "mcp"
      ]
    }
  }
}
Codex~/.codex/config.toml
[mcp_servers.reevesagents]
command = "npx"
args = ["-y", "reevesagents", "mcp"]
Gemini CLITerminal
gemini mcp add --scope user reevesagents npx -- -y reevesagents mcp
Local (from source)

Add in one click

Opens the app, which asks before it adds the server. Then replace each <NAME> in its settings with your value.

Or add it by command or config

FirstTerminal
git clone https://github.com/mertkayacs/reevesagents.git
cd reevesagents
pnpm install
pnpm build
Claude CodeTerminal
claude mcp add reevesagents -- node '<ABSOLUTE_PATH_TO_CLONE>/dist/cli.js' mcp
Claude Desktopclaude_desktop_config.json
{
  "mcpServers": {
    "reevesagents": {
      "command": "node",
      "args": [
        "<ABSOLUTE_PATH_TO_CLONE>/dist/cli.js",
        "mcp"
      ]
    }
  }
}
Cursor~/.cursor/mcp.json
{
  "mcpServers": {
    "reevesagents": {
      "command": "node",
      "args": [
        "<ABSOLUTE_PATH_TO_CLONE>/dist/cli.js",
        "mcp"
      ]
    }
  }
}
VS Code.vscode/mcp.json
{
  "servers": {
    "reevesagents": {
      "type": "stdio",
      "command": "node",
      "args": [
        "<ABSOLUTE_PATH_TO_CLONE>/dist/cli.js",
        "mcp"
      ]
    }
  }
}
Codex~/.codex/config.toml
[mcp_servers.reevesagents]
command = "node"
args = ["<ABSOLUTE_PATH_TO_CLONE>/dist/cli.js", "mcp"]
Gemini CLITerminal
gemini mcp add --scope user reevesagents node -- '<ABSOLUTE_PATH_TO_CLONE>/dist/cli.js' mcp

Settings 2

REEVES_REGISTRY Optional: Overrides the state folder for runs, history and presets. Default ~/.reeves.
REEVES_CONFIG Optional: Overrides the path of the config file. Default ~/.reeves/config.json.

What it does

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.

What it needs

RuntimeNode.js 22.12+
Runs onmacOS, Windows, Linux
Also
  • tmux 3.0 or newer on macOS and Linux (native Windows 10 1809+ uses the bundled winmux)
  • At least one supported provider CLI installed, on PATH and signed in
  • A host CLI that loads the MCP server

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.

Limits

  • Not covered Drives only provider CLIs installed and signed in on the same machine. A window stuck at a login prompt has to be signed in by hand.
  • Limit `send_text` pastes without submitting, so a `send_key` enter has to follow it.
  • Limit `delete` and `delete_run` refuse an agent or run that is still running. Stop it first.
  • Size cap A run holds up to 100 agents and spawns nest up to 5 levels by default (`max_agents`, `max_depth` in the global config).
  • Not covered Workers do not get the MCP tools unless the server is attached to their CLI as well.
  • Limit Two state registries must not share one tmux server, because the orphan sweep judges ownership against the current registry.
  • Not covered `list_tools` only reports the helper CLIs. They are not spawn providers, and agents run them from their own shell.

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.

Who it suits

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.

Tools 31

11 only read, 13 change things, 7 can delete or overwrite. A ? marks an optional parameter.

list_providers
Show the provider CLIs this machine can launch, with aliases and known model ids.
list_tools
Show the helper CLIs (Perplexity, Google Colab, Hugging Face, Ollama), whether each is installed and signed in, and an example command.
spawn changes
Launch an agent in a new tmux window, in this session's run or an existing one.provider: stringrun_id?: stringmodel?: stringtask?: stringnickname?: stringname?: stringworking_dir?: stringpermissions?: enumauth_mode?: enumeffort?: enumextra_args?: array
read
Return an agent's recent terminal output, 20 lines by default.agent_id: stringlines?: number
send_text changes
Paste text at an agent's prompt without submitting it.agent_id: stringtext: string
send_key changes
Press one key such as enter, escape, tab, an arrow or ctrl-c in an agent.agent_id: stringkey: enum
interrupt changes
Send Ctrl-C to an agent.agent_id: string
kill deletes
End one agent and close its window.agent_id: string
stop deletes
End every agent in a run and remove its tmux session.run_id: string
list
Show live runs and their agents, sweeping dead windows first.
open changes
Switch the attached tmux client to a run's or agent's window.id: string
doctor
Run the environment checks for tmux, provider CLIs and state folders.
reap deletes
End agents whose window is gone or whose lifetime cap has passed, and kill orphan sessions.
list_history
Show archived runs.
delete deletes
Remove the record of an ended agent.agent_id: string
delete_run deletes
Remove an ended run's record and archive it.run_id: string
delete_history deletes
Remove one archived run record.id: string
request_approval changes
Open an approval request for a proposed action.agent_id: stringaction: stringsummary: stringdetails?: objectrisk?: enum
resolve_approval changes
Approve or deny a pending request, with an optional note.approval_id: stringdecision: enumnote?: string
check_approval
Look up the status of one approval request.approval_id: string
list_approvals
Show approval requests, filtered by run or status if asked.run_id?: stringstatus?: enum
get_config
Read the global settings, including agent caps and the default permission mode.
set_config changes
Change one or more global settings and save them.peek_interval_ms?: numberpeek_lines?: numbermax_depth?: numbermax_agents?: numberready_delay_ms?: numbermax_lifetime_ms?: numberdefault_permissions?: enumlanguage?: stringweb_theme?: enum
list_presets
Show saved run presets.
save_preset changes
Store a live run's agent line-up as a named preset.run_id: stringname: stringdescription?: string
start_preset changes
Start a new run from a saved preset.name: stringrun_name?: stringworking_dir?: string
delete_preset deletes
Remove a saved preset.name: string
list_hosts
Show host CLIs that can load the server and where it is attached.
attach_host changes
Add the server to one host CLI's MCP configuration, or to all installed hosts.key?: string
detach_host changes
Remove the server from a host CLI's configuration.key: string
install_skills changes
Write the ReevesAgents skill file for CLIs that support skills, or report where it is.status?: boolean

Resources 2

reevesagents://providers
Catalog of provider CLIs with install status, aliases and known models.
reevesagents://guide
Operator guide for driving agents through the tools.

Similar servers