Your agents can't touch
the terminal. Fix that.

MCP server that gives AI agents programmatic control over terminal panes. Split, read, send, automate — through one Unix socket.

$ npm install cmuxlayer
0.2mssocket latency
22MCP tools
5agent CLIs
310tests passing
claude ~ my-project
Spawn two agents — one for the API, one for the frontendSetting up both agents.┌─ spawn_agent(repo="api", model="sonnet", task="fix rate limiter") agent_id: sonnet-api-1743523200-f7a2 surface: surface:3 state: creating└─ cli: claude┌─ spawn_agent(repo="web", model="opus", task="add metrics page") agent_id: opus-web-1743523200-b4c1 surface: surface:4 state: creating└─ cli: claude┌─ read_screen(surface="surface:3", parsed_only=true) agent: claude status: working model: claude-sonnet-4-6 ctx: ██████████░░░░░░░░ 54% cost: $0.42└─ parsed_only: trueBoth agents are running. The API fix is 54% through context.
Workflow

Spawn. Split. Monitor. Read.

>_
Spawn
0.2ms
Pick a CLI, a repo, and a task. cmuxLayer opens the pane.
Split
0.2ms
Terminal or browser, any direction. Surfaces stack or tile.
Monitor
live
Context %, cost, state, errors. Parsed from raw screen output.
Read
0.2ms
Screen content, scrollback, or structured parsed data.
MCP tools

Every operation is a tool call

Core — terminal operations
list_surfacesEnumerate all surfaces across workspaces
new_splitCreate terminal or browser splits in any direction
send_inputType text into a surface as if from the keyboard
send_keySend key combos — Enter, Ctrl-C, Escape, arrows
read_screenCapture visible terminal output with optional scrollback
rename_tabSet the workspace tab title
notifyPush macOS notifications from any surface
set_statusUpdate sidebar status entries with icons and colors
set_progressShow a progress bar with label in the sidebar
close_surfaceClose a terminal or browser surface
browser_surfaceOpen a scriptable browser alongside terminal panes
Agent lifecycle — spawn and monitor
spawn_agentLaunch a Claude, Codex, Gemini, or Cursor agent in a new pane
send_to_agentDeliver a message to a running agent
read_agent_outputCapture an agent’s latest terminal output
get_agent_stateCheck agent status: running, idle, waiting, done, error
list_agentsEnumerate all active agents across workspaces
wait_forBlock until an agent reaches a target state
wait_for_allBlock until multiple agents finish in parallel
stop_agentGracefully stop a running agent
killForce-kill an unresponsive agent process
interactSend interactive input to an agent waiting for a response
Compatible with

Five CLI agents

Claude Code
Claude Code
Cursor
Cursor
Codex
Codex
Gemini CLI
Gemini CLI
Kiro
Kiro
Get started

Three steps

01
Install from npm
npm install -g cmuxlayer
02
Add to your MCP config
"cmuxlayer": { "command": "cmuxlayer" }
03
Ask your agent to split a pane
It just works.

Stop being the clipboard.

npm install. Add to MCP config. Start orchestrating.