Git worktree operations, without the context switching
A modern TUI for managing git worktrees with integrated tmux sessions and AI coding agents.
Sprout simplifies git worktree management by providing:
- Interactive TUI - Visual interface for creating, switching, and managing worktrees
- Tmux Integration - Automatic session management with Neovim and Lazygit
- AI Agent Support - Built-in integration with popular AI coding assistants (Codex, Aider, Claude, Gemini)
- Shell Integration - Seamless directory switching via shell hooks
- Zero Context Switching - Work on multiple branches simultaneously without losing your flow
brew tap joegrabski/sprout
brew install sproutDownload from GitHub Releases
git clone https://github.com/joegrabski/sprout.git
cd sprout
make sprout-build
sudo make sprout-install# Navigate to a git repository
cd ~/projects/myapp
# Create a new worktree
sprout new feat checkout-redesign
# Launch the interactive TUI
sprout
# List all worktrees
sprout list
# Switch to another worktree
sprout go mainSee the Quick Start Guide for more details.
Beautiful terminal interface showing all worktrees with their status, active tmux sessions, and running AI agents at a glance.
Each worktree gets its own isolated tmux session with Neovim, Lazygit, and your preferred AI agent.
Worktrees are organized in a dedicated directory structure, keeping your repository root clean.
Built-in support for:
- Codex
- Aider
- Claude Code
- Gemini
Each worktree can have its own AI coding assistant with independent context.
Full documentation is available at sprout.dev
This is a monorepo containing:
apps/sprout- Go CLI/TUI worktree managerapps/web- Documentation website (Docusaurus)
# Build sprout binary
make sprout-build
# Run tests
cd apps/sprout
go test ./...
# Install locally
make sprout-install# Generate docs and start dev server
make docs-dev
# Build production docs
make docs-build
# Just generate auto-generated docs
make docs-generateSee apps/web/README.md for more documentation development details.
make help # Show all available commands
make docs-dev # Start documentation dev server
make docs-build # Build production documentation
make docs-generate # Generate auto-generated docs
make sprout-build # Build sprout binary
make sprout-install # Build and install sproutCreate ~/.config/sprout/config.toml:
base_branch = "main"
worktree_root_template = "../{repo}.worktrees"
auto_launch = true
auto_start_agent = true
session_tools = ["agent", "lazygit", "nvim"]
default_agent_type = "aider"See Configuration Reference for all options.
Add to your shell config:
# Zsh (~/.zshrc)
eval "$(sprout shell-hook zsh)"
# Bash (~/.bashrc)
eval "$(sprout shell-hook bash)"
# Fish (~/.config/fish/config.fish)
sprout shell-hook fish | sourceContributions are welcome! Please feel free to submit a Pull Request.
MIT License - see LICENSE file for details