ccmgr
v0.1.3RUST TUImacOS / Linux

CLAUDE CODE SESSION MANAGER

Your sessions,
without the archaeology.

Browse, live-filter, rename, delete, and resume Claude Code sessions with age, Git branch, and log-size context. No account, no indexer, no background service.

SESSION SOURCE
~/.claude/projects
DEFAULT SCOPE
current project
RUNTIME
one native binary

One command.
One native binary.

Use the E-Rail mirror, npm, or build from source. The install script selects the matching macOS or Linux release for x86_64 or ARM64.

RECOMMENDEDE-Rail mirrorlatest GitHub release
$ curl -fsSL https://e-rail.github.io/ccmgr/install.sh | bash

Installs to ~/.local/bin by default. Set CCMGR_INSTALL_DIR to choose another destination.

PACKAGEnpmglobal command
$ npm install -g ccmgr

The npm package downloads the native release matching the package version and exposes the ccmgr command.

TOOLCHAINBuild from sourceRust / Cargo
$ cargo install --path .

Clone the repository and compile the release locally with the Rust toolchain.

Darwin · x86_64Darwin · aarch64Linux · x86_64Linux · aarch64

Find the thread.
Get back to work.

ccmgr keeps the interaction deliberately small: select a scope, narrow the list, then resume or maintain the session you need.

01

Filter with context

Start typing to filter by title. Each row shows relative age, Git branch when present, and JSONL log size.

02

Resume in context

Press Enter to run claude --resume <id> from the session’s original working directory.

03
Aa

Rename append-only

Renaming appends a new ai-title event to the JSONL log, matching Claude Code’s own convention.

04

Switch scope

Use Tab to move between the current project and every project; all-project rows also show the recorded working directory.

05

Delete with confirmation

Ctrl+D asks first, then removes the session log and its file-history sidecar directory. Rename, delete, and resume statuses clear after three seconds.

06

Update in place

Run ccmgr update to fetch the latest matching release and atomically replace the current non-npm binary.

Local files in.
Terminal actions out.

No database, account, or resident process sits between ccmgr and the session files Claude Code already maintains.

01DISCOVER~/.claude/projects

Locate project directories in Claude Code’s local session store.

02PARSE*.jsonl

Read titles, working directories, IDs, Git branches, modification times, and log sizes.

03ACTclaude --resume

Hand the selected session back to the Claude Code CLI.

NO DAEMONNothing waits in the background.

The binary scans on launch and when the session list needs to reload.

NO REINDEXClaude Code remains the source.

ccmgr reads the existing JSONL logs instead of maintaining a second session database.

NO PATH GUESSINGResume from the recorded cwd.

The original working directory is used when handing a session back to the CLI.

SMALL RELEASEOptimized as a native binary.

The Rust release profile enables size optimization, LTO, stripping, and one codegen unit.

Stay on the keyboard.

The whole manager is designed around a short, visible set of terminal controls.

KEYACTION
Move selection
typeLive-filter by title
EnterResume selected session
Ctrl + RRename selected session
Ctrl + DDelete after confirmation
TabToggle current / all projects
Ctrl + CQuit

Less session hunting.
More building.

Read the Rust source, inspect the installer, or open the terminal and pick up where you left off.