Skip to main content

TUI dashboard for orchestrating cmux workspaces and Claude Code agents

Project description

cmux-ctl

PyPI version Python 3.10+ License: MIT

A terminal dashboard for orchestrating cmux workspaces and Claude Code agents.

Built with Textual.

cmux-ctl dashboard

Features

  • Real-time dashboard — grid of workspace cards, auto-refreshing every 3 seconds
  • Agent state tracking — running, waiting for input, idle, with color-coded borders
  • Live terminal preview — last 15 lines of each workspace's terminal output
  • Launch agents — start Claude Code in new or existing workspaces from the dashboard
  • Send input / stop agents — interact with agents without switching windows
  • Notification badges — unread alerts surfaced per workspace
  • Stale detection — agents whose output hasn't changed in 30s are flagged
  • Keyboard-first — full grid navigation, no mouse required
  • Web mode — run the same dashboard in your browser via textual-serve

Prerequisites

  • macOS with cmux installed and running
  • Python 3.10+

Installation

pipx (recommended)

pipx install cmux-ctl

pip

pip install cmux-ctl

From source

git clone https://github.com/alaasdk/cmux-ctl.git
cd cmux-ctl
pip install -e .

Usage

Terminal

cmux-ctl

Browser

pip install cmux-ctl[web]
cmux-ctl-web

Opens the dashboard at http://localhost:8000. Pass --host 0.0.0.0 to expose on your network, or --port 3000 to change the port.

The dashboard connects to cmux automatically and displays all active workspaces.

Keybindings

Key Action
q Quit
r Refresh
l Launch agent
s Stop agent (sends Ctrl+C)
i Send input to agent
Enter Switch to workspace in cmux
Tab / Shift+Tab Next / previous card
Arrow keys Grid navigation

Configuration

Environment Variable Description Default
CMUX_BIN Path to the cmux binary /Applications/cmux.app/Contents/Resources/bin/cmux

How it works

cmux-ctl communicates with cmux entirely through its CLI:

  1. cmux tree --all --json — discovers all workspaces, panes, and surfaces
  2. cmux sidebar-state — reads workspace metadata (cwd, git branch, PR links, agent state)
  3. cmux read-screen — captures terminal output for live preview
  4. Session map (/tmp/cmux-session-map.json) — detects active Claude Code sessions

The dashboard polls every 3 seconds for workspace state and every 2 seconds for terminal content. Agent state is determined from sidebar metadata, screen content heuristics (e.g., detecting Claude Code's UI patterns), and the session map.

Development

git clone https://github.com/alaasdk/cmux-ctl.git
cd cmux-ctl
pip install -e ".[web]"

# Run with Textual dev mode (live CSS reload, console)
make dev

# Run in browser
make web

License

MIT

Project details


Download files

Download the file for your platform. If you're not sure which to choose, learn more about installing packages.

Source Distribution

cmux_ctl-0.1.1.tar.gz (18.3 kB view details)

Uploaded Source

Built Distribution

If you're not sure about the file name format, learn more about wheel file names.

cmux_ctl-0.1.1-py3-none-any.whl (21.4 kB view details)

Uploaded Python 3

File details

Details for the file cmux_ctl-0.1.1.tar.gz.

File metadata

  • Download URL: cmux_ctl-0.1.1.tar.gz
  • Upload date:
  • Size: 18.3 kB
  • Tags: Source
  • Uploaded using Trusted Publishing? Yes
  • Uploaded via: twine/6.1.0 CPython/3.13.7

File hashes

Hashes for cmux_ctl-0.1.1.tar.gz
Algorithm Hash digest
SHA256 c8caa80a37a5c4a22cf318cc9d092357d4ec12a3d7d9e819af01c48ef82dc15a
MD5 6539923ee609cb02013fbad4322c4aad
BLAKE2b-256 e2ccd7de4e2953773aacf0be1c32924f0408308c09fbf0be060e1885a0a3c58f

See more details on using hashes here.

Provenance

The following attestation bundles were made for cmux_ctl-0.1.1.tar.gz:

Publisher: publish.yml on alaasdk/cmux-ctl

Attestations: Values shown here reflect the state when the release was signed and may no longer be current.

File details

Details for the file cmux_ctl-0.1.1-py3-none-any.whl.

File metadata

  • Download URL: cmux_ctl-0.1.1-py3-none-any.whl
  • Upload date:
  • Size: 21.4 kB
  • Tags: Python 3
  • Uploaded using Trusted Publishing? Yes
  • Uploaded via: twine/6.1.0 CPython/3.13.7

File hashes

Hashes for cmux_ctl-0.1.1-py3-none-any.whl
Algorithm Hash digest
SHA256 2032c49165066bd48a21954859537e71ec594c28add3f3d1b72145b16e4d68c4
MD5 33a85061cd48622ee36a540e7222e741
BLAKE2b-256 cd36dfaba2d9f76f441b06e1368704f0698275a15ae5852094708669d0eda77c

See more details on using hashes here.

Provenance

The following attestation bundles were made for cmux_ctl-0.1.1-py3-none-any.whl:

Publisher: publish.yml on alaasdk/cmux-ctl

Attestations: Values shown here reflect the state when the release was signed and may no longer be current.

Supported by

AWS Cloud computing and Security Sponsor Datadog Monitoring Depot Continuous Integration Fastly CDN Google Download Analytics Pingdom Monitoring Sentry Error logging StatusPage Status page