A TUI for git worktrees

A lazier way to manage worktrees.

LazyWorktree logo

LazyWorktree is a keyboard-first TUI for managing Git worktrees, branches, pull requests, and CI status. Work with isolated worktrees as your default workflow, eliminating the need to switch branches in a single directory. Each task gets its own worktree, keeping tmux or zellij sessions, local files, pull/merge requests, notes, TODO items, and Git state isolated and independent.

Quick start

$ brew tap chmouel/lazyworktree https://github.com/chmouel/lazyworktree
$ brew install lazyworktree --cask
$ cd your-repository
$ lazyworktree
LazyWorktree TUI screenshot
Worktree, status, and log panes with rich keyboard actions.

Features

What it does

Worktree management

Create, rename, remove, absorb, and prune merged worktrees directly from the keyboard.

Create from anything

Create from branch, commit, PR/MR, issue, or custom menu item with optional branch automation.

Git operations

Stage, commit, diff, push, sync, and cherry-pick -- all from within the TUI.

CI checks

See check status, read logs, open job pages, and restart GitHub Actions runs.

tmux / zellij sessions

Each worktree can get its own tmux or zellij session, with configurable prefixes.

Hooks and custom commands

Run init and terminate hooks via .wt and add custom command bindings.

Worktree notes

Attach markdown notes to any worktree and view them rendered in the info pane.

Taskboard

Turn markdown checkbox notes into a grouped Taskboard and toggle progress without leaving the TUI.

Configuration

Set options via CLI flags, git config, or a YAML file. Local settings override global ones.

Install

Get running in less than one minute.

brew tap chmouel/lazyworktree https://github.com/chmouel/lazyworktree
brew install lazyworktree --cask

Optional tools: gh or glab for forge data, and delta for enhanced diffs.

Screenshots

What it looks like

Give it a go.

It's open source, installs in seconds, and works with any Git repo that uses worktrees.