stacked git, minus the headache

Stack your branches.

Monkeypuzzle keeps your work in small, stacked pieces — each one a clean review — and restacks, submits, and syncs the whole tree for you.

$ brew install monkeypuzzle
See how it works
monkeypuzzle
~/acme mp stack status ◆ feat/auth-ui draft +62 −4 ◆ feat/auth-api in review +210 −18 ● feat/auth-schema merged ✓ +88 −2 └ main~/acme mp pr create ✓ pushed feat/auth-ui → origin ✓ opened #483 feat/auth-ui → feat/auth-api
Why stacks

Big features, small reviews.

Stacks, not mega-PRs

Break a feature into a chain of small pieces. Each reviews in minutes; the stack ships as one.

Restack on autopilot

Change a piece low in the stack and Monkeypuzzle rebases everything above it — conflicts surfaced, never silent.

One command to submit

mp pr create opens or updates a PR per piece, wired parent-to-parent, with the stack drawn in each description.

Native to GitHub

Works with the PRs, checks, and reviews you already have. No new forge, no lock-in.

Built for the terminal

A fast, friendly CLI first — plus a web dashboard when you want the whole team's stacks in one place.

The stack, visualized

Every piece, its status, and its place in the tree — readable at a glance, in your shell or the dashboard.

Three moves

Cut a piece. Restack. Submit.

1

Cut a piece

Start a new piece on top of the stack — one idea at a time.

mp stack append auth-ui
2

Restack

Edited something below? Rebase the whole tree in one go.

mp stack sync
3

Submit

Open or update a PR per piece, stacked parent-to-parent.

mp pr create
tmux plugin

Pieces, a keystroke away.

A lightweight tmux plugin puts every piece behind a fuzzy popup — switch worktrees or cut a new piece without ever leaving your pane layout.

prefix+p Switch to any piece across every project — each row previews its git status.
prefix+P Create a piece — pick a project, name it (or describe it), and land in the worktree.

A thin layer over the mp CLI: it reads mp go --json, renders an fzf popup, and lets mp own the tmux session switch. Needs fzf + jq.

switch piece
❯ acme/feat-auth-ui ◆ draft acme/feat-auth-api ◆ in review acme/feat-auth-schema ● merged ✓ web/main trunk 4/4 · ↵ switch · ⌃P new piece
CLI + server

A free CLI and an open server.

The mp command does the work in your terminal — free and open source. The server adds a web dashboard that syncs every repo and draws each stack as a live tree. Run ours, or run your own.

The mp CLI

MIT

The terminal tool that does the work: cut pieces, restack the tree, and open stacked PRs from your shell. Free and open source, forever.

Get the CLI runs locally · no account

Monkeypuzzle Cloud

Hosted

Sign in with GitHub and we run the server for you. Every repo's stack, synced and visualized — nothing to deploy, nothing to maintain.

Get started sign in with GitHub

Self-host the server

FSL-1.1-MIT

Run the source-available server on your own infra. Self-hosting and internal use are free; each release turns MIT two years after it ships.

Self-hosting guide your infra · source-available
the CLI is free & open source

Your branches, finally in order.

Start with the free CLI. Add the dashboard when you want every stack in one place — hosted, or self-host it yourself.