Skip to main content
Pre-release

This release is a pre-release and may not be stable for production use.

judgekeeper logo

judgekeeper

PyPI version Python 3.11 to 3.14 Tests on main MIT license Status: beta

Check your LLM-as-a-judge.

See how often it agrees with human labels, in one command.

An LLM-as-a-judge is an AI model that grades the answers of another AI model. Teams use one because reading every answer by hand is slow.

The marking page: a question, your app's answer, and equal Fail and Pass buttons. What your judge decided stays hidden.

Use it on your own judge

cd your-project
uvx judgekeeper@1.0.0b1

You need Python 3.11 or newer and uv. The version is in the command because uv and pip skip betas unless you name one. Without uv, install it in your project's own Python environment, then run it:

pip install judgekeeper==1.0.0b1
judgekeeper
  • It reads the results your eval tool already saved (promptfoo, DeepEval, Inspect AI, MLflow, or a CSV) and checks your judge's verdicts for free.
  • It opens a page in your browser. You mark answers Pass or Fail without seeing what your judge said.
  • Run it again the same way when you are done: it shows how often your judge agrees with you.
  • No AI calls and no API key. judgekeeper never runs your app.

This is a beta: fixing your judge and re-checking it on its own are coming.

With a coding agent

Paste this into Claude Code, Codex or Cursor:

Run `uvx judgekeeper@1.0.0b1` in this project and follow what it says.

The agent runs judgekeeper and tells you when the page is open; you do the marking. Its rules are in one file, skills/judgekeeper/SKILL.md.

What you get

TPR: of the answers you passed, how many your judge passed. TNR: of the answers you failed, how many it failed. Kappa: how much you agree beyond chance. Each comes with a range, and judgekeeper says the smallest drop your marks can see. The numbers are estimates from the answers you marked, not a promise about the next ones.

Numbers

  • Its ranges hold on real data. We tested the ranges for how often the judge passed answers people passed (TPR) and how often it failed answers people failed (TNR). We used 5 real judges from 3 public datasets (LLMBar, MT-Bench, LLMJudge), with 50 human labels per check, over 1,000 checks per judge. On average the value from all the human labels fell inside the range in 96.0 checks in 100 (lowest 94.6, highest 98.4). Real-data check
  • One of those checks: GPT-4 as the judge on MT-Bench, 50 labels: TPR 0.82 (range 0.71 to 0.91), and the value from all 1,814 human labels is 0.85; TNR 0.49 (range 0.36 to 0.65), and from all labels 0.56.
  • In simulation too: the ranges held the true value at least 93.6 times in 100 in every tested case, and 96.2 on average. Coverage check
  • A real judge, checked: Claude Haiku 4.5 on LLMBar, 419 items: TPR 0.95, TNR 0.88, kappa (agreement after taking away lucky guesses) 0.83. Report
  • Tested on Python 3.11 to 3.14 on Linux, and on Windows. Test runs

Status

Beta (1.0.0b1): commands and report fields may still change. judgekeeper --help lists every flag, and the changelog says what changed.

Issues

This project is maintained by one person and does not accept pull requests. Bug reports and ideas are welcome as issues.

License

MIT, for the code. The name judgekeeper and the logo are not covered: see TRADEMARKS.md.

Metadata

Release files for judgekeeper 1.0.0b1

For a detailed explanation of source distributions (sdists) and built distributions (wheels), please see the package formats documentation.

Source distribution (sdist)

Source distribution for judgekeeper 1.0.0b1
File Size Uploaded
judgekeeper-1.0.0b1.tar.gz 337.8 kB Details

Built distribution (wheel)

Table of built distributions (wheels) for judgekeeper 1.0.0b1
File Interpreter ABI Platform
judgekeeper-1.0.0b1-py3-none-any.whl Python 3 none any Details

Total release size: 709.5 kB

Release files / judgekeeper-1.0.0b1.tar.gz

Download URL judgekeeper-1.0.0b1.tar.gz
Size 337.8 kB
Tags Source
SHA-256 checksum
How to use checksums
c117fe4aee48fef3e1603831bf395056fd7aa25fa188ddff5c4bca2bb696e002
BLAKE2b-256 checksum
How to use checksums
a0dca49131d95d229fe07c5669a4f269d41f0c3165fc6a0b13a8511d88587e42
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
Yes
Uploaded via twine/7.0.0 CPython/3.13.14

Provenance

Provenance describes where a file came from. On PyPI, provenance is shared via attestations, which provide a verifiable record of the build or publishing details. View details, limitations and caveats.

PyPI Publish Attestation

PyPI verified that this artifact, at this checksum, originated from the publisher listed below.

Signed by GitHub Actions, verified by PyPI on Oct 13, 2026.

Transparency log

Release files / judgekeeper-1.0.0b1-py3-none-any.whl

Download URL judgekeeper-1.0.0b1-py3-none-any.whl
Size 371.8 kB
Tags Python 3
SHA-256 checksum
How to use checksums
8bac6da18fdb2b377d330f47867b681b1ad50c0ac2a58bf828170a9a058823c8
BLAKE2b-256 checksum
How to use checksums
10bebea8b259cff8a79513f538ea9d877b3f8329a78e1199723e37d47608ab6b
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
Yes
Uploaded via twine/7.0.0 CPython/3.13.14

Provenance

Provenance describes where a file came from. On PyPI, provenance is shared via attestations, which provide a verifiable record of the build or publishing details. View details, limitations and caveats.

PyPI Publish Attestation

PyPI verified that this artifact, at this checksum, originated from the publisher listed below.

Signed by GitHub Actions, verified by PyPI on Oct 13, 2026.

Transparency log

Release history Release notifications | RSS feed

This release

1.0.0b1 This release

2 release files

0.1.3

2 release files

0.1.2

2 release files

0.1.0

1 release file

Anthropic, PBC Visionary sponsor Bloomberg Visionary sponsor Hudson River Trading Visionary sponsor Meta Visionary sponsor NVIDIA Visionary sponsor Microsoft Sustainability sponsor Depot Continuous Integration AWS Cloud computing and Security Sponsor Datadog Monitoring Fastly CDN Google Download Analytics Sentry Error logging StatusPage Status page