🧪 Skills

Cmux

Control cmux terminal multiplexer via its Unix socket API. Use when needing to: (1) List, create, select, or close workspaces; (2) Split panes and manage sur...

v1.0.0
❤️ 0
⬇️ 0
👁 1
Share

Description


name: cmux description: "Control cmux terminal multiplexer via its Unix socket API. Use when needing to: (1) List, create, select, or close workspaces; (2) Split panes and manage surfaces; (3) Send text or key presses to terminals; (4) Create notifications; (5) Set sidebar status, progress bars, or log entries; (6) Query system state. Requires cmux CLI or Unix socket at /tmp/cmux.sock."

cmux

Control cmux terminal multiplexer programmatically via its Unix socket API or CLI.

Socket Connection

SOCKET_PATH="${CMUX_SOCKET_PATH:-/tmp/cmux.sock}"

Send JSON-RPC requests:

{"id":"req-1","method":"workspace.list","params":{}}

CLI Quick Reference

# Output as JSON
cmux --json <command>

# Target specific workspace/surface
cmux --workspace <id> --surface <id> <command>

Workspace

Action CLI Socket Method
List all cmux list-workspaces workspace.list
Create new cmux new-workspace workspace.create
Select cmux select-workspace --workspace <id> workspace.select
Get current cmux current-workspace workspace.current
Close cmux close-workspace --workspace <id> workspace.close

Splits & Surfaces

Action CLI Socket Method
New split cmux new-split <direction> surface.split (direction: left/right/up/down)
List surfaces cmux list-surfaces surface.list
Focus surface cmux focus-surface --surface <id> surface.focus

Input

Action CLI Socket Method
Send text cmux send "echo hello" surface.send_text
Send key cmux send-key enter surface.send_key
Send to surface cmux send-surface --surface <id> "cmd" surface.send_text (with surface_id)

Keys: enter, tab, escape, backspace, delete, up, down, left, right

Notifications

cmux notify --title "Title" --body "Body"
# Socket: notification.create

Sidebar Metadata

Action CLI Socket Method
Set status cmux set-status <key> <value> (socket only)
Clear status cmux clear-status <key> (socket only)
Set progress cmux set-progress 0.5 --label "Building..." (socket only)
Clear progress cmux clear-progress (socket only)
Log entry cmux log "message" --level error (socket only)
Clear log cmux clear-log (socket only)

System

Action CLI Socket Method
Ping cmux ping system.ping
Capabilities cmux capabilities system.capabilities
Identify context cmux identify system.identify

Python Client

import json
import os
import socket

SOCKET_PATH = os.environ.get("CMUX_SOCKET_PATH", "/tmp/cmux.sock")

def rpc(method, params=None, req_id=1):
    payload = {"id": req_id, "method": method, "params": params or {}}
    with socket.socket(socket.AF_UNIX, socket.SOCK_STREAM) as sock:
        sock.connect(SOCKET_PATH)
        sock.sendall(json.dumps(payload).encode("utf-8") + b"\n")
        return json.loads(sock.recv(65536).decode("utf-8"))

# List workspaces
print(rpc("workspace.list", req_id="ws"))

# Send notification
print(rpc("notification.create", {"title": "Hello", "body": "From Python!"}))

Shell Helper

cmux_cmd() {
    SOCK="${CMUX_SOCKET_PATH:-/tmp/cmux.sock}"
    printf "%s\n" "$1" | nc -U "$SOCK"
}

cmux_cmd '{"id":"ws","method":"workspace.list","params":{}}'

Check if cmux is Available

[ -S "${CMUX_SOCKET_PATH:-/tmp/cmux.sock}" ] && echo "cmux socket available"
command -v cmux &>/dev/null && echo "cmux CLI available"

Reviews (0)

Sign in to write a review.

No reviews yet. Be the first to review!

Comments (0)

Sign in to join the discussion.

No comments yet. Be the first to share your thoughts!

Compatible Platforms

Pricing

Free

Related Configs