Ccmux — Development skill for Claude Code
Persistent, self-healing Claude Code sessions in tmux — deterministic resume, fleet self-update.
How to install Ccmux
This entry records only its repository, not the path inside it, so there is no
exact command to give. Open max-listov/ccmux and copy the folder into
~/.claude/skills/, or the file into ~/.claude/agents/.
What Ccmux does
Persistent, self-healing Claude Code sessions in tmux — deterministic resume, fleet self-update.
Alternatives in Development
- Tmux Claude Hatch — tmux plugin that runs Claude Code sessions in popups per project directory, with an fzf picker showing each se 381 ★
- Tmux Claude Session Manager — Run many Claude Code sessions across your projects, each in its own tmux session — then list them, see which a 380 ★
- Codeman — Manage Claude Code & Opencode in Tmux Sessions in a modern WebUI 329 ★
README
ccmux
**Persistent, self-healing Claude Code and Codex sessions in tmux — across a fleet of machines.**
A single daemon per machine keeps a fleet of long-running agent sessions alive in tmux: it heals crashed ones, brings them back on reboot, and resumes the *same* conversation by a pinned uuid. Sessions are full interactive provider CLI processes (`claude` or `codex`) — ccmux supervises them, it does not reimplement them. Provider-specific features remain provider-specific: for example Claude has Remote Control/statusline, while managed Codex pane chat is not yet enabled.
┌─ daemon (launchd/systemd) ─ heals every 30s, self-updates ─┐
│ tmux: cc-api cc-web cc-infra … (each = `ccmux _run` → claude|codex, auto-restart)
└────────────────────────────────────────────────────────────┘
▲ ccmux list / new / attach / send / restart … ▲ interactive TUI (bare `ccmux`)
Install
One command — installs `bun` if missing, downloads the latest verified bundle, drops a `ccmux` shim on your `PATH`, and starts a self-updating daemon:
curl -fsSL https://github.com/max-listov/ccmux/releases/latest/download/install.sh | bash
Set the RC prefix with `CCMUX_RC_PREFIX=prod` (default `local`) — **on a new machine only**. A machine that already has a `machine.json` keeps its identity: the installer reads the prefix rather than re-declaring it, and refuses a rename outright, because the prefix is the machine's fleet name and changing it renames every session's Remote Control identity.
That is what makes this the **repair** command as well as the install command. Every step converges: the bundle is fetched only when the bytes on disk differ from the manifest, the shim and boot unit are written only when they say the wrong thing, and nothing restarts unless something actually changed. On a healthy machine it prints *nothing to do* and writes no files. Point it at a machine whose bundle was deleted and it comes back whole.
Requires macOS (
Related Skills
Seamkeeper
A self-healing continuity protocol for a personal coding agent: Telegram, tmux, memory, watchdogs, and recover
Remote Control Daemons
Automated, persistent, and self-healing systemd services and health watchdog for Claude Code and Codex remote
Detach
Run Codex and Claude Code reliably in the background on macOS—with a native dashboard, persistent tmux session
Resume Fleet
Auto-resume a fleet of Claude Code CLI sessions that hit the usage limit. A hands-off launchd daemon (recommen
Fleet History
/fleet-history — browse & resume closed sessions (landed + unlanded + scratch)
Resilient Coding Agent Skill
Run long-running coding agents (Codex, Claude Code, etc.) in tmux sessions that survive restarts, with automat
Related Agents
Agent Evolution
Agent self-improvement coordinator — use after sessions to review what was learned, update KNOWLEDGE sections
Codex Orchestrator
CLI tool for delegating tasks to GPT Codex agents via tmux sessions. Designed for Claude Code orchestration wi
Fullstack Test Automator
Master AI-powered test automation with modern frameworks, self-healing tests, and comprehensive quality engine