Salient

01 Open source

pairmark.

Run Claude Code and Codex on the same task in your own repo, side by side, and get a verdict backed by evidence.

npx pairmark "add rate limiting to POST /api/login"
A pairmark receipt. Task: add a runs subcommand. Verdict: Claude Code wins on the checks. Claude Code 3m 28s, 4 files, all checks pass, judges 8.6 of 10. Codex 5m 15s, 5 files, all checks pass, judges 8 of 10.
A real receipt from pairmark's first race on its own repository. Both patches passed every check. Codex also fixed a build-script bug, which touched package.json, so the checks rule went to Claude Code and Codex's dissent was recorded.
1command
2isolated worktrees
0API keys
1file to share

What it does

Every AI native argues about which coding agent is better. Nobody has evidence from their own codebase, because getting it means two worktrees, two CLIs, two sets of flags, running the tests twice and reading two diffs. pairmark does all of that in one command and produces one file people can post.

Live split screen

Both agents on one clock. Every file written, every command run, every message, streamed to a local page while it happens.

Evidence before opinion

The repo's own checks run in each worktree after the race: tests, type check, lint, build. Time, files, lines, tokens and cost sit in one table.

Blind cross-judging

Each agent reviews both patches labelled A and B in random order and scores correctness, completeness, quality and safety with citations. Neither knows which patch is its own.

A receipt

A 1200 by 630 image and a copyable summary, built for posting. The whole report is one HTML file with nothing external.

Both patches, kept

Apply the one you want to your working tree with one command. Or neither.

Nothing to sign up for

It runs on the Claude Code and Codex subscriptions you already have. No API keys, no accounts, no server, no data leaving your machine except the calls the two CLIs make on their own.

How the verdict works

The rules are short enough to read, and the report names the one that applied.

  1. 01

    If only one agent changed any file, it wins by default and the report says so.

  2. 02

    If exactly one patch passes every check without touching the check configuration, it wins. Judge scores are shown as commentary, with dissent when a judge disagrees.

  3. 03

    Otherwise, if both judges pick the same patch, it wins.

  4. 04

    If the judges split, or both call it a tie, the result is a tie and the dissent is shown.

  5. 05

    If neither judge returns a decision, the report shows the evidence only.

Patches that modify test, lint or type-check configuration are flagged and cannot win on the checks alone. Diffs and check logs are handed to the judges as untrusted data. The brief never tells either agent that a race is on.

Why we built it

Salient ships AI systems for a living. The question we get most is not which model is smarter. It is which agent is worth trusting on this repo, this week. We wanted an answer with a diff attached.

The tool was designed in a two-round discussion between Claude Code and Codex, then built by Claude Code in a single session on 2 September 2026. The transcript ships in the repository. Its own runs command was written by the winner of a race on its own repository, and that report ships too.

If you want the same discipline applied to an agent or an AI feature in your product, that is the work we do.

Requirements

  • Node 20 or newer, and git
  • Claude Code on your PATH, signed in
  • Codex CLI on your PATH, signed in
  • A JavaScript or TypeScript repository with a package.json
npx pairmark doctor

MIT licence. Zero runtime dependencies.