Skip to content

Latest commit

 

History

33 Commits

Folders and files

NameName
Last commit message
Last commit date
 
 
 
 
 
 
 
 
 
 
 
 
 
 

Repository files navigation

CDC

Orchestrate multiple Claude Code sessions from a single terminal.

Why · Features · Getting Started · Usage · Architecture

Rust License: MIT Stars


┌──────────────────┬──────────────────┬──────────────[X]─┐
│                  │                  │                   │
│  Pane 1          │  Pane 2          │  Pane 3           │  80%
│  claude          │  claude          │  /bin/zsh         │
│                  │                  │                   │
├──────────────────┴──────────────────┴───────────────────┤
│                                                         │
│  Orchestrator — Ctrl+R: voice                      20%  │
│  claude                                                 │
│                                                         │
└─────────────────────────────────────────────────────────┘

Why

AI-assisted development rarely fits in one terminal. You might want one Claude planning architecture while another writes tests, a third refactors a module, and a plain shell runs builds — all on the same codebase at the same time.

CDC gives you a single terminal that acts as a control plane: one orchestrator coordinates N panes, voice commands route tasks hands-free, and smart alerts surface permission requests before they block progress.

Features

Multi-pane orchestration
  • One orchestrator + N independent panes (Claude Code or plain terminal)
  • 3-step pane creation: directory picker → Claude/Terminal mode → permission mode
  • Fuzzy directory search with VS Code-style ↑↓/Tab picker
  • Mouse click or Ctrl+19 to switch focus
  • Ctrl+Z fullscreen toggle, [X] close button on each pane
  • Mouse drag text selection with clipboard copy
Full terminal emulation
  • Complete VTE parser: SGR colors, cursor movement, scroll regions, DECAWM, alternate screen save/restore
  • 10K-line scrollback buffer
  • Korean/CJK wide-character and IME support
  • 60 fps rendering via ratatui
Voice input and routing
  • Ctrl+R toggles local microphone recording
  • Transcribed by faster-whisper (ghost613/faster-whisper-large-v3-turbo-korean) — no audio leaves the machine
  • Editable confirmation dialog before execution — fix STT errors, then Enter to send
  • Speak "페인 1에게 테스트 작성해" to route commands to specific panes
  • Correction detection: "아니 그거 말고 빌드해" extracts only the final intent
  • Voice CDC commands: "새 페인 만들어" opens the pane creation dialog
Mic → cpal → faster-whisper (Korean) → editable confirm dialog
  → extract_last_intent() → parse_worker_route() → Pane N PTY
Session management
  • Ctrl+S saves layout and working directories to ~/.cdc/sessions/
  • cdc --restore <name> recreates the exact session
  • Sessions stored as JSON, archivable
Smart alerts
  • Detects Claude permission prompts in any pane
  • Pane border blinks red until resolved
  • Voice state shown inline: [REC] Ctrl+R: stop, [STT...]
  • Interactive confirm dialogs with mouse click and ↑↓/Enter

Getting started

Prerequisites

Requirement Install
Rust (edition 2024) rustup.rs
Claude Code CLI npm install -g @anthropic-ai/claude-code

Build

git clone https://github.com/UnripePlum/claude-development-cli
cd claude-development-cli
cargo build --release

Voice setup (optional)

python3 -m venv .venv
source .venv/bin/activate
pip install faster-whisper

The Korean STT model (~2 GB) downloads automatically on first Ctrl+R use.

Usage

./target/release/cdc                  # start new session
./target/release/cdc --restore proj   # restore saved session
./target/release/cdc --cwd ~/repo     # start in specific directory
./target/release/cdc --setup          # check environment

Keybindings

Key Action
Ctrl+N Add pane (3-step: directory → Claude/Terminal → permissions)
Ctrl+W Close focused pane
Ctrl+O Focus orchestrator
Ctrl+19 Focus pane N
Ctrl+Z Fullscreen toggle
Ctrl+S Save session
Ctrl+R Voice recording toggle
Ctrl+Q Quit
Shift+PgUp/Down Scrollback

Environment variables

Variable Default Description
CDC_CMD claude Command spawned in Claude panes
CDC_VOICE_LOG STT debug log path
CDC_PTY_LOG Raw PTY byte log

Architecture

graph TD
    subgraph Event Loop
        TE[Terminal Events<br/>crossterm] --> ML[Main Loop<br/>app.rs]
        PO[PTY Output<br/>background threads] --> ML
        VE[Voice Events<br/>VoiceManager] --> ML
    end

    ML --> UI[UI Render<br/>ratatui]
    ML --> PTY[PTY Write<br/>portable-pty]

    subgraph Voice Pipeline
        MIC[Mic<br/>cpal] --> WHI[faster-whisper<br/>Korean model]
        WHI --> CONFIRM[Editable<br/>confirm dialog]
        CONFIRM --> INTENT[Intent<br/>extraction]
        INTENT --> ROUTE[Pane<br/>routing]
    end

    VE --> MIC
Loading

Source layout

src/
├── main.rs           # CLI entry, logo, setup wizard
├── app.rs            # Event loop, intent extraction, pane routing
├── session.rs        # JSON session save/load/archive
├── event.rs          # ANSI key + SGR mouse encoding
├── pane/
│   ├── mod.rs        # Pane: grid + vte parser
│   └── grid.rs       # TerminalGrid: full VTE emulator
├── pty/
│   ├── mod.rs        # PtyManager: spawn/write/resize/kill
│   └── reader.rs     # Background PTY reader thread
├── ui/
│   ├── mod.rs        # Layout, render, dialogs, alerts
│   └── pane_widget.rs # ratatui Widget for TerminalGrid
└── voice/
    ├── mod.rs        # VoiceManager state machine
    ├── recorder.rs   # cpal audio capture + 16kHz resampling
    └── transcriber.rs # faster-whisper Python subprocess
scripts/
└── stt.py            # faster-whisper STT backend

Tech stack

Layer Crate/Tool Version
TUI ratatui 0.29
Terminal I/O crossterm 0.28
PTY portable-pty 0.8
VTE parser vte 0.13
Channels crossbeam-channel 0.5
CLI clap 4
Audio cpal 0.17
STT faster-whisper Python
Serialization serde + serde_json 1

Roadmap

  • Single PTY + VTE parser
  • Multi-pane layout (orchestrator + N panes)
  • Sessions, scrollback, DECAWM, alt screen save/restore
  • Voice input with faster-whisper + pane routing
  • Editable STT confirmation dialog
  • Intent correction ("아니 그거 말고" detection)
  • Voice CDC commands ("새 페인 만들어")
  • Mouse drag text selection + clipboard
  • 3-step pane creation (Claude/Terminal + permissions)
  • Interactive dialogs (mouse click + keyboard)
  • [X] close button on panes
  • Pane drag resize
  • Custom pane names

License

MIT

About

Rust TUI for orchestrating multiple Claude Code sessions with PTY multiplexing

Topics

Resources

Stars

0 stars

Watchers

0 watching

Forks

Releases

Packages

Contributors

Languages