robustrep
Robust, transport-agnostic reputation scoring for AI agents.
Feed it any table of (rater, ratee, value, scale, tag, ts, evidence_uri, source) and it returns a
robust score per ratee that resists Sybil raters and evidence-free ratings. Ships with a Base-chain
ERC-8004 adapter and a reproducible report.
Status: v0.1.1 released on PyPI. Design spec and plan live in the parent workspace; a summary is in reports/latest/report.md.
Release notes, including the security fixes in 0.1.1: CHANGELOG.md.
Install
pip install robustrep
Library
import pandas as pd
from robustrep import Config, score
records = pd.DataFrame([...]) # columns: rater, ratee, value, scale, tag, ts, evidence_uri, source
result = score(records, Config())
Base ERC-8004 report
robustrep fetch --db data/base.db # pull events (resumable)
robustrep score --db data/base.db --out scores.csv
robustrep report --db data/base.db --out-dir reports
Rater profiles: Blockscout (free, no key) by default; Etherscan V2 requires a paid plan for Base.
Pick a source explicitly with fetch --profile-source {auto,blockscout,etherscan,none}.
Latest scores: reports/latest/scores.json, also served at
https://iamdongwang.github.io/robustrep/reports/latest/scores.json
Security considerations
Everything robustrep reads is written by untrusted parties: on-chain values, tags, evidence URIs and addresses, plus whatever the RPC/Blockscout endpoints and evidence hosts return.
robustrep fetch makes outbound HTTP from your machine to evidence URIs chosen by the rated party.
Those go through an SSRF guard (scheme/host allowlist, parser cross-check, canonical rebuild, refusal
of private/reserved addresses, manual redirects, a size cap and per-socket-operation timeouts — not a
wall-clock bound). Its one known SSRF bypass, DNS rebinding, is unmitigated in v0.1 — so run fetch
on a host with no privileged reach into an internal network. API keys should come from the
environment (ETHERSCAN_API_KEY), never the source tree; --etherscan-key is an escape hatch that
takes precedence over the environment and is visible to anyone who can run ps.
Full threat model and private reporting instructions: SECURITY.md.
Metadata
Release files for robustrep 0.1.1
For a detailed explanation of source distributions (sdists) and built distributions (wheels), please see the package formats documentation.
Source distribution (sdist)
| File | Size | Uploaded | |
|---|---|---|---|
| robustrep-0.1.1.tar.gz | 253.5 kB | Details |
Built distribution (wheel)
| File | Interpreter | ABI | Platform | Reset |
|---|---|---|---|---|
| robustrep-0.1.1-py3-none-any.whl | Python 3 | none | any | Details |
Total release size: 393.0 kB
Release files / robustrep-0.1.1.tar.gz
| Download URL | robustrep-0.1.1.tar.gz |
|---|---|
| Size | 253.5 kB |
| Tags | Source |
|
SHA-256 checksum How to use checksums |
7cd2b9e63b7945d2d0fbb6b33696ca2a4606c2e3c14d8540e76351156fcb919a
|
|
BLAKE2b-256 checksum How to use checksums |
68f8a41558f78c00d1f57aeda5197a576d0931bbd5440056f03f7d06d0516e4f
|
| 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 Sep 16, 2026.
Transparency logRelease files / robustrep-0.1.1-py3-none-any.whl
| Download URL | robustrep-0.1.1-py3-none-any.whl |
|---|---|
| Size | 139.5 kB |
| Tags | Python 3 |
|
SHA-256 checksum How to use checksums |
4b04e21e752be0aee707418e64c8a1fe35f2624150008dfebef6e366964cefa2
|
|
BLAKE2b-256 checksum How to use checksums |
3432df6b4bf756d38d298d41ae49274b597874d543000894467edd317c5c5d70
|
| 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 Sep 16, 2026.
Transparency log