coco workstation

Your whole Git workflow, keyboard-first

Stop juggling a Git GUI, your terminal, and the browser. coco ui puts history, diffs, staging, PRs, and issues behind muscle-memory keystrokes — one fast surface, sharpened by AI.

npx git-coco@latest ui
16
views
108
themes
<100ms
boot
0
mouse
workspace → repo → history
~/coco $ ui --view

Explore every surface

Sixteen specialized views, plus the cross-view actions that span them — each purpose-built for a specific Git workflow. Toggle between them and hover to preview.

coco ui — historyg h

History

Browse commit history with graph visualization.

↑ ↓ to explore · click to enlarge

~/coco $ ws

Every repo, one keystroke away

coco ws scans your directory for repositories and gives you a sortable, filterable overview — dirty state, ahead/behind, open PRs. Clone a remote or add a repo by path without leaving the TUI, then press Enter to drive any of them as a full workstation.

c — clone

Clone a remote straight into your launch directory; the destination auto-fills from the URL.

coco
a — add

Register an existing repo by path, with tab completion as you type.

coco
enter — drive it

Browse the multi-repo overview — dirty state, ahead/behind, open PRs — then Enter any repo to drive it as a full workstation.

coco
~/coco $ workflows

Key workflows

Real Git operations, not just a viewer. Stage hunks, compose commits, review PRs, and rewrite history — all from the keyboard.

01

Tactile hunk staging

Open a changed file and stage it hunk by hunk. Each hunk carries a ● staged / ○ unstaged badge, the selected hunk is highlighted with an accent bar, and ↑/↓ walk between them — so you stage exactly what you mean, never the whole file by accident.

+↑/↓+Space
coco ui
02

Never memorize a key

Press g? in any view for a live strip of its single-key actions — cherry-pick, revert, mark-compare, stage — sourced from that view's bindings, so the list changes as you move between views. It's the per-view sibling of the g-chord which-key menu: the same letter can mean different things in different views, and g? always tells you which.

g+?
coco ui
03

Stash like a pro

Stash from any view with gZ — even mid-diff — then manage stashes that actually read: every entry shows its origin branch, file count, and age, with a live contents preview. Rename one, branch off it, apply keeping your index, or undo a drop, all without leaving the keyboard.

g+Z+R
coco ui
04

Worktree-aware checkout

Check out a branch that's already checked out in another worktree and coco doesn't dead-end on git's error — it names the worktree holding it and offers a way forward: s to switch into that worktree (it opens as a nested frame), r to remove it and check out here, or x to remove it and delete the branch. Dirty worktrees are guarded.

+s+r+x
coco ui
05

Side-by-side diff

Read changes in a split-pane diff with syntax highlighting and line-level navigation — staged or unstaged, any commit or file, without leaving the keyboard.

g+d
coco ui
06

Stage, draft, ship — the inner loop

The whole everyday loop without leaving the keyboard: open a changed file, stage the hunks you mean, jump to compose, and let coco draft a Conventional Commit message from exactly what's staged — ready to review, edit, and commit. commitlint respected.

Space+g c+I
coco ui
07

Review a PR end to end

Open the current branch's pull request — body, CI checks, and reviews right in the inspector — then cross to the multi-PR triage list and cycle filters. Merge, approve, request changes, and comment without a browser round-trip.

g p+g P+f
coco ui
08

History mutations, with a real undo button

Revert, reset, rebase, and cherry-pick from the history view. Cursor to any commit and apply the operation with a single key. Made a mistake anyway? z is lazygit's undo safety blanket, reflog-powered: it reads what actually just happened, shows you the exact inverse it's about to run, and reverts it on confirm — no manual reflog archaeology required.

g+h+z
coco ui
09

Batch it: mark, range-select, one confirm

Stop deleting five stale branches five separate times. x marks a branch or stash and auto-advances to the next; v anchors a range extended with j/k. Delete the marked branches, drop the marked stashes, or cherry-pick a whole commit span as one git cherry-pick oldest^..newest — the confirm panel names every item so nothing runs blind.

x+v+D
coco ui
10

Resolve conflicts in place

When a merge, rebase, cherry-pick, or revert stops on conflicts, the conflicts view lists every file. Keep theirs (u) or keep ours (U) per file, or open it in your editor — then continue the operation (C) once it's clean, without dropping to the shell.

g+x+u/U
coco ui
11

Bisect a regression

Drive git bisect from the workstation: mark the cursored commit good (g) or bad (b) and watch the candidate range collapse toward the culprit, with a running decision log and the revisions-left estimate — no remembering the bisect verb soup.

g+B+g/b
coco ui
12

Fits any terminal

Down to an 80×24 tmux split, the three-pane IDE folds to a single full-width pane you Tab between — no feature locked behind screen real estate. Press v to peek the sidebar without losing your place, then snap right back.

Tab+v
coco ui
~/coco $ power-moves

Power moves

The high-leverage gestures that reward discovery — diff any two refs, surface every key, and stage in bulk.

coco ui

Compare any two refs

Mark a branch, tag, or commit with m, then Enter on another to read the full base..head diff — without leaving the workstation or remembering git diff syntax.

mthen
coco ui

Discover every key

Press g for a live which-key menu of every view jump, or g? for the single-key actions in the view you're in. The density that makes it fast never leaves you stuck — there's no cheat sheet to memorize.

gtheng?
coco ui

Stage in bulk

Stage everything with A, or type a git pathspec with + — a path, a directory, or a glob like src/*.ts — to stage exactly the set you mean. Globs go straight to git, no shell.

Athen+
coco ui

Search by what changed, not just when

Filter history by diff content, not just message or author: /S:token finds commits that added or removed a string (git log -S), /G:regex finds commits whose patch matches a pattern (git log -G). Same live-filter UX as path:/author:.

/thenS:
~/coco $ commit · changelog · split

Sharp commands, too

The workstation isn't the whole story. coco's standalone commands bring the same AI to your everyday flow — no TUI required.

coco commit

AI-drafted Conventional Commit messages from your staged changes.

coco
coco changelog

Release notes generated from any branch, range, or tag.

coco
coco commit --split

Break a messy staging area into clean, AI-planned commits.

coco
~/coco $ ui --theme

108 ways to make it yours

From Catppuccin to Gruvbox to Synthwave — every preset is a complete palette, surface and all. Plus full NO_COLOR support for minimal environments.

Browse all themes
108 built-in themes · hover to pause, click to enlarge

NO_COLOR support

Set NO_COLOR=1 to strip all color output. Respects the no-color.org convention.

~/coco $ compare

How coco stacks up

Coming from another Git client? Here's what you get with coco ui.

Featurecoco uiGitKrakenlazygitgituitig
Terminal-native (no Electron)
Keyboard-first navigation~
Hunk-level staging
AI commit messages~
AI code review
AI changelog generation
AI commit splitting~
Multi-provider / local AI
Multi-forge (GitHub + GitLab)
One-keystroke PR / MR creation
Issue + PR / MR triage
Conflict resolution helper~~
Bisect & reflog recovery~~~
Global undo (reflog-powered)~
Multi-select / batch operations~~
Content search (pickaxe -S / -G)~~
Recursive submodule drill-in~~
Theming + NO_COLOR~~~~
Free & open source
first-class~ partial / possible not availableComparison is a fair-faith snapshot; corrections welcome.

Try the workstation

Install coco and launch the TUI. One command to get started.

npx git-coco@latest init