Sandbox
@mertkayacs/reevesagents

Local agent workspace for Claude Code and Codex

ReevesAgents runs multiple provider CLIs in tmux and gives you one place to manage them. You can use it from the terminal, the TUI, or the Web UI, and attach its MCP server to a trusted host CLI when you want one agent to control the others.

88 stars9 forksTypeScriptUpdated 8d ago
Who it's for

Builders who want to run several agent CLIs in one local workspace and control them from one host.

What it delivers

You can split work across multiple agents, watch their output, and steer or stop them without leaving your workspace.

What it does

Multi-agent run control

Spawns runs with specs like `claude-code:lead codex:tests hermes:research` and lets you add, stop, kill, or inspect agents later.

Local TUI and Web UI

Provides a keyboard-first TUI and a local Web UI for viewing runs, panes, approvals, and history.

Agent Control MCP

Exposes an optional MCP server so a trusted CLI can `spawn`, `read`, `send_text`, `send_key`, `interrupt`, `kill`, and `stop` other agents.

Tmux-backed sessions

Keeps provider CLIs running in real tmux windows so work continues after the UI closes.

Local-only state

Stores config, presets, runs, and history under `~/.reeves` with no app-stored API keys or database.

Provider CLI support

Works with Claude Code, Codex, OpenCode, Hermes, Kimi, DeepSeek, Qwen, Pi, Aider, and other installed CLIs.

How to get it

  1. 1Run
    pnpm add -g reevesagents
    reevesagents doctor
    reevesagents
  2. 2Start a run from the CLI
    reevesagents spawn claude-code:lead codex:tests hermes:research \
      --name "release check" \
      --prompt "Review the release path, test coverage, and docs."
  3. 3Open the Web UI
    reevesagents web
  4. 4Let one attached agent drive the others
    reevesagents attach codex
    reevesagents hosts

README

ReevesAgents

npm version node license CI

Demo · Docs · FAQ · Issues

English · Deutsch · Français · Español · Português · Italiano · Türkçe · Русский · 简体中文 · العربية

ReevesAgents is a local workspace for AI coding CLIs. It runs Claude Code, Codex, OpenCode, Hermes, Kimi, DeepSeek, Qwen, Pi, Aider, and other provider CLIs side by side in tmux. You can use it as a normal CLI/TUI/Web UI, or attach its opt-in MCP so one agent can spawn, read, steer, and stop the rest.

No ReevesAgents-stored API keys. No database. No Docker. No background daemon. Provider login stays inside each provider CLI.

Quick Start

pnpm add -g reevesagents
reevesagents doctor
reevesagents

Start a run from the CLI:

reevesagents spawn claude-code:lead codex:tests hermes:research \
  --name "release check" \
  --prompt "Review the release path, test coverage, and docs."

Open the Web UI:

reevesagents web

Let one attached agent drive the others:

reevesagents attach codex
reevesagents hosts

Restart that CLI after attach so it loads the MCP tools.

What It Gives You

SurfaceUse it for
TUIKeyboard-first run control inside the terminal.
Web UILocal visual view of runs, panes, agents, approvals, and history.
CLIScripts, smoke checks, spawning, state cleanup, and tmux jumps.
Agent Control MCPOne trusted CLI can spawn and drive other CLIs through local tools.
tmuxReal provider CLI windows that keep running after the UI closes.

ReevesAgents is local by design. State is plain JSON under ~/.reeves, and the CLIs it starts are the same CLIs you already use by hand.

Install

ReevesAgents needs Node.js 20.19+, tmux 3.0+, and at least one supported provider CLI installed and authenticated. It supports macOS, Linux, and WSL.

# Homebrew
brew tap mertkayacs/reevesagents
brew install reevesagents

# pnpm
pnpm add -g reevesagents

# npm
npm install -g reevesagents

# one-shot checks
pnpm dlx reevesagents doctor
npx reevesagents doctor

Pin a version by replacing <version>:

pnpm add -g reevesagents@<version>

Source install:

git clone https://github.com/mertkayacs/reevesagents.git
cd reevesagents
pnpm install
pnpm build
pnpm link --global
reevesagents doctor

Screenshots

The TUI and Web UI drive the same local runs:

ReevesAgents TUI: language picker, welcome menu, and doctor

ReevesAgents Web UI: runs and live agent panes

ReevesAgents Web UI: starting a new run

Commands

No arguments launches the TUI.

CommandPurpose
reevesagentsLaunch the TUI.
spawn [spec...]Start a run. Each spec is provider[:nickname[:model]].
add [spec...]Add agents to the most recent active run.
runsList active runs.
agents [run-id]List agents across runs or inside one run.
open <id>Jump to a run or agent tmux window.
peek <agent-id>Print recent output from one agent.
send <agent-id> <text...>Paste text into an agent without submitting.
key <agent-id> <key>Send enter, escape, arrows, tab, space, backspace, or ctrl-c.
interrupt <agent-id>Send Ctrl-C to one agent.
stop <run-id>Stop a run. Requires --yes or ALLOW_DESTRUCTIVE=1.
kill <agent-id>Stop one agent. Requires --yes or ALLOW_DESTRUCTIVE=1.
doctorCheck Node, tmux, state, and provider CLIs.
webStart the loopback-only Web UI.
providersList provider ids, aliases, models, and availability.
approvalsList pending approval requests.
approve / denyResolve one approval request.
hostsShow which host CLIs have ReevesAgents attached.
attach [cli]Connect the Agent Control MCP to one host CLI, or all installed hosts.
detach <cli>Remove that MCP connection from one host CLI.
skills [action]Install, remove, or inspect the ReevesAgents skill.
mcpStart the MCP server over stdio. Host CLIs run this.
config [key] [value]Show or update editable settings.
presetsList saved run presets.
save-presetSave a live run as a preset.
start-presetStart a run from a preset.
delete-presetDelete a preset.
deleteDelete one ended agent record. Requires confirmation.
delete-runDelete one ended run and archive it. Requires confirmation.
historyList archived runs.
delete-historyDelete one archived history record. Requires confirmation.
reapEnd zombie agents and agents past max_lifetime_ms, and kill orphan tmux sessions no run record owns.

Common flags:

  • --json: available on script-facing list and action commands.
  • --name <name>: name a run.
  • --cwd <dir>: run agents from a directory.
  • --prompt <text>: paste startup text into each spawned agent.
  • --skip: skip provider permission prompts for unattended workers.
  • --run <run-id>: add agents to a specific run.
  • --port <n> and --no-open: Web UI startup options.

Agent Control

Agent Control is an optional MCP server. Attach it only to a CLI you trust to drive local tools:

reevesagents attach claude
reevesagents hosts

After restart, that CLI receives tools to spawn, read, send_text, send_key, interrupt, kill, stop, manage approvals, manage presets, and inspect hosts. The provider catalog is also exposed as reevesagents://providers.

Workers do not receive the MCP by default. If a worker should create its own workers, attach ReevesAgents to that worker's CLI explicitly.

Codex sandboxes MCP calls by default, which blocks tmux launches. When using Codex as the host that drives agents, run it with full access, for example codex --sandbox danger-full-access, or use a Codex profile that sets sandbox_mode = "danger-full-access".

Full tool reference: docs/mcp.md. Agent-facing operator guide: AGENTS.md.

Configuration

State lives under ~/.reeves:

~/.reeves/
  config.json
  presets/
  runs/
  history/

Two environment variables override the default paths:

  • REEVES_REGISTRY: state root override for runs/, history/, and presets/.
  • REEVES_CONFIG: config file path override.

One registry per tmux server: the background orphan sweep judges session ownership against the current registry, so two registries must not share one tmux server.

Anything that might contain a secret is scrubbed before it reaches a file.

Examples

Spread one project across multiple CLIs:

reevesagents spawn deepseek:backend claude-code:product codex:review \
  --name "feature x" \
  --prompt "Backend, product copy, and a review pass."

Watch one agent and then open its window:

reevesagents peek backend -n 40
reevesagents open backend

Stop the run when the work is done:

reevesagents stop "feature x" --yes

Web UI
reevesagents web

The Web UI binds to 127.0.0.1 only and runs in the foreground. Agents keep running after the page closes because they live in tmux.

The Web UI uses optional runtime modules, ws and @lydell/node-pty. npm installs them by default. CLI and TUI commands keep working without them, and reevesagents web explains what is missing.

To reach it from another machine, forward the loopback port over SSH:

ssh -L 8080:127.0.0.1:8080 user@host

Troubleshooting

tmux is not installed. Install tmux and run reevesagents doctor. The TUI auto-wraps itself in a tmux session named reeves; set REEVES_NO_TMUX_WRAPPER=1 to skip that behavior.

A provider CLI is missing or signed out. ReevesAgents launches provider CLIs that are already on PATH and authenticated. reevesagents doctor shows what is detected. If a launched window is waiting at login, peek shows it.

The Web UI reports missing packages. Reinstall with optional dependencies enabled, then run reevesagents doctor.

Port already in use. reevesagents web starts at 8080 by default. If it is taken, the server binds the next free port in a small range and prints the URL.

Contributing

Contributor docs live under docs/. Start with CONTRIBUTING.md, testing, and releasing.

End users do not need the development toolchain. Contributors use pnpm, TypeScript, tsup, Vitest, and ESLint from the repository.

Links

Files in the repo

Repository payload31 top-level entries
  • .github
  • docs
  • packages
  • scripts
  • skills
  • src
  • test
  • .gitignore
  • .release-please-manifest.json
  • AGENTS.ar.md
  • AGENTS.de.md
  • AGENTS.es.md
  • AGENTS.fr.md
  • AGENTS.it.md
  • AGENTS.md
  • AGENTS.pt.md
  • AGENTS.ru.md
  • AGENTS.tr.md
  • AGENTS.zh-Hans.md
  • CHANGELOG.md
  • eslint.config.js
  • LICENSE
  • package.json
  • pnpm-lock.yaml
  • pnpm-workspace.yaml
  • README.md
  • release-please-config.json
  • renovate.json
  • tsconfig.json
  • tsup.config.ts
  • vitest.config.ts

Discussion (0)

Ask about usage, or say what you built with it

Sign in to join the discussion.

No comments yet. Be the first to say what this is good for.

More tools

JuliusBrussee/
caveman

🪨 why use many token when few token do trick — Claude Code skill that cuts 65% of tokens by talking like caveman

105k
1 add
MemPalace/
mempalace

The best-benchmarked open-source AI memory system. And it's free.

59k
stablyai/
orca

Orca is the ADE for working with a fleet of parallel agents. Run any coding agent with your own subscription. Available on desktop, mobile and remote runtime.

66k

A cross-platform desktop All-in-One assistant for Claude Code, Codex, OpenCode, OpenClaw, Grok Build & Hermes Agent. Only official website: ccswitch.io

132k

Never stop coding. Free MIT AI gateway: one endpoint, 352 providers (150+ free), 1200+ models Kimi, Claude, GPT, Gemini, GLM, DeepSeek, MiniMax. Works with Claude Code, Codex, Cursor, OpenCode, Cline & Copilot. Quota-aware auto-fallback, RTK+Caveman compression saves 15-95% tokens, MCP/A2A, Desktop/PWA. Built by 550+ contributors

64k
headroomlabs-ai/
headroom

Compress tool outputs, logs, files, and RAG chunks before they reach the LLM. 20% fewer tokens for coding agents, 60-95% fewer tokens for JSON, same answers. Library, proxy, MCP server.

71k