A desktop application for managing multiple Claude Code sessions simultaneously. Run, monitor, and switch between independent Claude Code instances — each working on its own repository — from a single unified interface.
Live Training: I'm running a 2-day hands-on course in Toronto covering CC Director and the full Claude Code toolchain. Details and registration at sorenfrederiksen.com/training.
Mac/Linux Support (Experimental): Cross-platform backend support has been added but is largely untested -- I don't have a Mac to test on. If you'd like to see CC Director running on Mac, I'd love your help. See Help Wanted: Mac Testers below.
Download the latest release from the GitHub Releases page.
| File | Description |
|---|---|
cc-director-setup.exe |
Installer wizard (recommended -- downloads and installs everything) |
cc-director.exe |
Main application (requires .NET 10 Desktop Runtime) |
cc-*.exe |
Individual CLI tools (cc-markdown, cc-transcribe, cc-outlook, etc.) |
Mac/Linux users: Build from source (see Building). GUI not yet available -- backend only.
- Run multiple Claude Code sessions side-by-side, each in its own embedded console
- Switch between sessions instantly from the sidebar
- Drag-and-drop to reorder sessions
- Name and color-code sessions for easy identification
- Right-click context menu: Rename, Open in Explorer, Open in VS Code, Close
- Claude Code runs in a native Windows console window overlaid directly onto the WPF application
- Full interactive terminal — no emulation, no limitations
- Send prompts from a dedicated input bar at the bottom (Ctrl+Enter to submit)
- Monitors each session's state in real-time: Idle, Working, Waiting for Input, Waiting for Permission, Exited
- Color-coded status indicators on each session in the sidebar
- Powered by Claude Code's hook system — every tool call, prompt, and notification is captured
- Sessions survive app restarts — CC Director reconnects to running Claude processes on launch
- "Reconnect" button scans for orphaned
claude.exeprocesses and reclaims them - Recent sessions are remembered with their custom names and colors
- Source Control tab shows staged and unstaged changes for the active session's repository
- File tree with status indicators (Modified, Added, Deleted, Renamed, etc.)
- Current branch display with ahead/behind sync status
- Click a file to open it in VS Code
- Repositories tab for registering, cloning, and initializing Git repositories
- Clone from URL or browse your GitHub repos
- Quick-launch a new session from any registered repository
- Automatically installs hooks into Claude Code's
~/.claude/settings.json - Captures 14 hook event types: session start/end, tool use, notifications, subagent activity, task completion, and more
- Named pipe IPC (
CC_ClaudeDirector) for fast, async event delivery - Optional pipe message log panel (toggle from sidebar) for debugging and observability
- File logging to
%LOCALAPPDATA%\CcDirector\logs\ - "Open Logs" button in the sidebar for quick access
CcDirector.sln
├── CcDirector.Core # Session management, hooks, pipes, git, config (no UI dependencies)
├── CcDirector.Wpf # WPF desktop application
└── CcDirector.Core.Tests # xUnit test suite
How it works:
- CC Director spawns Claude Code with a pseudo-terminal (ConPTY on Windows, PTY on Mac/Linux)
- A relay script is installed as a Claude Code hook — it forwards hook events (JSON) over IPC
- An IPC server inside CC Director receives events, routes them to the correct session, and updates the activity state
- The UI reflects state changes in real-time via data binding
Windows Mac/Linux
------- ---------
Claude Code ──hook──▶ PowerShell relay Python relay script
│ │
Named pipe Unix domain socket
(CC_ClaudeDirector) (~/.cc-director/director.sock)
│ │
└──────────────┬────────────────────┘
▼
CC Director
│
┌───────────┴───────────┐
EventRouter Session UI
(maps session_id) (activity colors,
status badges)
- Windows 10/11
- .NET 10 SDK (or Desktop Runtime for pre-built exe)
- Claude Code CLI installed and available on PATH
- Windows Console Host as default terminal (not Windows Terminal — a warning dialog will guide you if needed)
- macOS 12+ or Linux with glibc
- .NET 10 SDK
- Claude Code CLI installed and available on PATH
- Python 3 (for hook relay script)
dotnet build src/CcDirector.Wpf/CcDirector.Wpf.csprojdotnet run --project src/CcDirector.Wpf/CcDirector.Wpf.csprojOr open CcDirector.sln in Visual Studio and run the CcDirector.Wpf project.
dotnet test src/CcDirector.Core.Tests/CcDirector.Core.Tests.csprojEdit src/CcDirector.Wpf/appsettings.json to configure:
- ClaudePath — path to the
claudeexecutable (default:"claude") - DefaultClaudeArgs — CLI arguments passed to each session (default:
"--dangerously-skip-permissions") - Repositories — seed list of repository paths to register on first launch
Session state and repository registry are persisted in ~/Documents/CcDirector/.
I've added experimental cross-platform support for macOS and Linux, but it's largely untested because I don't have a Mac available. If you're interested in running CC Director on Mac, I'd really appreciate your help getting it working. Even basic "does it build and run" feedback would be valuable.
| Component | Windows | Mac/Linux |
|---|---|---|
| Terminal backend | ConPTY | Unix PTY (openpty) |
| IPC for hooks | Named pipes | Unix domain sockets |
| Hook relay | PowerShell | Python |
| UI | WPF | Avalonia (planned) |
The core backend (CcDirector.Core) is now cross-platform. The UI layer (CcDirector.Wpf) is Windows-only, but we plan to add an Avalonia UI for Mac/Linux.
-
Clone and build on Mac:
git clone https://github.com/thefrederiksen/cc-director.git cd cc-director dotnet build src/CcDirector.Core/ -
Run the unit tests:
dotnet test src/CcDirector.Core.Tests/ -
Test the Unix PTY manually (if you're comfortable with C#):
- The
UnixPtyBackendshould spawn processes with proper terminal emulation - The
UnixSocketServershould accept connections at~/.cc-director/director.sock - The Python hook relay should send JSON to the socket
- The
-
Report issues:
- Open an issue with your macOS/Linux version, .NET version, and any error messages
- Bonus points for stack traces and reproduction steps
- No GUI yet — only the backend is cross-platform; UI requires Avalonia port
- Embedded console mode (
SessionBackendType.Embedded) is Windows-only - Untested on Apple Silicon — should work but needs verification
See docs/plan-mac-support.md for the full implementation plan.
MIT
