Skip to main content

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 Cycle focus through the Projects, Sessions, and Running panes (focused pane gets a bright cyan border)
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

Metadata

Release files for ccmgr 0.1.5

For a detailed explanation of source distributions (sdists) and built distributions (wheels), please see the package formats documentation.

Source distribution (sdist)

Source distribution for ccmgr 0.1.5
File Size Uploaded
ccmgr-0.1.5.tar.gz 28.0 kB Details

Built distribution (wheel)

Table of built distributions (wheels) for ccmgr 0.1.5
File Interpreter ABI Platform
ccmgr-0.1.5-py3-none-any.whl Python 3 none any Details

Total release size: 57.5 kB

Release files / ccmgr-0.1.5.tar.gz

Download URL ccmgr-0.1.5.tar.gz
Size 28.0 kB
Tags Source
SHA-256 checksum
How to use checksums
0dcada5a88fef5b73967beaf052f2fecaa54743b8fd2ff8879bf36d157ff89d7
BLAKE2b-256 checksum
How to use checksums
3aabde995a312ea9521b8df08dfb3ba31b884924abdece118eae730d06dd130b
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
Yes
Uploaded via twine/6.1.0 CPython/3.13.12

Provenance

Provenance describes where a file came from. On PyPI, provenance is shared via attestations, which provide a verifiable record of the build or publishing details. View details, limitations and caveats.

PyPI Publish Attestation

PyPI verified that this artifact, at this checksum, originated from the publisher listed below.

Signed by GitHub Actions, verified by PyPI on May 22, 2026.

Transparency log

Release files / ccmgr-0.1.5-py3-none-any.whl

Download URL ccmgr-0.1.5-py3-none-any.whl
Size 29.6 kB
Tags Python 3
SHA-256 checksum
How to use checksums
e355f02ca3f546c6ba88ee7e906cf6a6d769565a934e934f0c93fe5f543b1119
BLAKE2b-256 checksum
How to use checksums
8906cf51db21b075e2d587bb0fc6adf9d0d898499b459b4e33544b17f03190a2
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
Yes
Uploaded via twine/6.1.0 CPython/3.13.12

Provenance

Provenance describes where a file came from. On PyPI, provenance is shared via attestations, which provide a verifiable record of the build or publishing details. View details, limitations and caveats.

PyPI Publish Attestation

PyPI verified that this artifact, at this checksum, originated from the publisher listed below.

Signed by GitHub Actions, verified by PyPI on May 22, 2026.

Transparency log

Release history Release notifications | RSS feed

This release

0.1.5 This release

2 release files

0.1.4

2 release files

0.1.3

2 release files

Anthropic, PBC Visionary sponsor Bloomberg Visionary sponsor Hudson River Trading Visionary sponsor Meta Visionary sponsor NVIDIA Visionary sponsor Microsoft Sustainability sponsor Depot Continuous Integration AWS Cloud computing and Security Sponsor Datadog Monitoring Fastly CDN Google Download Analytics Sentry Error logging StatusPage Status page