hunkworks

A magit-shaped Git porcelain for macOS.

One buffer, one cursor, keys that mutate the repository directly — no dialogs, no forms.

Download for macOS · Apple Silicon · macOS 11+ · $9/year · 14-day trial, no account

Twenty seconds, hands on the keys

The whole loop is s s c: stage a file, stage the next, commit — the cursor never leaves the buffer and the diff never leaves the screen. Keyboard-driven speed is the product; prose cannot convey it.

Why hunkworks

One buffer, one cursor

Status, log, diff and review are one scrolling buffer around three persistent bars — tabs, mode, hints — and the hint bar's chips are the keys that act on the row under the cursor. Sections with nothing in them are not drawn; a clean worktree says so.

┌────────────────────────────────────────────────────────────────────┐
│ hunkworks  ⟨ myrepo ×⟩ ⟨ other-repo ×⟩                                │
├────────────────────────────────────────────────────────────────────┤
│ ● main   1 staged · 1 unstaged · 1 untracked              [Status] │
├────────────────────────────────────────────────────────────────────┤
│ ╭ Staged  1 ─────────────────────────────────────────────────────╮ │
│ ┃ [A] new.rs                                                 +9  │ │
│ ╰──────────────────────────────────────────────────────────────╯ │
│ ╭ Unstaged  1 ───────────────────────────────────────────────────╮ │
│ │ [M] src/lib.rs                                          +1 −1  │ │
│ │     ╭ @@ -12,7 +12,7 @@ ─────────────────────────────────────╮ │ │
│ │     │ -    old line                                          │ │ │
│ │     │ +    new line                                          │ │ │
│ │     ╰──────────────────────────────────────────────────────────╯ │
│ ╰──────────────────────────────────────────────────────────────╯ │
│ ┌ Untracked  1 ──────────────────────────────────────────────────┐ │
│ │ [?] scratch.txt                                                │ │
│ └────────────────────────────────────────────────────────────────┘ │
│ Recent commits ──────────────────────────── l - full log          │
│ a1b2c3d main fix: the thing                you     2026-08-27      │
├────────────────────────────────────────────────────────────────────┤
│ ON THIS FILE [s stage] [TAB expand] [K discard]                       │
└────────────────────────────────────────────────────────────────────┘

The agent review loop

An agent reads the review you left it and answers each comment — over hunkworks mcp (the tools review_status, review_comments, review_reply, review_diff) or the same four verbs from a shell. Drafts are invisible to agents until you seal the pass with S; agents reply and may claim addressed; resolving is yours.

hunkworks review status                          # base, pass state, counts
hunkworks review list --state all                # including resolved ones
hunkworks review reply 7 "fixed, see 9f1c2ab" --addressed
hunkworks review diff --basis since_last_pass    # only what moved since the last pass

Native, not Electron

Skia paints it, libgit2 does the git, and no browser engine ships inside. The app is one signed binary; hooks run exactly where git runs them.

Keys

Magit's shape — one buffer, everything a key away, the diff always under the cursor — carried to macOS natively. If you know magit this table reads like home; if you don't, the hint bar teaches the keys as you go.

Status buffer

j / k, / move between selectable rows
TABexpand/collapse the file under the cursor into hunks
grefresh from disk; the cursor stays anchored
s / ustage / unstage the file or hunk under the cursor
S / Ustage / unstage everything
Kdiscard the change under the cursor (asks first)
ccommit menu: commit, amend, extend, reword
llog; RET opens the commit under the cursor
vreview: everything since the base, committed or not
ycopy the sha under the cursor
b z w fbranch, stash, worktree, forge menus
ttheme picker, previewing as the highlight moves
?help
qback one screen; on status, ask to quit

Review

j / k, TABmove in the focused pane; TAB crosses file list ⇄ diff
[ / ]previous / next hunk, crossing into the neighbouring file
ccomment on the line, hunk or file under the cursor
rreply to the thread under the cursor
xresolve or reopen; X deletes
n / pnext / previous thread, anywhere in the review
Sseal the pass: drafts become visible to the agent
Zdiscard the pass's drafts
abasis: all changes ⇄ since your last pass
B g qbase menu, refresh, back to status

Buy once a year

$9 /year

Per person, on every Mac you use. Twelve months of updates included; the last version inside your window keeps working forever, even if you never renew.

When the trial ends, reading stays free forever — status, log, diffs, review, the agent surface. A licence never holds your repository hostage; only the mutating keys wait.