by epilande
๐ฎ Track all your AI coding agents (Claude Code, Codex, Cursor, ...) in tmux and jump to the one that needs you
# Add to your Claude Code skills
git clone https://github.com/epilande/ccmuxLast scanned: 7/10/2026
{
"issues": [
{
"type": "npm-audit",
"message": "@babel/core: @babel/core: Arbitrary File Read via sourceMappingURL Comment",
"severity": "low"
},
{
"type": "npm-audit",
"message": "@jimp/core: Vulnerability found",
"severity": "medium"
},
{
"type": "npm-audit",
"message": "@jimp/diff: Vulnerability found",
"severity": "medium"
},
{
"type": "npm-audit",
"message": "@jimp/js-bmp: Vulnerability found",
"severity": "medium"
},
{
"type": "npm-audit",
"message": "@jimp/js-gif: Vulnerability found",
"severity": "medium"
},
{
"type": "npm-audit",
"message": "@jimp/js-jpeg: Vulnerability found",
"severity": "medium"
},
{
"type": "npm-audit",
"message": "@jimp/js-png: Vulnerability found",
"severity": "medium"
},
{
"type": "npm-audit",
"message": "@jimp/js-tiff: Vulnerability found",
"severity": "medium"
},
{
"type": "npm-audit",
"message": "@jimp/plugin-blur: Vulnerability found",
"severity": "medium"
},
{
"type": "npm-audit",
"message": "@jimp/plugin-color: Vulnerability found",
"severity": "medium"
},
{
"type": "npm-audit",
"message": "@jimp/plugin-contain: Vulnerability found",
"severity": "medium"
},
{
"type": "npm-audit",
"message": "@jimp/plugin-cover: Vulnerability found",
"severity": "medium"
},
{
"type": "npm-audit",
"message": "@jimp/plugin-crop: Vulnerability found",
"severity": "medium"
},
{
"type": "npm-audit",
"message": "@jimp/plugin-hash: Vulnerability found",
"severity": "medium"
},
{
"type": "npm-audit",
"message": "@jimp/plugin-print: Vulnerability found",
"severity": "medium"
},
{
"type": "npm-audit",
"message": "@jimp/plugin-resize: Vulnerability found",
"severity": "medium"
},
{
"type": "npm-audit",
"message": "@jimp/plugin-rotate: Vulnerability found",
"severity": "medium"
},
{
"type": "npm-audit",
"message": "@jimp/plugin-threshold: Vulnerability found",
"severity": "medium"
},
{
"type": "npm-audit",
"message": "@opentui/core: Vulnerability found",
"severity": "medium"
},
{
"type": "npm-audit",
"message": "@opentui/solid: Vulnerability found",
"severity": "low"
},
{
"type": "npm-audit",
"message": "diff: jsdiff has a Denial of Service vulnerability in parsePatch and applyPatch",
"severity": "low"
},
{
"type": "npm-audit",
"message": "file-type: file-type affected by infinite loop in ASF parser on malformed input with zero-size sub-header",
"severity": "medium"
},
{
"type": "npm-audit",
"message": "jimp: Vulnerability found",
"severity": "medium"
},
{
"file": "AGENTS.md",
"line": 150,
"type": "dangerous-command",
"message": "Dangerous command (disables permission prompts): \"bypassPermissions\"",
"severity": "medium"
}
],
"status": "PASSED",
"scannedAt": "2026-07-10T07:36:14.093Z",
"npmAuditRan": true,
"pipAuditRan": true,
"promptInjectionRan": true
}ccmux is an open-source ai agents skill for AI coding assistants such as Claude Code, Codex CLI, and ChatGPT, built by epilande. ๐ฎ Track all your AI coding agents (Claude Code, Codex, Cursor, ...) in tmux and jump to the one that needs you. It has 54 GitHub stars.
Yes. ccmux passed SkillsLLM's automated security scan โ a dependency vulnerability audit plus prompt-injection heuristics โ with no high-severity issues. You can read the full report in the Security Report section on this page.
Clone the repository with "git clone https://github.com/epilande/ccmux" and add it to your Claude Code skills directory (see the Installation section above).
ccmux is primarily written in TypeScript. It is open-source under epilande on GitHub, so you can review or fork the full source.
Yes. SkillsLLM lists many other AI Agents skills you can browse and compare side by side. Open the AI Agents category from the badge at the top of this page, or use the Related Skills and comparison links further down to weigh ccmux against similar tools.
No comments yet. Be the first to share your thoughts!
When running multiple AI coding agent sessions across tmux panes, it's hard to keep track of which session is idle, which is waiting for permission, and which pane to switch to. ccmux solves this with a background daemon that monitors session activity and an interactive TUI that shows live session states at a glance.
It works with your existing tmux workflow. You don't change how you launch or run your agents; ccmux discovers what's already running in your panes, so as long as you're in tmux with a supported agent, it just works.
Built-in support for: Claude Code, Codex, Cursor, OpenCode, Pi, Gemini CLI, plus custom agent definitions via config.
ccmux invoke for scripted one-shot agent turnsbrew install epilande/tap/ccmux
ccmux setup
Requires Bun.
git clone https://github.com/epilande/ccmux.git
cd ccmux
bun install
bun link
ccmux setup
ccmux setup installs agent hooks for authoritative session matching. ccmux works without it, but it's recommended; see Session Matching with Hooks. Bare ccmux setup only configures agents whose executable is found on PATH; use ccmux setup --agent <name> to install for a specific agent even if it isn't detected.
ccmux
[!TIP] Bind a tmux key so you can pop ccmux open from anywhere (add to
~/.tmux.conf):# Prefix + C-p: open ccmux in a centered popup bind-key C-p display-popup -E -w 80% -h 75% "ccmux" # Or skip the prefix entirely (Alt+p from any pane) bind-key -n M-p display-popup -E -w 80% -h 75% "ccmux"The picker exits after you select a session, so the popup closes itself and drops you straight into that pane. (
display-popuprequires tmux 3.2+.)
| Command | Description |
|---|---|
ccmux |
Launch interactive TUI picker (default) |
ccmux picker |
Launch TUI with options (--preview, --icons <style>) |
ccmux picker --persistent |
Dashboard mode (stay open after switching sessions) |
ccmux spawn [agent] |
Spawn a new agent session in a tmux pane |
ccmux invoke [agent] "prompt" |
Run a single agent turn and write the response to stdout (docs) |
ccmux invoke list |
List active and recently-finished invocations (-j for JSON) |
ccmux invoke cancel <id> |
Cancel a running invocation by id (idempotent) |
ccmux invoke result <id> |
Print an invocation's full captured output (subprocess agents only) |
ccmux show |
List all active sessions |
ccmux show --json |
Output sessions as JSON |
ccmux status |
Show daemon and session overview |
ccmux switch <id> |
Switch tmux client to a session's pane |
ccmux review [id] |
Review a session's diff with hunk (defaults to cwd) |
ccmux kill <id> |
Kill a session's process |
ccmux restart <id> |
Kill and resume a session |
ccmux send <id> <text> |
Send text to a session's tmux pane (multiline pastes as one message; --no-enter skips submit) |
ccmux screen [id] |
Capture pane content |
ccmux screen --grep <pattern> |
Search across all session panes |
ccmux dismiss <id> |
Remove a session from tracking |
ccmux daemon start|stop|restart|status |
Manage the background daemon |
ccmux config set <key> <value> |
Set a preference |
ccmux config get <key> |
Get a single preference value |
ccmux config list |
List all preferences |
ccmux config themes |
List built-in themes (marks the active one) |
ccmux setup |
Install hooks for every supported agent found on PATH (Claude + Codex + Cursor + OpenCode + Pi) |
ccmux setup --agent <name> |
Limit install/uninstall/status to specific agent(s); forces install even if not found on PATH |
ccmux setup --status |
Report install state without writing anything |
ccmux setup --uninstall |
Remove hooks (preserves user-owned hook entries) |
ccmux debug |
Diagnose session tracking discrepancies |
ccmux sidebar |
Launch narrow sidebar TUI (no preview/footer) |
ccmux sidebar --toggle |
Smart toggle: spawn/kill sidebars in every window across all tmux sessions |
The daemon starts automatically the first time you run a ccmux command (picker, show, invoke, etc.). It runs on 127.0.0.1:2269 and provides both a REST API and SSE event stream.
Press P to split the picker and preview the highlighted session's live pane content side by side. Press Tab to focus the preview and act in place: your keystrokes go straight to that agent's pane, so you can approve a permission, answer a question, or type a follow-up without ever leaving ccmux.
https://github.com/user-attachments/assets/7e0d42b3-4e7b-43b8-8d06-72a2d69dd694
hunk is a terminal diff reviewer. With hunk on your PATH, press d in the picker to review the selected session's working-tree diff without leaving ccmux: the picker suspends, hunk diff --watch takes over the pane in the session's repository root, and the picker resumes when hunk exits. The s