Most PRs that are generated by agents today get YOLO merged because its hard for human mind to comprehend when your agent just suddenly shows up with 230 file changes. This is an attempt to reduce the mental burden by classifying each change in a review to P0, P1, P2. Only P0 are shown by default. The priorities are configurable. The diffs are also show using a natural language. The original code is one toggle away.
It runs on your computer, for reviewing your own coding agent's PRs, and posts nothing to GitHub.
Watch the recording · Open the demo PR. The bundled recording uses real Jev classifications and labeled, prepared explanation copy (provenance).
Quick demo
Needs Node.js 22+.
git clone https://github.com/egma-ai/jev-code-reviewer.git
cd jev-code-reviewer
npm install
npm run demoOpen http://127.0.0.1:4731/demo for the replay, which makes no provider calls, or load the extension (below) and open the demo PR's Files changed page.
Review your own PR
Needs the GitHub CLI signed in (gh auth login) and a local clone whose origin is the PR's repository.
npm link # adds the jev-reviewer command jev-reviewer setup # stores your TypeSafe and OpenAI keys; run it in your own terminal jev-reviewer doctor # checks tools, key sources, the local server, and provider access jev-reviewer serve # leave running jev-reviewer analyze --pr https://github.com/OWNER/REPO/pull/123 --repo /path/to/clone
Then in Chrome:
- Open
chrome://extensions, turn on Developer mode, click Load unpacked, and pick this repo'sextension/folder. - Run
jev-reviewer token | pbcopy. In the extension popup, open Connection, paste, and click Save. It should say Paired. - Open the PR's Files changed page (
/pull/<n>/files) and turn on Show logic in place of code.
Optional: uv tool install graphifyy adds a local code graph for better context. To have your coding agent run analyze after it opens a PR, install the agent skill.
Good to know
- Your code leaves your machine.
analyzesends changed code and nearby context to TypeSafe and OpenAI. The extension only talks to the local server on127.0.0.1:4731. - Keys are stored in
~/.config/jev-reviewer/credentials.json(owner-only, not encrypted). Prefer this over exported variables, which a coding agent's shell often cannot see. Replace an OpenAI key withnode scripts/setup-keys.mjs --replace-openai. - Coverage is capped. The first 12 change units (diff hunks) in path order are analyzed;
--max-unitsallows up to 100. Files with an unanalyzed change keep GitHub's code, and the CLI and popup say how many. - Classic Files changed page only. GitHub's new
/changespage is not supported yet; switch back under your profile picture → Feature preview. - Old reports are never shown. If the PR has newer commits, the extension keeps GitHub's code: rerun
analyze, then click Refresh report. - Priorities mean attention, not correctness. P0 files open by default; P1 and P2 start collapsed. Tune them by copying
config/policy.jsonto.jev-reviewer.jsonin the reviewed repo, or pass--policy.
Development
npm test node scripts/test-extension.mjs # needs Chromium and port 4731 free
See architecture, demo guide, and extension details.
MIT.
