jean is a terminal user interface (TUI) that makes working with Git worktrees effortless. Instead of managing multiple branches and worktrees manually, jean gives you a clean, keyboard-driven interface to:
- Manage worktrees instantly with single keystrokes
- Automate workflows with AI-generated commit messages, branch names, and PR descriptions
- Handle GitHub PRs without leaving the terminal
- Open editors directly on worktrees
- Maintain persistent Claude CLI sessions for each branch
Built with Bubble Tea and designed for developers who juggle multiple feature branches simultaneously.
Why "jean"? Named after Jean-Claude Van Damme - combining "Jean" (the CLI) with "Claude" (AI integration). A perfect martial arts kick of productivity!
- Git Worktree Management - Create, switch, and delete worktrees with single keystrokes
- AI-Powered Workflow - Auto-generate commit messages, branch names, and PR content (11+ AI models)
- GitHub PR Automation - Create draft PRs, browse PRs, merge with strategy selection
- Tmux Sessions - Persistent Claude CLI and terminal sessions per worktree
- 5 Themes - Matrix, Coolify, Dracula, Nord, Solarized with dynamic switching
- Multi-Editor Support - Open worktrees in VS Code, Cursor, Neovim, Vim, Sublime, Atom, or Zed
- Branch Management - Rename branches, checkout, change base branch, pull from base
- Debug Logging - Enable logs for troubleshooting
curl -fsSL https://github.com/coollabsio/jean/raw/main/install.sh | bashOr with Go 1.21+:
go install github.com/coollabsio/jean@latest
jean init # Set up shell integrationgit clone https://github.com/coollabsio/jean
cd jean
go build -o jean
sudo mv jean /usr/local/bin/
jean init- Git: For worktree operations
- tmux: For session management (
brew install tmuxon macOS,sudo apt install tmuxon Linux) - GitHub CLI: For PR operations (
brew install ghon macOS,sudo apt install ghon Linux)
Run in any Git repository:
cd /path/to/your/repo
jeanOr test on another repo without navigating:
jean -path /path/to/other/repo| Key | Action |
|---|---|
↑/↓ or j/k |
Navigate worktrees |
Enter |
Switch to worktree (Claude session) |
t |
Open terminal session |
q |
Quit |
| Key | Action |
|---|---|
n |
Create new worktree |
a |
Create from existing branch |
d |
Delete worktree |
o |
Open in editor |
r |
Refresh (fetch + auto-pull) |
| Key | Action |
|---|---|
b |
Change base branch |
B |
Rename branch |
K |
Checkout branch |
c |
Commit (with AI) |
p |
Push to remote |
u |
Update from base |
| Key | Action |
|---|---|
P |
Create draft PR |
N |
Create worktree from PR |
L |
Local merge (worktree → base) |
v |
View PR in browser |
M |
Merge PR |
g |
Open repo in browser |
| Key | Action |
|---|---|
e |
Select editor |
s |
Settings menu |
S |
Manage tmux sessions |
h |
Help modal |
Settings stored in ~/.config/jean/config.json per repository:
- Base branch - Default branch for new worktrees
- Editor - Preferred IDE (code, cursor, nvim, vim, subl, atom, zed)
- Theme - Visual theme (press
s→ Theme to change) - AI Settings - OpenRouter API key, model selection, feature toggles
- Debug logs - Enable logging to
/tmp/jean-debug.log
Press s → Tmux Config to install an opinionated tmux configuration with:
- Mouse support & scrolling
- 10k line scrollback buffer
- 256 color + true color support
- Shift+Left/Right to switch windows
- Ctrl+D to detach
- Better pane borders and status bar
Automatically run commands when creating new worktrees. Create jean.json in your repository root:
{
"scripts": {
"setup": "npm install && cp $JEAN_ROOT_PATH/.env ."
}
}Environment variables available:
JEAN_WORKSPACE_PATH- Path to the newly created worktreeJEAN_ROOT_PATH- Path to the repository root directoryJEAN_BRANCH- Current branch name
The setup script runs automatically for every new worktree (created with n or a keys). Script failures are shown as warnings and won't block worktree creation.
Press P to:
- Auto-commit changes
- Rename branch with AI (optional)
- Generate PR title/description with AI (optional)
- Create draft PR
- Store PR URL
Press p to:
- Check for uncommitted changes
- Auto-commit if needed
- Rename random branches with AI
- Push to remote
Both Claude and terminal sessions can coexist for the same worktree:
Entercreates Claude session (jean-<branch>)tcreates terminal session (jean-<branch>-terminal)- Detach anytime with
Ctrl+B D - View all sessions with
S
5 built-in themes available (press s → Theme):
- Matrix - Green terminal aesthetic
- Coolify - Purple/violet theme
- Dracula - Pink/cyan theme
- Nord - Blue/cyan theme
- Solarized - Blue/teal theme
# Run locally
go run main.go
# Build binary
go build -o jean
# Test with custom path
go run main.go -path /path/to/test/repo
# Check version
./jean --versionmain.go- CLI entry pointtui/- Bubble Tea TUI (model, update, view, styles)git/- Git worktree operationssession/- Tmux session managementconfig/- Configuration managementgithub/- GitHub PR operationsopenrouter/- AI integration
For detailed architecture and development guides, see CLAUDE.md.
- Linux ✅ Full support
- macOS ✅ Full support
- Windows
⚠️ WSL2 required
- Bubble Tea - TUI framework
- Lipgloss - Terminal styling
- Bubbles - TUI components
Contributions are welcome! Submit a Pull Request.
MIT
- Inspired by git-worktree-tui
- Built with Charm ecosystem