Skip to main content

AgentJury

tests Python 3.11+ License: MIT

Peer review for AI agents.

Your agent says the task is finished. AgentJury asks independent, blind AI reviewers whether the work is good enough before you trust it.

Each reviewer votes ▲ approve, ▼ revise, or – abstain. AgentJury combines those opinions with deterministic rules. No final LLM gets a deciding vote.

Controlled Institutional Private-Credit Pilot.md   +43
▲4 ▼1   score 8.7   consensus 80%   verified

AgentJury is framework-independent. The first live integration is Hermes, and the core protocol works with any system that can build a ReviewRequest.

Looking for testers

AgentJury is in public alpha. I am looking for developers running real agent workflows who are willing to test the jury on completed tasks and report where it fails.

Useful feedback includes:

  • the framework or agent you used
  • the reviewer panel and models
  • the verdict, latency, and approximate cost
  • reviewer disagreements or false findings
  • installation friction and integration problems

Open an issue at https://github.com/madad-rashid/AgentJury/issues. Please do not post proprietary task content or API keys.

Quick start

Install AgentJury from PyPI:

pip install "agentjury[all]"

Set OPENAI_API_KEY and ANTHROPIC_API_KEY in your environment or a local .env file, then review an agent output:

agentjury review task.md output.md

Example:

▲2 ▼1  score 7.0  consensus 67%  diversity 67%  jury 3/3  verified
jury confidence index 35%  (heuristic, not a probability)

▲  8  accuracy/openai        Sourced figure, drivers accurately characterized.
▼  5  critic/anthropic       Citation has no year or report; one claim is unsupported.
▲  8  executive/openai       Concise and decision-ready.

Choose your own panel:

agentjury review task.md output.md \
  --panel accuracy:openai,critic:anthropic,evidence:anthropic,executive:openai

Run agentjury roles to see the built-in roles. Every verdict is saved to .agentjury/verdicts/.

Architecture

flowchart LR
    A[Agent or framework] --> R[ReviewRequest]
    R --> O[OpenAI judge]
    R --> C[Anthropic judge]
    R --> X[Local or custom judge]
    O --> G[Deterministic aggregator]
    C --> G
    X --> G
    G --> V[Verdict]
    V --> H[Human adjudication]
    H --> P[(Future reviewer reputation)]

AgentJury separates generation from verification. Reviewers see the task and output, but never see one another's votes before submitting their own.

Design principles

  • Blind review. Judges do not see other reviewers' opinions before voting.
  • Deterministic aggregation. No model acts as a final arbiter.
  • Provider diversity. A multi-provider jury cannot verify work from one provider's judges alone.
  • Strict quorum. Failed calls and abstentions do not silently become approval.
  • No unilateral block. A single reviewer cannot block a task by itself.
  • Auditable identity. Requests, runs, reviews, reviewer configurations, and findings each have stable IDs.
  • Human adjudication. Individual findings can be graded so reviewer reliability can later be measured from evidence rather than assumed.
  • Framework independence. AgentJury reviews work produced elsewhere. It is not another agent framework.

How a verdict is reached

Judges vote ▲ approve, ▼ revise, or – abstain. Abstentions are recorded but never counted as approval, and they count against quorum.

No single judge can block. blocked requires blocking findings from two different providers. One blocking finding downgrades the result to needs_revision.

A panel needs a quorum of voters, by default a strict majority of requested judges:

1→1, 2→2, 3→2, 4→3, 5→3, 6→4

A panel built from several providers must also hear from at least two of them. Otherwise the status is insufficient_jury and the votes are informational only.

Each judge call has a timeout, one retry on provider error, and one repair round-trip if the reply is not valid JSON. A failed judge is recorded as an error and the rest of the panel continues.

Exit codes:

0  verified
1  needs_revision
2  blocked
3  insufficient_jury

The confidence figure is a heuristic index, not a calibrated probability. The plan is to calibrate it against human adjudication once enough real data exists.

Judges treat everything they review as untrusted data. Instructions hidden inside an agent output are treated as content, not reviewer instructions. tests/test_adversarial_live.py attacks the jury with examples/injected_output.md; run it with AGENTJURY_LIVE=1.

Adjudication

Reputation is designed to come from human grading of individual findings, not from treating an entire review as one correct or incorrect event.

agentjury verdicts --dir <where-verdicts-live>
agentjury adjudicate 9a9a900dc86b --judge critic/anthropic \
    --finding 1 wrong --finding 2 wrong --finding 3 correct \
    --verdict disagree --note "figure is in the cited source"
agentjury adjudicate 9a9a900dc86b --producer-verdict correct

Findings are numbered as displayed. Grades are written back into the verdict JSON as current state and appended as events to adjudications.jsonl in the same folder. The event log records who changed which finding, from what to what, when, and why.

Set AGENTJURY_VERDICT_DIR to avoid repeating --dir.

Identity hierarchy:

  • request_id: the work being evaluated
  • run_id: one jury execution of that request
  • review_id: one judge's opinion
  • config_id: the reviewer configuration used for future reputation measurement, including provider, model, role, prompt hash, and relevant parameters
  • finding.id: one specific issue raised by a reviewer

Verdicts are saved as <request_id>-<run_id>.json.

Custom roles

Give a jury domain expertise with a JSON file of {"role_name": "description"}:

agentjury review task.md output.md \
  --roles examples/roles.json \
  --panel accuracy:openai,domain_expert:anthropic,executive:openai

Integrations

Hermes Agent

integrations/hermes/ contains the first live integration. It reviews substantial Hermes responses in the background, saves verdicts, writes verdict metadata into markdown frontmatter, and feeds major findings back on the next relevant turn.

See integrations/hermes/README.md for installation and configuration.

Adapters for other agent frameworks are welcome. See CONTRIBUTING.md.

Protocol

Current schema: 0.5.

Print the schemas with:

agentjury schema request
agentjury schema verdict

The main objects are:

  • ReviewRequest: task, agent output, optional context and artifacts, task type, domain, and producer metadata
  • Review: one independent judge opinion with vote, score, reason, findings, IDs, reviewer configuration, telemetry, and adjudication slots
  • Verdict: deterministic aggregate with votes, score, consensus, diversity, confidence index, status, and the underlying reviews

Every field needed by the planned reputation system is recorded from the first review. Reputation weighting is not active yet.

Development

See CONTRIBUTING.md for local setup, tests, judge-provider adapters, framework integrations, and pull requests.

See docs/PUBLISHING.md for the release and PyPI checklist.

Status

Public alpha. The core aggregation rules are intentionally stable while real verdicts are collected through the Hermes integration and direct CLI use.

The next research step is reviewer reputation by task type using human-adjudicated findings, followed by diversity weighting from observed disagreement patterns.

Roadmap

  • Protocol schema
  • Judge interface with OpenAI and Anthropic adapters
  • Deterministic aggregator
  • CLI: agentjury review task.md output.md
  • Hermes integration
  • Review-event schema with telemetry and adjudication slots
  • Quorum, non-unilateral blocking, prompt-injection defence, custom roles
  • Abstain vote, provider floor, retry, repair, timeouts, CI
  • Human finding-level adjudication and append-only adjudication history
  • PyPI release
  • Additional judge providers and local-model adapter
  • Reviewer reputation by task type, weighted by human agreement over time
  • Jury diversity weighting from historical disagreement
  • Calibrated confidence from observed outcomes

License

MIT

Download files

Download the file for your platform. If you're not sure which to choose, learn more about installing packages.

Source Distribution

agentjury-0.4.4.tar.gz (33.7 kB view details)

Uploaded Source

Built Distribution

If you're not sure about the file name format, learn more about wheel file names.

agentjury-0.4.4-py3-none-any.whl (25.7 kB view details)

Uploaded Python 3

File details

Details for the file agentjury-0.4.4.tar.gz.

File metadata

  • Download URL: agentjury-0.4.4.tar.gz
  • Upload date:
  • Size: 33.7 kB
  • Tags: Source
  • Uploaded using Trusted Publishing? Yes
  • Uploaded via: twine/7.0.0 CPython/3.13.14

File hashes

Hashes for agentjury-0.4.4.tar.gz
Algorithm Hash digest
SHA256 d24855e5b2917dcf906cd4200d02214b639fc71582c30aecb7766155e4f37ee5
MD5 4be01feb96bd989e06bd0ed9dbb65102
BLAKE2b-256 97d42b6de91905448223f830e6ed18cc04b61105e66499cc9ce1c04edc631e10

See more details on using hashes here.

Provenance

The following attestation bundles were made for agentjury-0.4.4.tar.gz:

Publisher: publish.yml on madad-rashid/AgentJury

Attestations: Values shown here reflect the state when the release was signed and may no longer be current.

File details

Details for the file agentjury-0.4.4-py3-none-any.whl.

File metadata

  • Download URL: agentjury-0.4.4-py3-none-any.whl
  • Upload date:
  • Size: 25.7 kB
  • Tags: Python 3
  • Uploaded using Trusted Publishing? Yes
  • Uploaded via: twine/7.0.0 CPython/3.13.14

File hashes

Hashes for agentjury-0.4.4-py3-none-any.whl
Algorithm Hash digest
SHA256 6e0ed13c57b89ef0c1318b3d3112c312ec5636b329799df3b8e521e3a5b798a5
MD5 d89d0d410e5429c2117028028bce3d40
BLAKE2b-256 1871975b9726526be25fa40fbbe15b8539ed216484c39c3ff5d903bb9edc1757

See more details on using hashes here.

Provenance

The following attestation bundles were made for agentjury-0.4.4-py3-none-any.whl:

Publisher: publish.yml on madad-rashid/AgentJury

Attestations: Values shown here reflect the state when the release was signed and may no longer be current.

Release history Release notifications | RSS feed

This release

0.4.4 This release

2 files

0.4.3

2 files

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