Skip to main content

Arbiter

CI PyPI Python 3.11+ License

Agent attribution for code quality.
Install arbiter-score, run arbiter score, and quickly see which AI agent or human produced your highest-risk code.

pip install "arbiter-score[analyzers]"
arbiter score .

Example output:

┌──────────────────────┬──────────┬────────┐
│ Agent                │ Quality  │ Grade  │
├──────────────────────┼──────────┼────────┤
│ claude               │ 72.3%    │ C      │
│ gpt-4o               │ 88.1%    │ B      │
│ copilot              │ 91.4%    │ A      │
│ human (you)          │ 94.2%    │ A      │
└──────────────────────┴──────────┴────────┘

Every team using AI coding tools has a "who wrote this mess?" moment. Arbiter makes that visible -- per file, per commit, and per author -- then grades the code quality signal.

pip install "arbiter-score[analyzers]"    # one-time install
arbiter score .                         # grade everything
arbiter diff . --base main              # only changed files in this branch
arbiter agents                          # author leaderboard
arbiter trend --days 30                 # quality over time
arbiter worst --limit 20                # highest-risk files
arbiter audit-fleet ./repos             # score every repo in a directory
arbiter serve                           # start web dashboard

Why Arbiter exists

AI-written code often optimizes for speed over maintainability. The result can include unused imports, high complexity, duplicated logic, and risky patterns. Standard linters catch some symptoms; Arbiter also attributes risk back to the contributor model/actor so you can review the right places first.

In practice, teams tune gates per agent tier (for example: stricter thresholds for autonomous agents, looser for exploratory branches) and keep human review focused on high-risk commits.

What makes Arbiter different

Feature Traditional tools Arbiter
Agent attribution None First-class: tracks contribution source (AI and humans)
Per-commit scoring Repository-wide only Scores changed files by commit and author
Diff analysis Optional / limited Scores only what changed in PR/branch workflows
Review workflows Static report Supports agent-specific gate thresholds
Dashboard output SaaS + build steps Local, single-file HTML dashboard endpoint
Core runtime Multi-tool runtime Lightweight core (LibCST only); optional analyzer dependencies

Scoring model

Analyzer Weight Finds
Lint (ruff) 35% Style violations, import errors, bugbear patterns
Security (bandit) 30% Hardcoded secrets, shell injection, risky command patterns
Complexity (radon) 35% Cyclomatic complexity by function (A-F)
Dead code (vulture) penalty Unused functions, imports, variables
Duplication (AST hash) penalty Near-duplicate function bodies

Arbiter computes a normalized score from analyzer penalties and total lines of code.

Common format:

100 - (penalty / LOC) * normalization

Grades: A (90+), B (80+), C (70+), D (60+), F (<60).

Install

pip install arbiter-score                    # core (LibCST runtime)
pip install "arbiter-score[analyzers]"       # + ruff, radon, vulture, bandit

Note: The PyPI package is arbiter-score (not arbiter, which is different). The CLI command is arbiter.

From source

git clone https://github.com/hummbl-dev/arbiter.git && cd arbiter
pip install -e ".[analyzers]"

Tests

pip install -e ".[test]"
python -m pytest tests/ -v

Requirements

  • Python 3.11+
  • git

Quality gates

Arbiter enforces quality checks in CI.

arbiter score . --fail-under 90 --json
arbiter diff . --base main --fail-under 80

Common gotchas

  • Use arbiter-score package name to avoid installing the wrong package.
  • Run from repository root for consistent path reporting and results.
  • Optional analyzers improve signal quality, but many core checks run without the analyzer extras installed.

License

Apache 2.0 — see LICENSE.


Built by HUMMBL.

Metadata

Release files for arbiter-score 1.1.0

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

Source distribution (sdist)

Source distribution for arbiter-score 1.1.0
File Size Uploaded Provenance
arbiter_score-1.1.0.tar.gz 220.6 kB With provenance Details

Built distribution (wheel)

Table of built distributions (wheels) for arbiter-score 1.1.0
File Interpreter ABI Platform
arbiter_score-1.1.0-py3-none-any.whl Python 3 none any Details

Total release size: 384.5 kB

Release files / arbiter_score-1.1.0.tar.gz

Download URL arbiter_score-1.1.0.tar.gz
Size 220.6 kB
Tags Source
SHA-256 checksum
How to use checksums
6ae1d7f380e6c6ee75bc51106c35745c6ae9c5494b5c0754d313bb0fa45687ad
BLAKE2b-256 checksum
How to use checksums
6fcc28084198e37169c18d4004eec73a27a431b6502e3adc5545f73b21cf9590
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
Yes
Uploaded via twine/6.1.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 Jul 22, 2026.

Transparency log

Release files / arbiter_score-1.1.0-py3-none-any.whl

Download URL arbiter_score-1.1.0-py3-none-any.whl
Size 163.9 kB
Tags Python 3
SHA-256 checksum
How to use checksums
bd7acef1f32b70297febe8255da61ec66a5f1786d0e8911e946e33ebb902fad9
BLAKE2b-256 checksum
How to use checksums
685da30a39bc35580fbc32da465e8156b9feaa1f20efd5033c9976bd709b7891
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
Yes
Uploaded via twine/6.1.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 Jul 22, 2026.

Transparency log

Security for arbiter-score 1.1.0

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.

Full provenance

All 2 files in this release have been uploaded with provenance metadata.

Select from 2 files

Attestation for arbiter_score-1.1.0.tar.gz

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 Jul 22, 2026.

Transparency log

A note on package security

PyPI is a repository for distributing packages, not a service for auditing them. While third-party security researchers and our staff do their best to detect and remove malicious packages, PyPI cannot guarantee the quality, security or suitability of any given package.

To learn more about protecting yourself from malicious actors, visit our package security documentation.

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