Server Configuration
Describes the environment variables required to run the server.
| Name | Required | Description | Default |
|---|---|---|---|
| CMUXLAYER_ENABLE_CLAUDE_CHANNELS | No | Set to '1' to enable Claude channels preview. This advertises experimental['claude/channel'] and emits notifications for agent lifecycles. |
Capabilities
Features and capabilities supported by this server
| Capability | Details |
|---|---|
| tools | {
"listChanged": true
} |
Tools
Functions exposed to the LLM to take actions
| Name | Description |
|---|---|
| list_surfaces | List all surfaces (terminal/browser panes) across workspaces |
| new_split | Create a new split pane (terminal or browser) |
| send_input | Send text input to a terminal surface. When sending commands to another Claude session, press_enter can be unreliable — for critical inputs, use send_input without press_enter, then call send_key with key 'return' separately. |
| send_key | Send a key press to a terminal surface. Use this after send_input to reliably submit commands — especially when targeting interactive programs like Claude sessions. |
| read_screen | Read the current screen content of a terminal surface |
| rename_tab | Rename a surface tab |
| set_status | Set a sidebar status key-value pair |
| set_progress | Set sidebar progress indicator (0.0 to 1.0) |
| close_surface | Close a surface (terminal or browser pane) |
| browser_surface | Interact with a browser surface (open, navigate, snapshot, click, type, eval, wait) |
| spawn_agent | Spawn an AI agent in a new terminal surface. Returns immediately — use wait_for to block until ready. |
| wait_for | Block until an agent reaches a target state (ready, done, error). Checks retroactively first. |
| wait_for_all | Block until ALL agents reach target state OR any agent errors (fail-fast with partial results). |
| get_agent_state | Get the full state of an agent including cli_session_id for resume. |
| list_agents | List all agents with optional filters by state, repo, or model. |
| stop_agent | Stop an agent gracefully (Ctrl+C) or forcefully (kill process). |
| send_to_agent | Send text input to an agent. Agent must be in ready or idle state. |
| read_agent_output | Extract structured output from an agent's terminal between delimiter markers (e.g., REVIEW_OUTPUT_START / REVIEW_OUTPUT_END). Returns the content between the markers, or null if not found. |
| interact | Send a message to an agent, or perform an agent action (interrupt, model switch, resume, skill, usage). If the agent is alive, sends directly. If not found, returns an error — use spawn_agent first. |
| kill | Stop one or more agents. Target can be a single agent ID, an array of IDs, or 'all'. |
Prompts
Interactive templates invoked by user choice
| Name | Description |
|---|---|
No prompts | |
Resources
Contextual data attached and managed by the client
| Name | Description |
|---|---|
No resources | |