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.

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

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

cmux-ctl

That's it. 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 .

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

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.0.tar.gz (17.5 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.0-py3-none-any.whl (20.6 kB view details)

Uploaded Python 3

File details

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

File metadata

  • Download URL: cmux_ctl-0.1.0.tar.gz
  • Upload date:
  • Size: 17.5 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.0.tar.gz
Algorithm Hash digest
SHA256 802644918f36f8358b9e3e8966e938a030e466a2ade27746939daa3b88a3736d
MD5 7e21864af18c4f66e3a4731d6c0eb965
BLAKE2b-256 0886f0f7fd234d683dac0f35f3f04cb5e5a16f8561b52e13e30312bdcf7fbadf

See more details on using hashes here.

Provenance

The following attestation bundles were made for cmux_ctl-0.1.0.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.0-py3-none-any.whl.

File metadata

  • Download URL: cmux_ctl-0.1.0-py3-none-any.whl
  • Upload date:
  • Size: 20.6 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.0-py3-none-any.whl
Algorithm Hash digest
SHA256 fe0e00dfabd3ecd62744378030d02910e9fe4ff9718efbaf7bb3c8916d6f2eba
MD5 b5a9ab58127e846234618761240accc8
BLAKE2b-256 972e4576a0f0a2dd0c432e10ad5c9a9fa9eabdc95fec3f876c5f60ee10437f0e

See more details on using hashes here.

Provenance

The following attestation bundles were made for cmux_ctl-0.1.0-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