cmux Pane Orchestration
SkillWeb & browsingThe cmux skill lets your agent split terminal panes, run parallel processes, read their output, and drive a built-in browser.
Available today. Use it from your connected AI after setup.
No other account needed.
Add ahel to your AI once: Claude, ChatGPT, Cursor, Claude Code or Codex. Then ask it to use this.
Then ask your AI: use the cmux Pane Orchestration skill
About this skill
Orchestrate cmux terminal panes, split terminals, run parallel processes, read output from other panes, and use the built-in browser. Use when working inside cmux and you need to run a dev server, watch tests, spawn sub-agents, or preview web pages.
What this skill tells your AI
The instructions your AI receives, as published by espennilsen/pi in extensions/pi-cmux/SKILL.md and read by ahel’s review.
You have access to cmux tools for managing terminal panes. Use them to run parallel processes, monitor output, and interact with other terminals.
Available Tools
| Tool | Purpose |
|---|---|
cmux_list | List all surfaces (panes) and workspaces |
cmux_split | Split pane right or down, optionally run a command |
cmux_read | Read terminal output from another pane |
cmux_send | Send text or keystrokes to another pane |
cmux_close | Close a pane |
cmux_notify | Send desktop notification |
cmux_browser | Open/navigate/snapshot/click/fill/eval in built-in browser |
Common Patterns
Dev server + coding workflow
1. cmux_split direction="down" command="npm run dev\n"
2. Note the surface ID from the result
3. Work on code in your main terminal (edit files, etc.)
4. cmux_read surface="surface:X" to check dev server output
5. cmux_close surface="surface:X" when done
Parallel test watching
1. cmux_split direction="right" command="npm test -- --watch\n"
2. Edit code in main pane
3. cmux_read surface="surface:X" to check test results
4. If tests fail, read the output and fix the code
Sub-agent spawning
1. cmux_split direction="right" command="pi \"Task description here\"\n"
2. Continue working on your own task
3. cmux_read surface="surface:X" to check sub-agent progress
4. cmux_close surface="surface:X" when sub-agent finishes
Web preview with browser
1. Start dev server: cmux_split direction="down" command="npm run dev\n"
2. Open browser: cmux_browser action="open" url="http://localhost:3000"
3. Get DOM: cmux_browser action="snapshot" surface="surface:X" compact=true
4. Interact: cmux_browser action="click" surface="surface:X" selector="button.submit"
5. Fill form: cmux_browser action="fill" surface="surface:X" selector="input[name=email]" value="test@example.com"
Stopping a process in another pane
1. cmux_send surface="surface:X" key="ctrl+c"
2. Wait a moment, then cmux_read to confirm it stopped
Guidelines
- Always
cmux_listfirst if you don't know the surface IDs - Append
\nto commands incmux_splitandcmux_sendto execute them - Read before assuming — use
cmux_readto check what happened in other panes - Clean up — close panes you no longer need with
cmux_close - Don't close your own pane — only close panes you created
- Notify on completion — use
cmux_notifyfor long-running tasks so the user knows - Surface IDs are like
surface:2— use the exact format fromcmux_listorcmux_splitresults
Signals
- GitHub stars
- 122
- Forks
- 13
- Last commit
- Sep 2026
Advanced
- Item type
- skill
- Key
cmux-espennilsen- Source
- github.com/espennilsen/pi