v4.4.2 — Latest Release

Stacked PRs.
Zero friction.

Manage stacked pull requests with git worktrees. Create branches, sync rebases, manage PRs — all from one CLI.

$ go install github.com/KulkarniKaustubh/ezstack/v4/cmd/ezs@latest
View on GitHub
Terminal

Get started in seconds

Choose your preferred installation method.

$ go install github.com/KulkarniKaustubh/ezstack/v4/cmd/ezs@latest
$ brew tap KulkarniKaustubh/ezstack
$ brew install ezstack
$ git clone https://github.com/KulkarniKaustubh/ezstack.git
$ cd ezstack
$ make install

Shell Integration Recommended

Enable automatic directory changes for navigation commands.

# Add to ~/.bashrc or ~/.zshrc
$ eval "$(ezs --shell-init)"

Requirements

Everything you need to ship faster

Stop waiting on code reviews. Stack your PRs and develop in parallel.

Parallel Worktrees

Every branch gets its own directory. Edit feature-1 and feature-2 side by side — no stashing, no context switching.

Auto-Sync Stack

ezs commit and ezs amend automatically rebase every child branch. Your stack stays in sync without you thinking about it.

Full PR Lifecycle

Create, update, merge, and toggle draft status from the CLI. Stack descriptions update across all PRs with ezs pr stack.

Git-Native

No daemon, no server, no custom storage. ezstack reads from git directly and stores minimal metadata. Delete it and your repo is unchanged.

Interactive + Scriptable

Every command works with zero arguments (powered by fzf) or fully scripted with flags, --json output, and structured exit codes.

Smart Conflict Handling

Rebase conflicts pause with clear recovery instructions. Run ezs sync --continue to resume, push, and re-sync children. Autostash and --dry-run included.

Rich Stack Visualization

Tree-style branch display shows parent-child relationships at a glance. ezs ls includes +/- diff stats per branch and strikes through merged PRs.

How it works

Three steps to unblock your team.

1

Create your stack

Branch off any parent. Each branch gets its own worktree directory.

$ ezs new auth-service
Created branch 'auth-service' with worktree

$ ezs new auth-middleware --parent auth-service
Created branch 'auth-middleware' with worktree
2

Work in parallel

Each branch is a real directory. Open them in separate editor windows. Commit and children auto-sync.

$ ezs commit -m "Add auth middleware"
[auth-middleware abc1234] Add auth middleware
Syncing children... done.
3

Ship with confidence

Create PRs, sync the stack, merge — all from the CLI. Stack descriptions auto-update.

$ ezs pr create -t "Add auth service"
https://github.com/you/repo/pull/42

$ ezs pr stack
Updated 2 PR descriptions with stack info

Review PRs in seconds

Check out any remote branch into its own worktree and stack. See PR info, review status, and line diffs instantly. Work on it, push, sync — everything just works.

One command checkout

Fetch, create a tracking branch, and open a worktree — all in one step. PR metadata and diff stats are shown automatically.

$ ezs new origin/add-jwt-auth
Creating worktree for remote branch 'add-jwt-auth'...
Created worktree for 'add-jwt-auth' at ~/worktrees/add-jwt-auth

PR #42: Add JWT authentication
State: OPEN  Base: main  Review: REVIEW_REQUIRED
Diff vs main: +320 / -45 lines

Let AI build your stack

Launch an AI agent with full stack context injected. Work on a branch or describe a feature and let the agent build it as stacked PRs. With Claude Code, the ezstack MCP server is auto-installed and registered on first launch — zero setup.

Work Session

Agent scoped to your stack

The agent sees your stack structure, worktree paths, and all ezstack commands. It works within a single branch.

$ ezs agent
Installing ezs-mcp@v4.4.2... ✓
Registering ezstack MCP with claude (user scope)... ✓
Launching claude in ~/worktrees/auth-service...
Stack context injected (3 branches, 2 PRs, 21 MCP tools)

$ ezs agent --branch auth-middleware
Launching claude in ~/worktrees/auth-middleware...
Feature Builder

Describe it, agent builds it

The agent explores your codebase, plans a series of stacked branches, and implements each one with commits and PRs.

$ ezs agent feature "Add JWT auth"
Agent will plan and implement as stacked branches...

# Agent creates:
  main
  └── jwt-types        PR #44
      └── jwt-middleware PR #45
          └── jwt-routes PR #46

Command reference

26 commands. Everything aliased for speed. Run ezs <command> --help for details.

new nCreate a new branch in the stack.
list lsList all stacks and branches.
status stShow status of current stack with PR and CI info.
stackAdd an untracked branch/worktree to an existing stack, start a new stack, or rename a stack.
unstackRemove a branch from stack tracking without deleting the git branch or worktree.
delete del, rmDelete a branch and its worktree.
reparent rpChange the parent of a branch and sync commits onto the new parent.
goto goNavigate to a branch worktree.
upNavigate up the stack toward parent
downNavigate down the stack toward children
syncSync stack with remote.
commit ciCommit and auto-sync child branches
amendAmend last commit and auto-sync children
pushPush current branch or entire stack to remote.
diffShow diff against parent branch.
pr createCreate a new pull request
pr updatePush changes and update PR metadata
pr mergeMerge a pull request (merge, squash, or rebase)
pr draftToggle PR between draft and ready
pr stackUpdate all PR descriptions with stack info
config cfgInteractive configuration setup
config setSet a configuration value
config showShow current configuration
menuInteractive command menu
agentLaunch AI agent scoped to a stack with full context
agent featureBreak a feature into stacked branches via AI
agent promptView or edit agent prompt templates

Prompt Templates

Agent prompts are stored as editable Markdown files in ~/.ezstack/:

  • agent-work-prompt.md — Work session prompt
  • agent-feature-prompt.md — Feature builder prompt

Prompts use template variables replaced at runtime: {{STACK_JSON}}, {{BRANCH_NAME}}, {{PARENT_NAME}}, {{WORKTREE_PATH}}, {{EZS_DOCS}}, {{FEATURE_DESCRIPTION}}.

The ezstack ecosystem

Use ezstack wherever you work. CLI, editor, or desktop.

New

VS Code Extension

Stack viewer panel in your sidebar. Browse branches, explore file trees per branch, see PR status, and open any branch in a new window — all without leaving the editor.

Install

  1. Download ezstack-4.4.2.vsix from the release page
  2. In VS Code: Cmd+Shift+P → "Install from VSIX" → select the file
  3. Open a repo with ezstack configured — the panel appears in the sidebar
Learn More & Download
New

MCP Server

Drive ezs from Claude Code and any MCP-compatible agent. Eleven stack operations exposed as Model Context Protocol tools — status, list, sync, push, PR create/merge, goto, new, delete, reparent. Destructive tools are annotated so clients can prompt before running.

Install

  1. Install via brew install ezstack (ships ezs-mcp alongside ezs), or go install github.com/KulkarniKaustubh/ezstack/v4/cmd/ezs-mcp@latest
  2. Register with Claude Code (one registration, every repo): claude mcp add ezstack --scope user -- ezs-mcp
  3. Requires the ezs CLI and an ezstack-configured repository
Learn More & Install
New

Neovim Plugin

Native Lua plugin with Telescope integration, stack viewer, statusline component, and fugitive auto-refresh. Manage your entire stack without leaving Neovim.

Install

  1. Install with lazy.nvim: { "KulkarniKaustubh/ezstack", subdir = "neovim-plugin" }
  2. Run :Ezs to open the stack viewer, or :Telescope ezstack branches for fuzzy picking
  3. Requires ezs CLI installed, Neovim 0.10+, and optionally telescope.nvim
Learn More & Install