Rejudge is a review tool for coding agents. Your agent asks a question, several models check the code separately, and a judge compares their reports and returns one answer.

A real run: three models check shipping.js against its spec, then the judge writes the answer.

Why several models

There are four ways to check code an agent wrote. Each one catches more than the last.

I. Same session, same model.
The agent rereads its own code. It already decided this code is correct, and reading it again does not change that decision.
II. New session, same model.
The context is clean, the model is not. It has the same training and the same habits, so it accepts the mistakes it would have written itself.
III. A different model, its own session.
A different model does find real bugs. But you now have two opinions, and when they disagree, you are the one who decides which is right.
IV. Rejudge: three models and a judge.
All three models get the same question at once. Each one works in an isolated context and makes its own tool calls, so none of them sees what the others do. The judge reads all three reports, asks follow-up questions where they disagree, and writes one answer. When all three report the same problem, three independent checks agree on it. When they split, the judge resolves it instead of you.

How it works

Your agentasks a questionModel Xwrites its findingsModel Ywrites its findingsModel Zwrites its findingsJudgecompares the findingsAnswerbased on all findings+ Run IDto resumeYour agentasks a questionModel Xwrites its findingsModel Ywrites its findingsModel Zwrites its findingsJudgecompares the findingsAnswerbased on all findings+ Run IDto resume

Reviewers get read-only tools: read, grep, find, ls, git diff. By default they cannot edit files or run shell commands. The judge gets no access to the workspace at all: it sees the three reports and can ask the reviewers more questions, nothing else. Every run ends with a run ID, and rejudge --resume <run-id> reopens the same sessions with a new question.

Quick start

01 Install Rejudge

npm install -g rejudge

Using a coding agent other than Pi? Install the Agent Skills so it can call Rejudge, through the Skills CLI. Pi is not required on this path.

npx skills add syabro/rejudge -g

The skills are a separate copy, so update them after each Rejudge release with npx skills update -g -y.

Already using Pi? Register this same installation: pi install "$(npm root -g)/rejudge"

02 Connect a provider

Rejudge runs on Pi and reads Pi's provider settings, so any key Pi accepts works here: ANTHROPIC_API_KEYOPENAI_API_KEYGEMINI_API_KEYOPENROUTER_API_KEYOPENCODE_API_KEY and more — the full list is in the Pi docs.

I personally use OpenCode Go because it offers an excellent mix of models for $10 a month (referral link: $5 for you, $5 for me).

Using a subscription instead of API keys?

For subscription logins Rejudge still goes through Pi. If Pi is not authorized yet, run:

npx -y @earendil-works/pi-coding-agent

Inside Pi, run /login and finish sign-in with your subscription provider.

03 Pick your models

Create ~/.config/rejudge/config.json once.

{
  "reviewers": [
    "opencode-go/deepseek-v4-pro@high",
    "opencode-go/mimo-v2.5-pro@high",
    "opencode-go/minimax-m3@high"
  ],
  "judge": "opencode-go/glm-5.1@high"
}

Two reviewers minimum. Every model needs a reasoning level, and a higher level means a longer and more thorough review: minimal, low, medium, high, xhigh.

04 Ask

rejudge "does this migration need a lock?"
git diff | rejudge "review this change"
rejudge --resume <run-id> "what about the rollback path?"

The answer goes to stdout; progress, config, and the run ID go to stderr, so redirecting stdout to a file leaves you the answer and nothing else. Inside Pi the same package registers a native rejudge tool plus the /rejudge and /rejudge-diff workflows.