| Crates.io | maestro-tui |
| lib.rs | maestro-tui |
| version | 0.2.2 |
| created_at | 2026-01-07 10:08:49.374212+00 |
| updated_at | 2026-01-07 10:58:41.796146+00 |
| description | A dual-pane terminal emulator TUI with vim-like modal editing |
| homepage | |
| repository | https://github.com/levifikri/maestro-tui |
| max_upload_size | |
| id | 2027950 |
| size | 302,643 |
A dual-pane terminal multiplexer designed for AI-assisted development workflows.
Modern AI coding assistants like Claude Code are powerful, but juggling between your terminal and an AI session breaks your flow. maestro-tui solves this by putting your shell and Claude Code side-by-side in a unified interface.
One worktree, one tab. Each task gets its own git worktree and dedicated tab. Start a new feature? Type a prompt, and maestro-tui creates a fresh worktree with Claude Code ready to help. No more context switching. No more branch juggling. Just focused, parallel workstreams.
curl -fsSL https://raw.githubusercontent.com/fikriauliya/maestro-tui/refs/heads/main/install.sh | bash
cargo install maestro-tui
git clone https://github.com/fikriauliya/maestro-tui.git
cd maestro-tui
cargo build --release
The binary will be at target/release/maestro-tui.
maestro-tui
# or use the short alias
mae
| Shortcut | Action |
|---|---|
Alt+1 |
Switch to control panel |
Alt+2-9 |
Switch to worktree tabs 1-8 |
Alt+h |
Focus left pane (diff viewer) |
Alt+l |
Focus right pane (Claude) |
Alt+u |
Scroll up (half page) |
Alt+d |
Scroll down (half page) |
Alt+t |
Open theme picker |
Alt+q |
Quit |
[X] to quitAlt+1 or click Tab 1Maestro creates a new git worktree and tab with Claude Code ready to assist.
src/
├── main.rs # Entry point, event loop
├── app.rs # Application state, commands, key handling
├── render.rs # UI rendering with Ratatui
├── event_handler.rs # Keyboard and mouse event processing
├── terminal.rs # PTY management, terminal emulation
├── terminal_pair.rs # Dual terminal pane management
├── diff_viewer.rs # Git diff display with syntax highlighting
├── file_watcher.rs # File system watcher for auto-refresh
├── theme.rs # Color themes (Flexoki, Dracula, Nord, etc.)
├── input.rs # Key-to-bytes conversion for terminal
├── pty.rs # PTY abstraction with mock for testing
└── worktree.rs # Git worktree management
cargo build # Debug build
cargo build --release # Optimized release build
cargo test # Run all tests
cargo test -- --nocapture # With output
cargo fmt # Format code
cargo clippy # Lint
cargo check # Type check without building
The app runs a 60fps render loop. Each terminal pane has a background reader thread for PTY output. File changes are detected via inotify (Linux) / FSEvents (macOS) for efficient diff refreshing. State is shared via Arc<Mutex<T>>.
cargo test and cargo clippyThis project uses Beads for issue tracking - an AI-native tool that stores issues directly in the repository (.beads/ directory).
# Find available work
bd ready
# View issue details
bd show <issue-id>
# Start working on an issue
bd update <issue-id> --status in_progress
# Complete an issue
bd close <issue-id>
# Create a new issue
bd create --title="Fix bug in diff viewer" --type=bug --priority=2
# Sync with git
bd sync
curl -sSL https://raw.githubusercontent.com/steveyegge/beads/main/scripts/install.sh | bash
See the Beads documentation for more details.
MIT