Baike.dev
All toolsAI codingTrendingOpen sourceNewsSubmit
Log in
< Back to tools
C

ccmanager

> AI 编程
Open source

Coding Agent Session Manager for Claude Code / Gemini CLI / Codex CLI / Cursor Agent / Copilot CLI / Cline CLI / OpenCode / Kimi CLI

1.2K stars0 likes0 views
WebsiteGitHub

About

Coding Agent Session Manager for Claude Code / Gemini CLI / Codex CLI / Cursor Agent / Copilot CLI / Cline CLI / OpenCode / Kimi CLI

CCManager - AI Code Agent Session Manager

CCManager is a CLI application for managing multiple AI coding assistant sessions (Claude Code, Gemini CLI, Codex CLI, Cursor Agent, Copilot CLI, Cline CLI, OpenCode, Kimi CLI) across Git worktrees and projects.

https://github.com/user-attachments/assets/15914a88-e288-4ac9-94d5-8127f2e19dbf

Features

  • Run multiple AI assistant sessions in parallel across different Git worktrees
  • Multi-project support: Manage multiple git repositories from a single interface
  • Support for multiple AI coding assistants (Claude Code, Gemini CLI, Codex CLI, Cursor Agent, Copilot CLI, Cline CLI, OpenCode, Kimi CLI)
  • Switch between sessions seamlessly
  • Visual status indicators for session states (busy, waiting, idle)
  • Create, merge, and delete worktrees from within the app
  • Restore sessions after a restart: reopen the sessions that were running when CCManager last exited or crashed
  • Copy Claude Code session data between worktrees to maintain conversation context
  • .worktreeinclude support: carry gitignored project files (.env, local certs) into newly created worktrees
  • Configurable keyboard shortcuts
  • Command presets with automatic fallback support
  • Configurable state detection strategies for different CLI tools
  • Status change hooks for automation and notifications
  • Devcontainer integration
  • Auto Approval (experimental): Automatically approve safe prompts using AI verification

Why CCManager over Claude Squad?

Both tools solve the same problem - managing multiple Claude Code sessions - but take different approaches.

If you love tmux-based workflows, stick with Claude Squad! It's a great tool that leverages tmux's power for session management.

CCManager is for developers who want:

No tmux dependency

CCManager is completely self-contained. No need to install or configure tmux - it works out of the box. Perfect if you don't use tmux or want to keep your tmux setup separate from Claude Code management.

️ Real-time session monitoring

CCManager shows the actual state of each Claude Code session directly in the menu:

  • Waiting: Claude is asking for user input
  • Busy: Claude is processing
  • Idle: Ready for new tasks

Claude Squad doesn't show session states in its menu, making it hard to know which sessions need attention. While Claude Squad offers an AutoYes feature, this bypasses Claude Code's built-in security confirmations - not recommended for safe operation.

Simple and intuitive interface

Following Claude Code's philosophy, CCManager keeps things minimal and intuitive. The interface is so simple you'll understand it in seconds - no manual needed.

Install

npm install -g ccmanager

Local Development

npm install
bun run build
npm start

Usage

ccmanager

Or run without installing:

npx ccmanager

Keyboard Shortcuts

Default Shortcuts

  • Ctrl+E: Return to menu from active session
  • Escape: Cancel/Go back in dialogs

Customizing Shortcuts

You can customize keyboard shortcuts in two ways:

  1. Through the UI: Select Global Configuration → Configure Shortcuts from the main menu
  2. Configuration file: Edit ~/.config/ccmanager/config.json or .ccmanager.json for per-project settings (see Per-Project Configuration)

Example configuration:

// config.json (new format)
{
  "shortcuts": {
    "returnToMenu": {
      "ctrl": true,
      "key": "r"
    },
    "cancel": {
      "key": "escape"
    }
  }
}

Note: Shortcuts from shortcuts.json will be automatically migrated to config.json on first use.

Restrictions

  • Shortcuts must use a modifier key (Ctrl) except for special keys like Escape
  • The following key combinations are reserved and cannot be used:
    • Ctrl+C
    • Ctrl+D
    • Ctrl+[ (equivalent to Escape)

Per-Project Configuration

CCManager supports per-project configuration by placing a .ccmanager.json file in your git repository root. Project settings are merged with the global config (~/.config/ccmanager/config.json), with project settings always taking priority.

For detailed configuration options and examples, see docs/project-config.md.

Configuring with an AI coding agent

This repository doubles as a plugin marketplace providing the ccmanager-config skill, which teaches Claude Code or Codex the whole configuration schema and ships a validator for it:

# Claude Code
claude plugin marketplace add kbwo/ccmanager
claude plugin install ccmanager-config@ccmanager

# Codex CLI
codex plugin marketplace add kbwo/ccmanager
codex plugin add ccmanager-config@ccmanager

Then just ask — "set this repo up to run codex in ccmanager", "notify me when a session is waiting for input", "why is my .ccmanager.json being ignored?". See plugins/ccmanager-config/README.md.

Supported AI Assistants

CCManager supports multiple AI coding assistants with tailored state detection for each:

Assistant Command Installation
Claude Code (Default) claude code.claude.com
Gemini CLI gemini github.com/google-gemini/gemini-cli
Codex CLI codex github.com/openai/codex
Cursor Agent cursor-agent cursor.com/cli
Copilot CLI copilot github.com/github/copilot-cli
Cline CLI cline github.com/cline/cline
OpenCode opencode opencode.ai/docs
Kimi CLI kimi kimi-cli.com
MiniMax Code (MCode) mcode npmjs.com/package/@minimax-ai/code

Each assistant has its own state detection strategy to properly track:

  • Idle: Ready for new input
  • Busy: Processing a request
  • Waiting: Awaiting user confirmation

See Gemini Support Documentation for CCManager-specific configuration.

Command Configuration

CCManager supports configuring the command and arguments used to run Claude Code sessions, with automatic fallback options for reliability.

Features

  • Configure the main command (default: claude)
  • Set primary arguments (e.g., --resume)
  • Define fallback arguments if the primary configuration fails
  • Automatic retry with no arguments as final fallback

Quick Start

  1. Navigate to Global Configuration → Configure Command Presets
  2. Set your desired arguments (e.g., --resume for resuming sessions)
  3. Optionally set fallback arguments
  4. Save changes

For detailed configuration options and examples, see docs/command-config.md.

Claude Code Teammate Mode

When running the claude command with the default (claude) detection strategy, CCManager automatically appends --teammate-mode in-process to the CLI arguments. This prevents conflicts between Claude Code's agent teams feature and ccmanager's PTY-based session management.

  • Automatic: No configuration needed. CCManager injects the flag for all claude command sessions.
  • Override: If you explicitly specify --teammate-mode in your preset args, your value takes priority.
  • Non-claude commands: Other AI assistants (Gemini, Codex, etc.) are not affected.

Setting "teammateMode": "in-process" in Claude Code's settings.json alone is not sufficient when running inside a tmux-like environment, which is why CCManager controls this via the CLI argument.

Session Data Copying

CCManager can copy Claude Code session data (conversation history, context, and project state) when creating new worktrees, allowing you to maintain context across different branches.

Features

  • Seamless Context Transfer: Continue conversations in new worktrees without losing context
  • Configurable Default: Set whether to copy session data by default
  • Per-Creation Choice: Decide on each worktree creation whether to copy data
  • Safe Operation: Copying is non-fatal - worktree creation succeeds even if copying fails

How It Works

When creating a new worktree, CCManager:

  1. Asks whether to copy session data from the current worktree
  2. Copies all session files from ~/.claude/projects/[source-path] to ~/.claude/projects/[target-path]
  3. Preserves conversation history, project context, and Claude Code state
  4. Allows immediate continuation of conversations in the new worktree

Configuration

  1. Navigate to Global Configuration → Configure Worktree
  2. Toggle Copy Session Data to set the default behavior
  3. Save changes

The default choice (copy or start fresh) will be pre-selected when creating new worktrees.

Use Cases

  • Feature Development: Copy session data when creating feature branches to maintain project context
  • Experimentation: Start fresh when testing unrelated changes
  • Collaboration: Share session state across team worktrees
  • Context Preservation: Maintain long conversations across multiple development branches

Copying Gitignored Files into New Worktrees

A new Git worktree contains only tracked files, so gitignored files a project needs in order to run — .env, local certificates, generated local config — do not come along. If the repository root has a .worktreeinclude file (gitignore syntax) listing those files, CCManager copies them into every worktree it creates.

  • Shared convention: same file name and semantics as Claude Code, Conductor, OpenAI Codex, and git-worktreeinclude, so an existing .worktreeinclude works with CCManager unchanged
  • No configuration: the copy runs whenever a .worktreeinclude file exists
  • Safe by construction: a file is copied only if it both matches a pattern and is actually gitignored, so tracked files are never duplicated
  • Hook-friendly: files are copied before the post-creation worktree hook runs, so hook commands can rely on them

For pattern syntax, the exact selection rule, and troubleshooting, see docs/worktree-include.md.

Restoring Sessions After a Restart

Closing CCManager kills the AI assistant processes it started, so reopening it normally means finding each worktree again and starting each session by hand. To avoid that, CCManager keeps a record of the sessions it currently has open, and on the next start offers to launch them again:

Restore previous sessions

Found 2 sessions from the last time ccmanager ran. Start them again?

  feature-login — Main
  fix-timeout (review) — Codex

> Restore
  Don't restore
  • What is restored: each session's command preset is run again in its worktree, under the name you had given it. The previous terminal output and the conversation held inside the assistant are not restored — restoring means starting the same command again, not resuming where it left off. (To carry conversation context into a new worktree, see Session Data Copying.)
  • Survives a crash: the record is written as sessions come and go, not on exit, so a crash, a kill -9, or a closed terminal leaves it intact.
  • Only sessions that were still open: a session you killed, or one whose command exited on its own, is dropped from the record and is not offered.
  • Declining is remembered: choosing "Don't restore" forgets those sessions, so the offer does not come back on the next start.
  • Scope: normally only the repository you are opening is considered. In Multi-Project Mode the sessions of every recorded project are offered together at startup.
  • Other running instances: sessions belonging to another CCManager that is still open are

Issues· 0 open

View all issuesOpen on GitHub

No open issues yet, or sync has not completed.

> Tags

TypeScriptclaudeclaude-codeclicline

No comments yet. Be the first to share.

> Details

PublishedAug 1, 2026
UpdatedSep 17, 2026
CategoryAI 编程
PricingOpen source

> Related tools

G
GitHub Copilot
GitHub 官方 AI 编程助手,覆盖补全、Chat 与 Agent 模式。
C
Cursor
AI 原生代码编辑器,对话改代码、多文件 Agent 与规则体系是其核心。
S
skills
Skills for Real Engineers. Straight from my .agents directory.