Skip to content

wuxiran/cc-pane

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

133 Commits
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 

CC-Panes

Multi-instance split-pane manager for Claude Code — a cross-platform desktop app built with Tauri 2.

License: GPL-3.0 Built with Tauri React 19 TypeScript

中文文档

Download

Pre-built Windows installer is available on the GitHub Releases page. Download the latest .exe installer and run it to get started.

For other platforms, you can build from source.

What is CC-Panes?

CC-Panes lets you run multiple Claude Code CLI instances side by side in a split-pane terminal layout. Organize your AI-powered development workflow with workspaces, projects, and tasks — all from a single desktop app.

Features

  • Split-Pane Terminal — Run multiple terminals in flexible horizontal/vertical split layouts with drag-to-resize
  • Workspace Management — Organize projects into workspaces with pinning, hiding, and reordering
  • Built-in Terminal — Full-featured terminal (xterm.js + PTY) with multi-tab support
  • Claude Code Integration — Launch Claude Code sessions, resume conversations, manage providers, and self-dialogue mode
  • Git Integration — Branch status, pull/push/fetch/stash, worktree management, and git clone
  • Session Management — Track launch history with recent launches panel, clean broken sessions, and resume previous work
  • Local History — File version tracking with diff view, labels, branch-aware snapshots, and restore
  • File Browser — Project file tree with search, create, rename, delete, copy, and move operations
  • Code Editor — Monaco-based editor with 60+ language support, Markdown preview, and image preview
  • Quick Search — Global file search (Ctrl+K) across all workspace projects
  • Screenshot — Region capture with global shortcut, multi-monitor support, and clipboard copy
  • Session Journal — Workspace-level session logging
  • Todo & Plans — Task management with priorities, subtasks, and plan archiving
  • Memory & Skills — Manage Claude memories and custom skills per project
  • MCP Server Config — Configure MCP servers per project
  • Hooks/Workflows — Workspace-level hook system for automation
  • Provider Management — Multiple API provider support (Anthropic, Bedrock, Vertex, proxy, config profiles)
  • Directory Scan Import — Batch import Git repositories from a directory
  • Theme Support — Light/dark mode with glassmorphism design
  • Borderless, Mini & Fullscreen — Frameless window mode, compact mini view, and F11 fullscreen toggle
  • System Tray — Minimize to tray with status monitoring
  • Desktop Notifications — Session exit, waiting-for-input, and todo reminder alerts with debounce
  • Keyboard Shortcuts — Customizable shortcuts for all major actions
  • i18n — English and Chinese (Simplified) interface

Architecture

┌─────────────────────────────────────────────────────────────┐
│  React Frontend                                             │
│  ┌──────────┐ ┌──────────┐ ┌──────────┐ ┌───────────────┐  │
│  │ Sidebar  │ │ Panes    │ │ Panels   │ │ UI Components │  │
│  └────┬─────┘ └────┬─────┘ └────┬─────┘ └───────────────┘  │
│       │             │            │                           │
│  ┌────┴─────────────┴────────────┴────┐                     │
│  │  Services (invoke) + Stores        │                     │
│  └────────────────┬───────────────────┘                     │
├───────────────────┼─────────────────────────────────────────┤
│  Tauri IPC        │                                         │
├───────────────────┼─────────────────────────────────────────┤
│  Rust Backend     │                                         │
│  ┌────────────────┴───────────────────┐                     │
│  │  Commands → Services → Repository  │                     │
│  └────────────────┬───────────────────┘                     │
│  ┌────────────────┴───────────────────┐                     │
│  │  SQLite / File System / PTY        │                     │
│  └────────────────────────────────────┘                     │
└─────────────────────────────────────────────────────────────┘

Tech Stack

Layer Technology Purpose
Desktop Framework Tauri 2 Rust backend + system WebView
Frontend React 19 + TypeScript UI components
State Management Zustand 5 + Immer Immutable state updates
UI Library shadcn/ui + Radix UI Component library
Styling Tailwind CSS 4 Utility-first CSS
Terminal xterm.js + portable-pty Frontend rendering + backend PTY
Split Panes Allotment Resizable split layout
Data Storage SQLite (rusqlite) Local persistence
Icons Lucide React SVG icons
Build Tool Vite 6 Frontend bundler

Prerequisites

Getting Started

# Clone the repository
git clone https://github.com/wuxiran/cc-pane.git
cd cc-pane

# Install frontend dependencies
npm install

# Run in development mode (frontend + Rust backend)
npm run tauri:dev

Build

# Build the production app
npm run tauri build

The built application will be in src-tauri/target/release/bundle/.

Development

# Frontend type check
npx tsc --noEmit

# Run frontend tests
npm run test:run

# Rust check
cargo check --workspace

# Rust lint
cargo clippy --workspace -- -D warnings

# Rust format check
cargo fmt --all -- --check

# Run Rust tests
cargo test --workspace

Dev/Release Isolation

Dev and release builds are fully isolated via cfg!(debug_assertions) and can run simultaneously:

Dev (npm run tauri:dev) Release (npm run tauri build)
Data directory ~/.cc-panes-dev/ ~/.cc-panes/
Identifier com.ccpanes.dev com.ccpanes.app
Window title CC-Panes [DEV] CC-Panes

Project Structure

cc-panes/
├── web/                    # React frontend source
│   ├── components/         # React components
│   │   ├── panes/          # Split-pane terminal components
│   │   ├── sidebar/        # Sidebar components
│   │   ├── providers/      # Provider management UI
│   │   └── ui/             # shadcn/ui base components
│   ├── stores/             # Zustand state management
│   ├── services/           # Frontend service layer (invoke wrappers)
│   ├── hooks/              # Custom React hooks
│   ├── types/              # TypeScript type definitions
│   ├── i18n/               # Internationalization
│   ├── lib/                # Shared frontend helpers
│   └── utils/              # Utility functions
│
├── src-tauri/              # Tauri Rust backend
│   └── src/
│       ├── commands/        # Tauri IPC command handlers
│       ├── services/        # Business logic layer
│       ├── repository/      # Data access layer (SQLite)
│       ├── models/          # Data models
│       └── utils/           # Utilities (AppPaths, AppError)
│
├── cc-panes-*/             # Shared Rust workspace crates
└── docs/                   # Architecture docs, examples, and assets

Frontend imports use the @/ alias, which resolves to web/.

Feedback

Found a bug or have a suggestion? Join the WeChat group:

WeChat Group: cc-pane

Contributing

Contributions are welcome! Please read CONTRIBUTING.md for guidelines.

License

This project is licensed under the GNU General Public License v3.0.

Acknowledgments

  • Tauri — Desktop application framework
  • Claude Code — AI coding assistant by Anthropic
  • xterm.js — Terminal emulator for the web
  • shadcn/ui — UI component library

About

Multi-instance split-pane manager for Claude Code — a cross-platform desktop app built with Tauri 2

Resources

License

Code of conduct

Contributing

Stars

Watchers

Forks

Packages

 
 
 

Contributors