██████╗ ██████╗███╗ ███╗██╗ ██╗██╗ ██╗ ██╔════╝██╔════╝████╗ ████║██║ ██║╚██╗██╔╝ ██║ ██║ ██╔████╔██║██║ ██║ ╚███╔╝ ██║ ██║ ██║╚██╔╝██║██║ ██║ ██╔██╗ ╚██████╗╚██████╗██║ ╚═╝ ██║╚██████╔╝██╔╝ ██╗ ╚═════╝ ╚═════╝╚═╝ ╚═╝ ╚═════╝ ╚═╝ ╚═╝
ccmux — One TUI for every AI coding session
One TUI for every AI coding session —
Claude Code, Codex, Gemini CLI, on every device.
Built on tmux, Mosh + Tailscale, and your agent of choice — Claude, Codex, or Gemini. ccmux is the TUI that ties them together.
One dashboard for every session
Live state across every project and every device on your tailnet. Color-coded by state, one key to attach. The daemon holds a caffeinate lock while sessions are active, releases it when they go idle.
Pick the agent. ccmux drives it.
Each project picks its own agent and remembers it. Switch with one keystroke. The dashboard, daemon, and dispatch all follow.
@anthropic-ai/claude-code @openai/codex @google/gemini-cli
Stored per-project in .ccmux/agent. Default: Claude. Mobile push categorization via Moshi is Claude-only today; Codex / Gemini get the audible bell (still a generic iOS push).
Seamless device switching
Start on your laptop, get a push on your iPhone, attach, answer, detach. The session keeps going.
Auto-discovered over Tailscale
Install ccmux on a new device and it appears on every other device on your tailnet within seconds. No host config.
Laptop won't sleep
A background daemon holds a caffeinate lock while sessions are active. Close the lid; the agent keeps thinking.
Project notes, terminal-native
A per-project Notes tab with a tree view of docs/, markdown rendered in-pane by Glamour. Ripgrep-backed search; plain markdown on disk is the source of truth.
// never stop shipping.
Try it on your machine
Alpha today, v0.1 coming soon. macOS, Linux, or Windows via WSL2 — Go 1.22+, make bootstrap installs the rest.