Terminal UI to navigate, resume, and start Claude Code sessions across all your projects
Project description
ccmgr — Claude Code session manager
A terminal UI to navigate, resume, and start Claude Code sessions across all your projects from one place. ccmgr lives in the left pane of a tmux window; the right pane shows the currently-active claude. Each claude session runs as its own detached tmux session in the background, so switching between sessions preserves all in-progress work — no responses or tool calls are interrupted.
Install
pip install ccmgr
Requires Python 3.12+ and tmux on PATH.
Run
ccmgr
If you're not already inside a tmux session, ccmgr will launch one automatically (tmux new-session -A -s ccmgr). The right pane shows the currently-active claude; each claude session also exists as a detached tmux session in the background. Switching sessions in ccmgr re-attaches the right pane to a different background claude.
Keys
| Key | Action |
|---|---|
↑ / ↓ |
Move selection within the focused pane |
Tab / Shift-Tab |
Switch focus between Projects and Sessions panes |
Enter |
Resume or start the selected session — claude opens (or re-attaches) in the right pane |
Ctrl-B then ← |
Move focus back to ccmgr from the right pane |
Ctrl-B then → |
Move focus to the claude pane |
/ |
Filter the focused pane |
i |
Popup with the focused session's details (title, project, msgs, tokens) |
? |
Full help popup |
q or Ctrl-C |
Quit (kills the right tmux pane + auto-launched tmux session) |
In the right pane, keystrokes go directly to claude — full color, full TUI. Tasks keep running even when you switch the right pane to another session, because each claude lives in its own detached tmux session. Press Ctrl-B ← to return to ccmgr on the left.
How it works
ccmgr reads ~/.claude/projects/* (Claude's per-project session history) and lists everything. Pressing Enter on a session does two things: (1) if a detached tmux session named cc-<short_id> running claude --resume <id> doesn't already exist, ccmgr creates one with tmux new-session -d; (2) ccmgr's right pane runs tmux attach -t cc-<short_id> so you see and interact with that claude. Switching sessions just respawns the right pane to attach to a different background tmux session — the detached claudes keep running with all their state intact.
Roadmap
Planned for future releases:
- Cross-session search across projects
- Cost and token-usage dashboard
- Mouse support
- Renaming and closing individual sessions from within ccmgr
Issues and pull requests welcome.
Configuration
Optional config at ~/.config/ccmgr/config.toml:
[claude]
binary = "claude"
[live]
poll_interval_ms = 1000
live_badge_seconds = 60
Project details
Release history Release notifications | RSS feed
Download files
Download the file for your platform. If you're not sure which to choose, learn more about installing packages.
Source Distribution
Built Distribution
Filter files by name, interpreter, ABI, and platform.
If you're not sure about the file name format, learn more about wheel file names.
Copy a direct link to the current filters
File details
Details for the file ccmgr-0.1.3.tar.gz.
File metadata
- Download URL: ccmgr-0.1.3.tar.gz
- Upload date:
- Size: 25.6 kB
- Tags: Source
- Uploaded using Trusted Publishing? No
- Uploaded via: twine/6.2.0 CPython/3.12.3
File hashes
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
649a02b9ab95df8bd1eb70f1807d8fd6e92e03ef68ea0efe77eed8259c34290c
|
|
| MD5 |
9c3dae421c68ff7d15c1657a2c8f6464
|
|
| BLAKE2b-256 |
5d2334d2ad9174747f84e3444dcd80246040e28fdbc51ee74cb4de812ef3272b
|
File details
Details for the file ccmgr-0.1.3-py3-none-any.whl.
File metadata
- Download URL: ccmgr-0.1.3-py3-none-any.whl
- Upload date:
- Size: 27.1 kB
- Tags: Python 3
- Uploaded using Trusted Publishing? No
- Uploaded via: twine/6.2.0 CPython/3.12.3
File hashes
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
8913a8775175ff373a1025e6235d2cf6c6e5b6f786677f2d3f7529fe1579ce08
|
|
| MD5 |
767a56381c46eedfc8ecf528a28b32ef
|
|
| BLAKE2b-256 |
b83dd645ad64a8afcf7ff57132c850b4eec18502ee803887bc751b8c10f49e97
|