Review before the one-way door
galley
Before force-pushing an in-review PR, opening a PR on a repo you don't own, or merging a branch an agent wrote, galley builds a single reviewable page out of what is actually on the branch right now — and collects your objections on it before anything goes out. Every figure is re-derived from a command at the current HEAD. Nothing outward happens from the tool.
$ galley facts branch feat/retry-backoff → origin/main commits 3 · files 7 · +214 −38 · tree clean push would rewrite remote history $ galley coverage added lines never executed: internal/retry/backoff.go 41–48 exit 1 — every added line wants a run $ galley serve review.html --on-comment 'muster nudge galley' ● serving http://localhost:8123 — the review page is live comment backoff.go#L44 "why fixed 2× and no jitter?" ●
what it's for
A force-push replaces history someone may be reading. A first PR to an upstream repo is a first impression. An agent-written branch merges with whatever nobody caught. These are one-way doors — and the natural moment to look hard at a branch is the moment before it goes through one. galley exists for exactly that moment. It found seven real problems across two rounds on the pull request it was built for — including a doc header asserting the opposite of the code below it — and the PR merged with zero further review comments.
An agent produced a large diff and is ready to merge. galley gives the branch a real review surface first: the diff, the claims, and the coverage in one page, with your objections collected before the merge instead of after the incident.
Assembling the page re-derives every number from the current HEAD — base, commits, files, patch coverage. Nothing comes from memory or a stale description, so a PR body describing a design the diff no longer contains gets caught here.
galley facts answers "what am I about to push?" — and says
plainly when the push would rewrite remote history, before you learn it from a
teammate.
galley coverage computes patch coverage the way the bot will:
added lines ∩ never-executed lines. It exits non-zero when any added line went unrun,
so it composes into CI and agent loops as a plain check.
how it works
The review page is a live document, not a report. The reviewer reads and objects in the browser; the person — or agent — answering holds the same document from the command line. Replies land on the reviewer's screen as they're written.
reply and
resolve from the CLI appear on the reviewer's page live — a
review conversation between a human and an agent, on the artifact itself.
--on-comment 'muster nudge galley' runs a command when
comments settle — debounced on a quiet period and fingerprinted on content,
so typing never wakes anyone mid-sentence, and an edit you undo wakes
nobody at all.
wasm_exec.js and a thin DOM shim.
One static binary serves the whole thing.
Every command speaks --json, so a person, CI, or an agent can drive the same
review without any of them reimplementing the others.
the cli
suggest, accept, and
reject for propose-and-decide editing. PR descriptions and
design docs get the same review as the code.
licensing
galley is Fair Core software: the source is public, and each release becomes Apache-2.0 two years after it ships.
free forever
facts and coverage — the audit
commands — free for everyone, no key, no trial clock.
14-day trial
Everything else — the live review and edit surfaces — fully functional for 14 days, starting the first time you serve a page.
one-time license
A personal license with 12 months of updates. Every release from inside your window keeps working forever — no subscription, no phone-home, keys verify offline.
Activation is one command: galley license activate <key>. The binary
never talks to a server — a key is a signed token your machine verifies itself.
setup
Releases — with a Homebrew tap, signed macOS builds, and the source opening up under Fair Core — land with the first public release. The 14-day trial in every build is full-featured.
# macOS / Linux, arm64 & amd64 — coming with 1.0 $ brew install schuettc/tap/galley $ galley facts
Want a key or a build before then? court@subaud.io.