AuraOne EvalKit
A local-first Python CLI for AI and LLM evaluation teams that need to turn evaluation rubrics, saved model outputs, and supplied human or judge labels into inspectable scores, QA diagnostics, and evidence reports.
AuraOne Open | Documentation | Source | Robotics ReviewKit
EvalKit covers the judgment layer around an evaluation run: rubric contracts, deterministic aggregation of labels you already own, reviewer and LLM-judge quality signals, dataset leakage checks, sampling, rubric versioning, dataset cards, and report generation. It does not run models, generate labels, manage a review workforce, or require a hosted AuraOne account.
Who It Is For
- Evaluation engineers building file-based AI or LLM evaluation pipelines.
- ML platform and model-quality teams adding rubric checks and score evidence to CI or release reviews.
- Human-evaluation and annotation leads measuring reviewer agreement, adjudication, drift, and calibration needs.
- Teams auditing saved LLM-judge outputs without calling a model provider during analysis.
- Researchers and developers who want versionable rubric, label, and report artifacts instead of a platform-only data model.
What EvalKit Does
| Workflow | Command | Result |
|---|---|---|
| Rubric schema validation | evalkit validate-rubric |
Structured issues with paths, row numbers, and suggested fixes |
| Rubric quality linting | evalkit lint-rubric |
Deterministic findings for vague, compound, duplicated, incomplete, or unscorable criteria |
| Label-based model scoring | evalkit score |
Weighted per-output scores, pass/fail status, missing-label diagnostics, and run summary |
| Evidence reporting | evalkit report |
Markdown, self-contained HTML, or normalized auraone.evalkit.report.v1 JSON |
| Reviewer agreement | evalkit agreement |
Percent agreement, Krippendorff alpha, applicable kappa metrics, adjudication rate, and breakdowns |
| Saved judge calibration | evalkit judge-calibrate |
Pairwise agreement, criterion disagreement, judge variance, prompt sensitivity, and unstable criteria |
| Reviewer or criterion drift | evalkit drift |
Batch-to-batch drift and instability findings |
| Local leakage checks | evalkit leakage-check |
Exact and near-duplicate evidence over local inputs and optional local references |
| Review sampling | evalkit sample |
Deterministic random, stratified, diversity, failure, disagreement, uncertainty, or regression samples |
| Rubric change review | evalkit diff-rubric |
Cosmetic, added, removed, rename-candidate, and scoring-impact changes |
| Weight sensitivity | evalkit weight-calibrate |
Scenario rankings and high-leverage rubric criteria |
| Dataset documentation | evalkit card init |
Eval or robotics dataset-card Markdown with visible data-status disclosure |
Why EvalKit
- Rubrics remain reviewable contracts. EvalKit accepts JSONL, JSON arrays,
and canonical
rubric-specobjects that can be diffed and versioned in git. - Scoring is explicit and deterministic. The scorer aggregates labels you provide. It does not create hidden judge labels or contact hosted services.
- QA signals share one local CLI. Agreement, judge calibration, drift, leakage, sampling, versioning, and reports operate on files rather than a required tenant or database.
- Evidence is portable. Outputs include structured JSON/JSONL plus human-readable CSV, Markdown, and self-contained HTML where supported.
- Boundaries are visible. Synthetic fixtures, omitted evidence, missing labels, and limitations are surfaced instead of being converted into validation or benchmark claims.
Install
EvalKit requires Python 3.10 or newer. Repository CI covers Python 3.10, 3.11, and 3.12.
Install the latest published release from PyPI:
python -m pip install --upgrade auraone-evalkit
The repository can contain changes that have not been published yet. To run the current checkout from the AuraOne Open repository root:
python -m pip install -e "./packages/evalkit"
For development and package verification:
python -m pip install -e "./packages/evalkit[dev]"
Quickstart
The commands below assume an editable source install from the repository root. They use synthetic tutorial files included in this checkout.
evalkit validate-rubric \
packages/evalkit/examples/tutorial/rubric.jsonl
evalkit lint-rubric \
packages/evalkit/examples/tutorial/rubric.jsonl
evalkit score \
--rubric packages/evalkit/examples/tutorial/rubric.jsonl \
--responses packages/evalkit/examples/tutorial/model_outputs.jsonl \
--labels packages/evalkit/examples/tutorial/labels.jsonl \
--format json \
--out /tmp/evalkit-tutorial-scores.json
evalkit report \
--input packages/evalkit/examples/reports/tutorial_input.json \
--out /tmp/evalkit-tutorial-report.html
The scoring output contains per-output weighted scores, pass/fail status, missing-label diagnostics, average score, and pass rate. The HTML report is a single offline file with explicit decisions, gates, findings, evidence, reproduction metadata, limitations, and omitted evidence.
Core Command Details
evalkit validate-rubric
Validates EvalKit JSONL or JSON-array rubric files and canonical rubric-spec
v1 JSON objects.
evalkit validate-rubric rubric.jsonl --format json
Output formats are text, json, and jsonl.
evalkit lint-rubric
Runs deterministic rubric-authoring checks before labels or scores depend on a criterion.
evalkit lint-rubric rubric.jsonl --format json --fail-on warning
Rules cover compound criteria, vague wording, missing examples, missing
weights, duplicate IDs or text, inconsistent severity, unscorable language,
unavailable context, unclear scoring boundaries, and weight totals. Rules can
be disabled explicitly with repeated --disable-rule arguments.
evalkit score
Aggregates supplied per-criterion labels into normalized weighted scores.
evalkit score \
--rubric rubric.jsonl \
--responses outputs.jsonl \
--labels labels.jsonl \
--pass-threshold 0.75 \
--format json \
--out scores.json
Output formats are json, jsonl, csv, and report-json. In --strict
mode, any missing criterion label fails the command.
evalkit report
Renders a score payload or report input as Markdown, self-contained HTML, or
the normalized auraone.evalkit.report.v1 JSON contract.
evalkit report \
--input report-input.json \
--out report.html
The output suffix selects the format; --format markdown|html|json overrides
it. HTML reports contain embedded CSS, no JavaScript, and no remote assets.
They separate identity, summary, quality gates, findings, evidence,
reproduction metadata, limitations, and omitted evidence.
QA And Dataset Workflows
From packages/evalkit/ in a source checkout:
evalkit agreement examples/quality/agreement/tutorial_labels.jsonl
evalkit judge-calibrate examples/quality/judge/tutorial_judge_outputs.jsonl
evalkit drift examples/quality/drift/tutorial_batches.jsonl
evalkit leakage-check examples/quality/leakage/tutorial_prompts.jsonl
evalkit sample examples/quality/sampling/model_outputs.jsonl --strategy random --n 10
evalkit diff-rubric examples/quality/versioning/rubric_v1.jsonl examples/quality/versioning/rubric_v2.jsonl
evalkit weight-calibrate examples/quality/calibration/rubric_weight_scenarios.json
Agreement, judge calibration, drift, leakage, and weight calibration support
--format text|json|jsonl. Sampling supports json and jsonl. Use
--no-color anywhere in the command, or set the standard NO_COLOR
environment variable, to disable ANSI styling in human-readable output.
Run evalkit --help or evalkit <command> --help for the authoritative command
surface.
Data Contracts
Rubric rows require:
criterion_iddomaintask_typecriterionweightseverityscoring_typeexamplesedge_casesdisagreement_risk
See the rubric schema documentation for field definitions and examples.
Scoring labels require:
output_idcriterion_idscore
Labels can also provide applicable and rationale. Scores are normalized by
scoring type, multiplied by criterion weight, and divided by applicable rubric
weight. Missing labels remain visible in each output record.
Runtime And Data Boundary
- Core commands run in the local Python process over file paths supplied by the user.
- No AuraOne account, API key, tenant, database, or private reviewer pool is required.
scoreaggregates existing labels; it does not run inference or create labels.judge-calibrateanalyzes saved judge outputs; it does not call OpenAI, AuraOne, or another model provider.leakage-checkcompares local items and optional local reference corpora. It does not perform web search or prove the absence of contamination.- HTML reports are generated locally and contain no remote runtime assets.
- Tutorial datasets and examples are synthetic. They are not expert-authored, human-validated, benchmark-grade, safety-certified, or suitable for model leaderboard claims.
Scope And Limitations
EvalKit is not a replacement for:
- A model runner or public benchmark harness that executes standard tasks.
- A hosted annotation platform with workforce management and task assignment.
- Domain-expert validation of rubric meaning or release criteria.
- A statistical guarantee that a reviewer, judge, dataset, or model is safe or production-ready.
- A contamination search across the public web or private corpora that were not supplied as input.
Use EvalKit when the job is to make the judgment artifacts around an eval run more inspectable, repeatable, and reviewable.
Proof And Verification
The repository includes synthetic fixtures, command tests, package metadata checks, deterministic report tests, and wheel/sdist content verification.
cd packages/evalkit
python -m pip install -e ".[dev]"
python -m pytest -p no:cacheprovider -q tests
python -m build
python scripts/verify_release.py dist
Package verification checks version alignment, required report templates and schemas, the Jinja2 runtime dependency, expected wheel/sdist contents, and the absence of private font files. Passing these checks validates the local build; it does not prove that a registry publication has occurred.
Documentation
- Documentation index
- Rubric schema
- Rubric linter
- Reviewer agreement
- Judge calibration
- Reviewer drift
- Leakage audit
- Sampling
- Rubric versioning
- Evidence reports
- Dataset cards
- Tutorial files
Next Actions
- Install the published package or the current source checkout.
- Run
validate-rubricandlint-rubricon one real rubric before scoring. - Score a saved output set with labels you already own.
- Add agreement, drift, leakage, or judge-calibration evidence where the release decision depends on those signals.
- Generate a self-contained report and store it with the evaluated inputs and source revision.
Contributing
Issues and focused pull requests are welcome. See the repository contributing guide, security policy, and AuraOne Open changelog.
License
MIT. See the repository LICENSE.
Download files
Download the file for your platform. If you're not sure which to choose, learn more about installing packages.
Source Distribution
Built Distribution
Filter files by name, interpreter, ABI, and platform.
If you're not sure about the file name format, learn more about wheel file names.
Copy a direct link to the current filters
File details
Details for the file auraone_evalkit-0.3.0.tar.gz.
File metadata
- Download URL: auraone_evalkit-0.3.0.tar.gz
- Upload date:
- Size: 65.5 kB
- Tags: Source
- Uploaded using Trusted Publishing? Yes
- Uploaded via: twine/6.1.0 CPython/3.13.12
File hashes
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
c9e06cd819aa72dd4b518c1d4da9a1f99262116d6f47f3f167b93341acd858e4
|
|
| MD5 |
4ce7fd9d1f9c3b8d4bd2839bb64f8c5d
|
|
| BLAKE2b-256 |
534a1404243ca860aeadda7a8471bc44ce7dbb7c69eacaa3faca076dc51f9bfc
|
Provenance
The following attestation bundles were made for auraone_evalkit-0.3.0.tar.gz:
Publisher:
release-python.yml on auraoneai/open
-
Statement:
-
Statement type:
https://in-toto.io/Statement/v1 -
Predicate type:
https://docs.pypi.org/attestations/publish/v1 -
Subject name:
auraone_evalkit-0.3.0.tar.gz -
Subject digest:
c9e06cd819aa72dd4b518c1d4da9a1f99262116d6f47f3f167b93341acd858e4 - Sigstore transparency entry: 2164971004
- Sigstore integration time:
-
Permalink:
auraoneai/open@4901733a5e59801dd95c83bffbcc9142cdd49fa9 -
Branch / Tag:
refs/heads/main - Owner: https://github.com/auraoneai
-
Access:
public
-
Token Issuer:
https://token.actions.githubusercontent.com -
Runner Environment:
github-hosted -
Publication workflow:
release-python.yml@4901733a5e59801dd95c83bffbcc9142cdd49fa9 -
Trigger Event:
workflow_dispatch
-
Statement type:
File details
Details for the file auraone_evalkit-0.3.0-py3-none-any.whl.
File metadata
- Download URL: auraone_evalkit-0.3.0-py3-none-any.whl
- Upload date:
- Size: 75.2 kB
- Tags: Python 3
- Uploaded using Trusted Publishing? Yes
- Uploaded via: twine/6.1.0 CPython/3.13.12
File hashes
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
47760f315419b9035df7d9e554dfa99b9199a4301bf7e5935529951ee1cf2669
|
|
| MD5 |
f313ad743369f438037da796f124a5a7
|
|
| BLAKE2b-256 |
c3b878450d513994f5816ec3659fbadebcfcb4bdc7c123cbbb8d7313a640b98a
|
Provenance
The following attestation bundles were made for auraone_evalkit-0.3.0-py3-none-any.whl:
Publisher:
release-python.yml on auraoneai/open
-
Statement:
-
Statement type:
https://in-toto.io/Statement/v1 -
Predicate type:
https://docs.pypi.org/attestations/publish/v1 -
Subject name:
auraone_evalkit-0.3.0-py3-none-any.whl -
Subject digest:
47760f315419b9035df7d9e554dfa99b9199a4301bf7e5935529951ee1cf2669 - Sigstore transparency entry: 2164971052
- Sigstore integration time:
-
Permalink:
auraoneai/open@4901733a5e59801dd95c83bffbcc9142cdd49fa9 -
Branch / Tag:
refs/heads/main - Owner: https://github.com/auraoneai
-
Access:
public
-
Token Issuer:
https://token.actions.githubusercontent.com -
Runner Environment:
github-hosted -
Publication workflow:
release-python.yml@4901733a5e59801dd95c83bffbcc9142cdd49fa9 -
Trigger Event:
workflow_dispatch
-
Statement type: