Terminal UI IDE wrapper for Claude Code CLI
Project description
claude-tui
Terminal UI IDE wrapper for Claude Code CLI.
Runs Claude Code inside a polished TUI with a file tree, file viewer with syntax highlighting, and a live diff navigator — while keeping all native Claude behavior (permissions, slash commands, interactive prompts).
Features
- Native Claude Code — runs in a real PTY, everything works exactly as in your terminal
- File tree — browse your project with git status indicators (M/A/D/?)
- File viewer — syntax highlighting for 20+ languages
- Diff navigator — auto-detects file changes via watchdog, per-file diff view
- Session picker — browse and resume past sessions across all projects
- Command palette —
ctrl+pfor quick actions - Copy support — native text selection works, plus
ctrl+shift+cto copy terminal content - All Claude flags — pass any flag directly (
--model,--add-dir,-c, etc.)
Requirements
- Python 3.10+
- macOS or Linux (uses PTY — not available on Windows)
- Claude Code CLI installed and authenticated
- git (optional, for diff and git status features)
Install
# Recommended: install globally with pipx
pipx install claude-tui
# Or from source
git clone https://github.com/crlxs/claude-tui.git
cd claude-tui
pipx install .
For development:
git clone https://github.com/crlxs/claude-tui.git
cd claude-tui
python -m venv .venv
source .venv/bin/activate
pip install -e .
Usage
# Start in current directory
claude-tui
# Start in a specific directory
claude-tui --cwd ~/my-project
# Browse and resume past sessions
claude-tui --resume
# Pass any Claude Code flag
claude-tui --model sonnet
claude-tui -c # continue last session
claude-tui --dangerously-skip-permissions # skip permission checks
claude-tui --add-dir ~/other-project # add extra directory access
Keyboard shortcuts
| Key | Action |
|---|---|
ctrl+q |
Quit |
ctrl+\ |
Cycle tabs (Terminal / Files / Diff) |
ctrl+t |
Focus file tree |
ctrl+b |
Focus terminal |
ctrl+p |
Command palette |
ctrl+shift+c |
Copy terminal content to clipboard |
All other keys are forwarded to Claude Code.
Architecture
claude-tui
├── app.py → Textual app: layout, tabs, keybindings, command palette
├── terminal_widget.py → PTY terminal emulator (pyte + ptyprocess)
├── diff_tracker.py → Git diff tracking with watchdog filesystem events
├── session_picker.py → Session loader from ~/.claude/history.jsonl
├── session_screen.py → Session picker UI (project → session → resume)
└── cli.py → CLI entry point, flag passthrough to Claude
Limitations
- Terminal rendering: Uses pyte (VT100 emulator) which doesn't support some modern terminal features (kitty keyboard protocol, synchronized updates). Most Claude Code output renders correctly; some decorative characters may look slightly different.
- Windows: Not supported — requires PTY (ptyprocess), which is Unix-only.
- Mouse: Mouse tracking is disabled to allow native text selection. All navigation is keyboard-driven.
License
MIT
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
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_tui-0.1.0.tar.gz.
File metadata
- Download URL: claude_tui-0.1.0.tar.gz
- Upload date:
- Size: 20.6 kB
- Tags: Source
- Uploaded using Trusted Publishing? No
- Uploaded via: twine/6.2.0 CPython/3.14.3
File hashes
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
2a5e32de69c09e31f4f9b6ead8b0bf0a40cbbb6d30e8649c024176b1fbc5330c
|
|
| MD5 |
626269468042a89e5b0850dacab12141
|
|
| BLAKE2b-256 |
94a19a47be7ae0d6231a6b3b1502d53db1f43598b1abd7ebae0d7ea6a3e5eeae
|
File details
Details for the file claude_tui-0.1.0-py3-none-any.whl.
File metadata
- Download URL: claude_tui-0.1.0-py3-none-any.whl
- Upload date:
- Size: 24.4 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 |
a44ddd30b9ae496ffe8d5c530860f57abc6cbdcd9b551d514aa9c8fd3a7a55ad
|
|
| MD5 |
c2528a22b0bee63c8c034ac33d1aa881
|
|
| BLAKE2b-256 |
3e692033ecc827925ba53200f69add26193bde6074463a52654e171966f8a5eb
|