CCManager's multi-project mode allows you to manage multiple git repositories from a single interface, making it easy to work across different projects without running multiple CCManager instances.
In multi-project mode, CCManager discovers all git repositories within a specified root directory and presents them in an organized interface. You can quickly switch between projects, manage their worktrees, and maintain active AI assistant sessions across all projects simultaneously.
Multi-project mode requires setting the CCMANAGER_MULTI_PROJECT_ROOT environment variable:
export CCMANAGER_MULTI_PROJECT_ROOT="/path/to/your/projects"This should point to a directory containing your git repositories. CCManager will recursively search this directory for all git projects.
npx ccmanager --multi-projectIf the environment variable is not set, CCManager will display an error message with instructions.
CCManager automatically discovers git repositories by:
- Recursively scanning the root directory
- Identifying directories containing
.gitfolders - Excluding git worktrees (they're managed separately within their parent project)
- Caching discovered projects for better performance
Frequently accessed projects are tracked and displayed at the top of the project list:
- Projects are automatically added to recent list when selected
- Recent projects persist between sessions
- Stored in
~/.config/ccmanager/recent-projects.json - No limit on the number of recent projects shown
Both the project list and worktree menu support Vi-like search:
- Press
/to enter search mode - Type to filter items in real-time
- Press
ESCto cancel and clear the search - Press
Enterto exit search mode while keeping the current filter - Use arrow keys to navigate filtered results
CCManager maintains separate session managers for each project:
- Sessions persist when switching between projects
- Each project tracks its own active, busy, and waiting sessions
- Session counts are displayed in the format
[active/busy/waiting] - Sessions continue running in the background when navigating away
-
Project List View
- Shows all discovered projects
- Recent projects appear at the top
- All other projects listed alphabetically below
- Number keys (0-9) for quick selection
Rto refresh project listQto quit
-
Worktree Menu
- Shows all worktrees for the selected project
- Session counts displayed for the project
- Standard worktree operations available
Bto go back to project list- Number keys (0-9) for quick worktree selection
-
Session View
- Full terminal emulation with your AI assistant
- Standard session controls apply
- Handles project discovery and caching
- Manages recent projects list
- Provides project filtering and search
- Maintains session managers for all projects
- Coordinates session lifecycle across projects
- Provides session count aggregation
- Displays discovered projects with search
- Handles project selection
- Shows recent projects section
interface GitProject {
path: string; // Absolute path to git repository
name: string; // Project name (directory name)
relativePath: string; // Path relative to root directory
isValid: boolean; // Whether it's a valid git repo
}
interface RecentProject {
path: string; // Absolute path
name: string; // Project name
lastAccessed: number; // Unix timestamp
}Multi-project configuration is stored in platform-specific locations:
- Linux/macOS:
~/.config/ccmanager/ - Windows:
%APPDATA%/ccmanager/
The recent-projects.json file maintains the list of recently accessed projects:
[
{
"path": "/home/user/projects/my-app",
"name": "my-app",
"lastAccessed": 1703001234567
},
{
"path": "/home/user/projects/another-project",
"name": "another-project",
"lastAccessed": 1703001234566
}
]- Projects are discovered in parallel using a worker pool pattern
- Discovery results are cached to avoid repeated filesystem operations
- Common ignore patterns (node_modules, .git internals) are skipped
- Only active project's sessions are in the foreground
- Background sessions consume minimal resources
- Session state is preserved when switching projects
- Verify the directory contains a
.gitfolder - Check that
CCMANAGER_MULTI_PROJECT_ROOTpoints to the correct directory - Try refreshing the project list with
R - Ensure you have read permissions for the directories
If you see "CCMANAGER_MULTI_PROJECT_ROOT environment variable is not set":
- Set the environment variable:
export CCMANAGER_MULTI_PROJECT_ROOT="/your/path" - Add it to your shell profile for persistence
- Ensure the path exists and is accessible
If project discovery is slow:
- Consider using a more specific root directory
- Exclude large non-project directories from the root path
- Check for symbolic links causing circular references
- Organize Projects: Keep git repositories in a dedicated directory structure
- Use Recent Projects: Take advantage of the recent projects feature for quick access
- Keyboard Navigation: Learn the number key shortcuts for faster navigation
- Search Efficiently: Use
/search to quickly filter large project lists - Session Management: Be aware that sessions continue running when you switch projects
Multi-project mode works seamlessly with all existing CCManager features:
- Command presets apply to all projects
- Status hooks work across all sessions
- Keyboard shortcuts remain consistent
- Worktree operations function normally within each project
- Devcontainer support works per-project
Planned improvements for multi-project mode:
- Project grouping and categorization
- Global session overview across all projects
- Project-specific configuration overrides
- Batch operations across multiple projects
- Project templates and initialization