TUI Git client

trim. stage. grow.

bonsai wraps Git with an interactive terminal interface. After every action it shows what happened in plain language and the exact command that ran.

$ curl -fsSL .../install.sh | sh
View on GitHub
bonsai
main ↑1 [gitflow] [mode:standard]
Conflicts (1)
! src/auth.go both modified
Staged (2)
M src/api.go
A src/middleware.go
Changed (1)
M README.md
$ git add src/middleware.go new file staged for commit
[space] stage/unstage   [c] commit   [p] push   [l] log   [?] help   [q] quit
never takes autonomous decisions
never hides the underlying Git command
never locks you into a workflow
always measures success by your independence
Three modes

Grows with you, not past you.

Switch modes at any time. bonsai adapts to where you are in your Git journey — never ahead of you, never behind.

guided new to Git

Full explanation after every action. Plain language, contextual tips, and why it matters. Nothing is assumed.

$ git commit -m "fix: auth token"
Saved a snapshot of your staged files
The commit is local — nothing was pushed yet
Tip: press l inside bonsai to see your commit history
pro Git-fluent

Clean interface, no feedback panel. All the TUI power, none of the commentary. Pure signal.

$ git rebase -i HEAD~3
— no feedback panel —
Features

Everything Git has. Nothing you have to memorize.

Hunk staging

Stage or unstage individual hunks within a file. Commit exactly what you mean to, nothing more.

Commit log and history

Browse commits, search and filter, cherry-pick, copy hashes, view full diffs per commit.

Branch management

Create, switch, merge, rebase, rename, and delete branches. Tracks remotes, shows upstream relationships.

Workflow flows

Adapts to trunk, gitflow, githubflow, or forking. The branch picker changes to match your team's conventions.

Interactive rebase

Reorder, squash, reword, or drop commits in a guided panel. See what's about to happen before it does.

Doctor and SSH

Health check your Git config, SSH keys, and remote connectivity before something breaks. Fixes are shown inline.

bonsai doctor

Your Git setup, fully diagnosed.

Run bonsai doctor --verbose to check your global config, local repo, and SSH setup. Every problem comes with an exact fix command.

Read the docs
bonsai doctor --verbose
Global
git version 2.50.1
user.name Jane Doe
user.email jane@example.com
pull.rebase not set
fix: run: git config --global pull.rebase true
ssh key /Users/jane/.ssh/id_ed25519
ssh-agent running (1 key loaded)
ssh github.com Hi jane! You've successfully authenticated.

Local  (my-project)
remote origin git@github.com:org/my-project.git
upstream tracking origin/main
.gitignore present

0 errors, 1 warning, 16 passed
Install

Up in 30 seconds.

One binary, no runtime dependencies. Requires Git 2.28 or later.

  • macOS, Linux, and Windows
  • Auto-detected shell config update
  • Works in any existing Git repo immediately
  • MIT licensed, open source
# Install bonsai
curl -fsSL https://raw.githubusercontent.com/AgusRdz/bonsai/main/install.sh | sh

# Open the setup wizard
bonsai setup
# PowerShell
irm https://raw.githubusercontent.com/AgusRdz/bonsai/main/install.ps1 | iex

# Open the setup wizard
bonsai setup
# Requires Go 1.21+
git clone https://github.com/AgusRdz/bonsai.git
cd bonsai
go build -o bonsai .
mv bonsai ~/.local/bin/

Binary lands in ~/.local/bin (macOS/Linux) or %LOCALAPPDATA%\Programs\bonsai (Windows)