TUI dashboard for managing Claude Code, Codex, and shell sessions via tmux
Project description
Claude Code Terminal (CCT)
TUI dashboard for managing Claude Code, Codex, and shell sessions via tmux.
Languages
✨ Features
- Built-in Claude Code / Codex / Shell session support
- In-dashboard permission handling
- Vim-style modal operation
- Working / Idle / Waiting / Stopped / Auto / Shell state display
- Snapshot preview with ANSI rendering
- Interactive cursor overlay in snapshot preview
- Raw-stdin interactive input path with
Shift+Enter/Alt+Enternewline compatibility - Preview cache and single-flight refresh to reduce repeated preview work
- Preview truncation hint when pane history exceeds the current 1000-line preview window
- WAITING auto-focus with FIFO queue processing
- Per-session Auto Pilot
- Home page, session panel toggle, and smoother session deletion flow
- Read-only diagnostics for cursor stability and live-session latency profiling
- macOS notifications
🚀 Installation
Quick Install (recommended)
curl -fsSL https://raw.githubusercontent.com/phinease/claude-code-terminal/main/install.sh | sh
Via pipx
pipx install claude-code-terminal
Via pip
pip install claude-code-terminal
Upgrade
pipx upgrade claude-code-terminal
or:
pip install -U claude-code-terminal
Prerequisites
- Python >= 3.11
- tmux (
brew install tmux/apt install tmux)
▶️ Usage
cct
⌨️ Keybindings
Normal Mode
| Key | Action |
|---|---|
↑ / ↓ |
Navigate sessions |
n |
New session |
r |
Rename session |
i |
Enter Interactive mode |
a / d |
Approve / Deny permission request |
1-9 |
Select numbered permission option |
p |
Toggle Auto Pilot |
c |
Select mode (text copy) |
Ctrl+\ |
Toggle session panel |
Ctrl+x |
Delete session |
q |
Quit |
Interactive Mode
All keystrokes pass through directly to the selected agent session.
| Key | Action |
|---|---|
Ctrl-] |
Exit to Normal mode |
Ctrl+\ |
Toggle session panel |
Shift+Enter |
Newline (kitty protocol terminals) |
Alt+Enter |
Newline (legacy terminals) |
| Mouse click on session list | Switch session |
🪟 Preview Behavior
- Normal and interactive preview both keep a bounded 1000-line window.
- When older content is omitted from the preview window, CCT shows a truncation banner below the preview.
- Waiting detection and Auto Pilot still use plain
capture-pane, independent of preview truncation.
Environment variables:
CCT_PREVIEW_HISTORY_LINESCurrent implementation clamps this to at least1000.CCT_INTERACTIVE_PREVIEW_HISTORY_LINESCurrent implementation also clamps this to at least1000.CCT_USE_LEGACY_INTERACTIVE_VIEW=1Disables the interactive cursor overlay path and falls back to the legacy interactive preview behavior.
🧪 Diagnostics
python tests/e2e_cursor_scope.pyVerifies cursor position and mixed ASCII / Chinese input stability.python tests/e2e_latency_scope_existing_sessions.pyReuses current live tmux sessions in read-only mode to profile preview, list, and polling costs.
🖥️ Interface
+----------------------------------------------------------------+
| Vibe · Agent Dashboard |
+----------------------------------------------------------------+
| Sessions | Preview: frontend-refactor (claude) |
|--------------------|---------------------------------------------|
| * frontend-refactor| > Analyzing src/components/Header.tsx... |
| proj/frontend | |
| * api-fix | I'll update the Header component to |
| proj/backend | use the new theme variables. |
| ! test-fix |---------------------------------------------|
| proj/tests | ! Permission: execute `npm test` |
| o data-migration | [a:Allow] [d:Deny] |
| proj/migration | |
+--------------------+---------------------------------------------+
| NORMAL — i:Interactive n:New a/d:Allow/Deny p:Pilot |
+----------------------------------------------------------------+
Status icons: * Working ! Waiting o Idle x Stopped
📝 Notes
- The current interactive preview is still tmux snapshot based, not a full terminal-buffer renderer.
- Recent performance work reduced preview-path overhead, session-list remount churn, and all-session polling load.
🛣️ Roadmap
| Version | Goal |
|---|---|
| v0.2 (current) | Claude Code / Codex / Shell sessions, Auto Pilot, bounded preview, performance improvements, diagnostics |
| v0.3 | More tools (Aider/Open Claw), session groups, fuzzy search |
| v0.4 | Web version (textual-web), diff view, Docker isolation |
📄 License
Project details
Release history Release notifications | RSS feed
Download files
Download the file for your platform. If you're not sure which to choose, learn more about installing packages.
Source Distribution
claude_code_terminal-0.2.1.tar.gz
(143.9 kB
view details)
Built Distribution
Filter files by name, interpreter, ABI, and platform.
If you're not sure about the file name format, learn more about wheel file names.
Copy a direct link to the current filters
File details
Details for the file claude_code_terminal-0.2.1.tar.gz.
File metadata
- Download URL: claude_code_terminal-0.2.1.tar.gz
- Upload date:
- Size: 143.9 kB
- Tags: Source
- Uploaded using Trusted Publishing? No
- Uploaded via: twine/6.2.0 CPython/3.14.3
File hashes
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
b733bded044cca1f0d5afcae78d18f1d2064526bd35c7da806deac4db3ffdd55
|
|
| MD5 |
5926a848885f7dd6d4775d8c16018e79
|
|
| BLAKE2b-256 |
aca89df79de481c0ab3d3bce16c62f9378cfad6685832dc4e93d2ad8b9534cc6
|
File details
Details for the file claude_code_terminal-0.2.1-py3-none-any.whl.
File metadata
- Download URL: claude_code_terminal-0.2.1-py3-none-any.whl
- Upload date:
- Size: 44.9 kB
- Tags: Python 3
- Uploaded using Trusted Publishing? No
- Uploaded via: twine/6.2.0 CPython/3.14.3
File hashes
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
358092fb3546d71f94a8202444227ab74b56cec0877e2a571c5d5ca2d029253b
|
|
| MD5 |
c78ec8d12bbcacbf59957a4746fb8882
|
|
| BLAKE2b-256 |
1c7f4235809c87cd832a9e30084594a88a17e366dc653971f2b85b18855a2668
|