A desktop app for reviewing pull requests and your own local changes, built to catch business-logic regressions in AI-written code.
- No GitHub App. Everything goes through your existing
ghlogin. - AI on your subscription. Analysis runs
codex execin a read-only sandbox inside a git worktree of the PR head, so the model can read callers and older versions of the code, not just the diff hunks. - Nothing runs automatically. Opening a PR costs nothing until you press Analyze (
a). Results are cached per head commit. New commits show a stale banner, and re-analyzing reports what changed since the last run.
| Queue | PRs where your review is requested and open PRs you haven't reviewed, across the repos you choose. j/k to move, ↵ to open, ] jumps to the next PR from inside a review. |
| Diff | Unified/split view, syntax highlighting, existing review threads inline, per-file viewed state, AI risk dots per file. |
| Analyze | Summary: business impact, before→after behavior changes ranked by regression risk, questions for the author. Visualize: Mermaid before/after diagrams of the affected flow, plus lines changed by business area. Quality & CI: AI risk score and concerns, CI donut, failing checks, test-coverage ratio, churn, slowest checks. Activity: timeline of reviews, comments, threads, and commits, marking commits that are new since the last analysis. |
| Ask AI | Presets (data flow, what could regress, business rules changed, missing tests, architecture impact, charts, PM summary) plus free-form questions. Select diff lines and press e to ask about them. Follow-up questions resume the same Codex session. Answers render Mermaid and ```chart blocks. |
| Review | Inline comments (select lines, then c), comment, approve (⌘⇧↵), or request changes (⌘⇧R). Every submission shows a confirmation with the exact content. After approving, the app moves on to the next PR. |
| Local | Review uncommitted, staged, or branch-vs-default changes in any mapped clone, with the same Analyze/Ask tools. |
Press ? for all shortcuts.
brew install --cask ebsc-dev/tap/ebsc-review
gh auth login && codex loginThe cask needs macOS 13 or later and installs gh. Install Codex yourself. See RELEASING.md for how releases are built.
Prerequisites: gh (logged in), codex (logged in), Node 22+, pnpm, Rust.
pnpm install
pnpm tauri dev # run
pnpm tauri build # produce a .app / .dmgIn Settings:
- Add repos. Pick a local clone and the
owner/nameis read from its remote. Clones are used read-only. PRs are checked out into one app-owned worktree per repo (switched between PRs, so a big repo costs its size on disk once), and your clone only gains privaterefs/review/*refs. Settings → "Remove cached checkouts" reclaims the space. - Business context per repo. Write down the rules that aren't in the code; they're sent with every analysis as authoritative.
- Model override (optional). If your codex default model needs a newer CLI, set a model here, e.g.
gpt-5.5.
Data (SQLite cache, worktrees) lives in ~/Library/Application Support/dev.ebsc.review/.
pnpm test # vitest (diff anchoring, charts, timeline…)
pnpm typecheck
cd src-tauri && cargo test # gh/codex parsing, db, prompts, git
cargo clippy --all-targets -- -D warnings-
UI without the backend. Open
http://localhost:1420/?mockin a browser whilepnpm devruns (src/dev/mockIpc.tsserves the fixtures). -
Live end-to-end (real gh + git + codex):
cd src-tauri REVIEW_LIVE_REPO=owner/name REVIEW_LIVE_PR=123 REVIEW_LIVE_CLONE=/path/to/clone \ REVIEW_LIVE_MODEL=gpt-5.5 cargo test live_ -- --ignored --nocapture
src-tauri/src/
gh.rs gh CLI wrapper (queue, PR bundle, checks, threads, reviews)
git.rs local diffs, PR worktrees
ai/ provider trait + Codex adapter (add Grok here)
analysis.rs prompt building, structured analysis, Q&A, caching
db.rs SQLite (analyses, chat, viewed files, repos, settings)
src-tauri/prompts/ analysis prompt + JSON schema, ask prompt
src/features/ queue, diff, analysis tabs, ask, review, local, settings