cmux

Controls terminal splits, long-running processes, and sidebar status via the cmux CLI.

5|2|Updated Mar 9, 2026
One-click install
npx skills add https://github.com/lauhon/pi --skill cmux-lauhon
Or copy as Structured Prompt for Agent
Please help me install this Agent Skill.
Skill: cmux
Source: https://github.com/lauhon/pi/tree/main/skills/cmux
Command: npx skills add https://github.com/lauhon/pi --skill cmux-lauhon

SYSTEM DOCUMENTATION & REQUIREMENTS

What problem does it solve? Running dev servers, build watchers, and other non-terminating commands blocks the terminal and makes it hard to monitor progress. This Skill lets you manage long-lived processes, terminal splits, and status indicators through the cmux CLI without losing track of running jobs. ## Core Features & Use Cases - Long-Running Process Management: Send commands to existing terminal surfaces, read bounded output, and send follow-up input or keys without blocking. - Layout & Workspace Control: Create splits, list panes and surfaces, switch workspaces, and focus panes programmatically. - Status & Notifications: Set sidebar status pills, progress bars, log entries, and desktop notifications for build completion or failure. - Use Case: Start a dev server with npm run dev in the existing Terminal surface, set a progress bar while the build runs, then send a notification and clear the status when it finishes. ## Quick Start Use cmux to start my dev server in the existing Terminal surface and show a progress bar in the sidebar while it builds.

Frequently Asked Questions about cmux

High-intent search queries and answers about installing and using this skill.

FAQPage Schema
How do I run a long-running command in a terminal without blocking?

Send the command to an existing terminal surface using cmux send with an explicit working directory, then read bounded output later with read-screen. Redirect verbose output to a log and use set-status or notify for completion signals.

How do I send commands to a specific terminal split with cmux?

Find the surface ref with cmux tree --json, then use cmux send --surface <ref> to send text or cmux send-key --surface <ref> for keys like enter or escape. Surface refs use the format surface:N.

What is the difference between cmux and tmux?

cmux is the terminal multiplexer built for Ghostty, controlled via a CLI and Unix socket JSON-RPC API rather than tmux key bindings. It adds sidebar status pills, progress bars, and notifications that tmux does not provide.

Why do cmux commands from the website docs not work?

Some documented commands differ from the actual CLI: use tree --json instead of list-surfaces, send instead of send-surface, and focus-pane instead of focus-surface. The socket path is ~/Library/Application Support/cmux/cmux.sock, not /tmp/cmux.sock.

How do I show build progress in the cmux sidebar?

Use cmux set-progress with a value from 0.0 to 1.0 and an optional label, plus cmux set-status for status pills with icons and colors. Clear both with clear-progress and clear-status after the job completes.