cmuxlayer
cmuxLayer is an MCP server providing AI agents with programmatic control over terminal workspaces and multi-agent orchestration through 22 tools.
Terminal Control
Create split panes (terminal or browser) in any direction (left, right, up, down)
Send text input or special key presses (Enter, Escape, Tab, Ctrl-C) to any terminal
Read terminal screen content, including scrollback buffer
Rename tabs and close panes
Browser surfaces: open URLs, navigate, take snapshots, click elements, type text, evaluate JavaScript, wait for elements
AI Agent Lifecycle Management
Spawn AI agents (Claude Code, Codex, Gemini, Cursor, Kiro) in new terminal panes with a task prompt
Send follow-up prompts to running agents
Wait for a single agent to reach a target state (ready, working, idle, done, error)
Wait for all agents in a group to complete, with fail-fast on error
Interact with agents: interrupt, switch models, resume sessions, run slash commands, send MCP messages
Gracefully stop (Ctrl-C) or force-kill one or more agents
Workspace & State Management
List all terminal/browser surfaces across workspaces, with optional screen previews
List active agents, filtered by state, repo, or model; view child agents with live screen status
Get full agent state (including session ID) and extract structured output between delimiter markers
Set sidebar key-value status messages (with optional icon/color) and progress indicators (0.0–1.0)
Display notification banners in cmux
Performance: Uses Unix socket connection for ~1,423× speedup over CLI subprocess, with auto-reconnect.
cmuxLayer
Your AI agents can't see each other's terminals. One runs in tab 1, another in tab 2 — and you're the clipboard between them. cmuxLayer fixes that: 22 MCP tools that give AI agents programmatic control over terminal workspaces.
Quick Start
npm install -g cmuxlayerRequires cmux to be running.
Add to your MCP config (Claude Code, Cursor, VS Code, Claude Desktop):
{
"mcpServers": {
"cmux": {
"command": "cmuxlayer"
}
}
}Config locations: Claude Code
.mcp.jsonorclaude mcp add cmuxlayer -s user -- cmuxlayer| Cursor.cursor/mcp.json| VS Code.vscode/mcp.json| Claude Desktop — see MCP docs for platform-specific paths
What You Can Do
Tell your AI agent things like:
"Split a pane to the right and run my test suite there"
"Spawn a Claude Code agent in a new pane to refactor auth.ts"
"Read the screen of surface:2 and tell me if the build passed"
"Wait for all agents to finish, then read their output"
"Set the sidebar status to show our deploy progress"
Under the hood, cmuxLayer exposes 22 MCP tools for terminal control, screen reading, and multi-agent orchestration. read_screen parses agent metadata (status, model, tokens, context %) for Claude Code, Codex, Gemini, Cursor, and Kiro.
MCP Tools (22)
All tools ship with ToolAnnotations for automatic safety policy enforcement.
Terminal control — new_split send_input send_key read_screen rename_tab close_surface browser_surface
Agent lifecycle — spawn_agent send_to_agent wait_for wait_for_all interact stop_agent kill
Workspace — list_surfaces list_agents my_agents get_agent_state read_agent_output notify set_status set_progress
Read-only (6)
Tool | What it does |
| List all surfaces across workspaces |
| Read terminal output with parsed agent status |
| Full state of a tracked agent |
| All agents, with optional filters |
| Children of a parent agent with live screen status |
| Structured output between delimiter markers |
Mutating (13)
Tool | What it does |
| Create a terminal or browser split pane |
| Send text to a surface |
| Send key press (return, escape, ctrl-c, etc.) |
| Rename a surface tab |
| Show a cmux notification banner |
| Set sidebar status key-value pair |
| Set progress indicator (0.0-1.0) |
| Interact with browser surfaces |
| Spawn a CLI agent in a new pane |
| Send a prompt to a running agent |
| Block until agent reaches a target state |
| Block until multiple agents finish |
| Send interactive input (confirm, cancel, resume) |
Destructive (3)
Tool | What it does |
| Close a terminal or browser pane |
| Gracefully stop an agent |
| Force-kill agent processes |
Supported Agents
CLI | Command | Auto-detected |
Claude Code |
| status, model, tokens, context % |
Codex |
| status, model |
Gemini CLI |
| status, model |
Cursor |
| status |
Kiro |
| status |
read_screen auto-detects agent type and parses metadata from terminal output.
Architecture
AI Agent ─── MCP ───> cmuxLayer ─── Unix socket ───> cmux
├── Agent engine (spawn → monitor → teardown)
├── Screen parser (5 agent formats)
├── Mode policy (autonomous vs manual)
└── State manager + event logThe socket client connects to cmux via Unix socket. Auto-reconnects on disconnect, falls back to CLI subprocess if socket is unavailable.
Connection | Latency | Speedup |
CLI subprocess | ~142ms | baseline |
Unix socket | ~0.1ms | 1,423x |
Troubleshooting
cmux is not running cmuxLayer requires a running cmux instance. Install it first, then start a cmux session before using cmuxLayer.
Tools not appearing in Claude Code
Restart Claude Code after adding the MCP config. Run claude mcp list to verify cmuxlayer is connected.
Socket connection failed
cmuxLayer auto-discovers the cmux socket (macOS: ~/Library/Application Support/cmux/cmux.sock). Override with CMUX_SOCKET_PATH if needed.
Testing
npm test # 335 tests via vitest
npm run typecheck # Type checkingDevelopment
npm install
npm run dev # Run with tsx (hot reload)
npm run build # Compile TypeScript
npm start # Run compiled outputContributing
See CONTRIBUTING.md for development setup and PR guidelines.
License
Apache 2.0 — see LICENSE.
Part of the Golems AI agent ecosystem. cmuxlayer.etanheyman.com | Built by @EtanHey.
Latest Blog Posts
MCP directory API
We provide all the information about MCP servers via our MCP API.
curl -X GET 'https://glama.ai/api/mcp/v1/servers/EtanHey/cmuxlayer'
If you have feedback or need assistance with the MCP directory API, please join our Discord server