Skip to main content

Ephemeral, hash-pinned intelligence-benchmark runner for CrowdBench.

Project description

crowdbench-run

The ephemeral, hash-pinned, open-source intelligence-benchmark runner. Pure Python (httpx + psutil + platformdirs + stdlib; never torch/transformers — HTTP only), uv-managed, invoked via uvx identically on macOS/Linux/Windows.

It probes hardware/engine, normalizes config against the vendored packages/shared JSON artifacts, administers the benchmark item set against a locally-served OpenAI-compatible endpoint, captures per-item timing forensics, and uploads model outputs — scoring is entirely server-side and answer keys never touch this package. Resumable state lives in ~/.crowdbench/ (via platformdirs).

Dark-period invocation

No real version is published to PyPI until the repo flip; run from source.

Bare crowdbench-run on a terminal launches the guided wizard — a zero-file, zero-flag contribution flow (splash → one-time consent → detect engines → pick a model → pick suites by category → time budget + a live throughput estimate → reasoning → confirm → run + poll to a final state). It runs only what this build can administer (core-v1 directly); industry lm-eval suites are shown with their cost and the exact crowdbench-run bridge … command, never run under the wizard's pretense. On a non-TTY (piped/CI) the bare command prints usage and exits — it never hangs for input.

uvx --from ./packages/runner crowdbench-run            # the guided wizard (TTY)
uvx --from ./packages/runner crowdbench-run detect
uvx --from ./packages/runner crowdbench-run inventory
# The flag path (what the wizard drives; agents use it directly). --dataset is now OPTIONAL —
# omit it and the public prompts dataset is auto-fetched from the API into the content-addressed cache.
uvx --from ./packages/runner crowdbench-run core-v1-rc \
    --endpoint http://localhost:8080/v1 --model <model> --agree-tos --yes

The RUN flow is probe → confirm → run → upload: probe hardware + engine, confirm the plan (interactive, or --yes/--dry-run for agents), administer every item capturing output + per-item timing (capture requirement 12), then POST to /v1/runs/outputs, which returns a pre-issued run URL (status pending-score until the server scores). Consent is shown once (state in ~/.crowdbench); --agree-tos attests a human has seen and agreed to the terms (what uploads; the public CC-BY-NC-SA 4.0 dataset; immutability) and is required to upload non-interactively.

Commands

command what it does
(no arguments, on a TTY) the guided wizard — zero-file, zero-flag contribution flow
<benchmark-id> run one benchmark end-to-end (the flag path); core-v1 / core-v1-rc in this phase
bridge lmeval:<task>:<variant> run/parse an allowlisted lm-eval suite → validate → upload
detect scan common local serving ports; report apps + loaded models (by route signature)
inventory list local models (Ollama / LM Studio / HF cache / user dirs) + benchmark tooling
doctor probe + connectivity + state report for support
cache list|clear manage the content-addressed dataset cache

Key flags (dual-surface parity — every wizard prompt has a flag): --endpoint, --api-base, --dataset (omit to auto-fetch), --model, --model-path, --reps N, --seed, --reasoning-effort, --reasoning-budget, --agree-tos, --minutes, --hf-repo/--hf-revision/--unattributed, --endpoint-api-key (env CROWDBENCH_ENDPOINT_API_KEY; never logged/uploaded/stored), --dry-run, --no-upload/--save/--upload-only, --json, --yes, --sudo-probes, --ports. Auth uses CROWDBENCH_API_KEY (else an anonymous submitter is minted and cached).

Trust posture

  • Outputs only. The runner uploads model outputs + telemetry; it never sees, computes, or transmits answer keys. Benchmark item content is inert data — never a tool, never agentic.
  • Dataset integrity. A dataset's sha256 must match the benchmark's runner_spec pin before every run (capture requirement 11); a mismatch refuses to run (a tampered set never runs).
  • Vendored artifacts, byte-matched. crowdbench_run/_artifacts/*.json are copied verbatim from packages/shared/artifacts so both languages read one source; CI fails on drift (scripts/check_artifact_drift.py — the third leg of the cross-language drift check).
  • Endpoint key privacy. --endpoint-api-key is forwarded as the target endpoint's Authorization header only, never logged/uploaded/stored.

Supply-chain audit trail: packages/runner/BUILD-TIME-CHECKS.md.

Publishing (PyPI Trusted Publishing)

Releases go out through .github/workflows/publish.yml using PyPI Trusted Publishing (OIDC) — there is no long-lived PyPI API token in this repo, ever. GitHub mints a short-lived OIDC token per run and pypa/gh-action-pypi-publish (pinned by full commit SHA) exchanges it with PyPI. Three human gates stand between a dispatch and a live release: workflow_dispatch only (no push/tag/schedule), a typed confirm input that must equal publish-to-pypi, and environment: pypi (owner approval before any publish step runs). A preceding job builds the sdist+wheel, runs twine check --strict, install-smokes both artifacts, and refuses the placeholder 0.0.x version line.

Owner one-time setup — verify on pypi.org. Create the Trusted Publisher for this project under Manage project → Publishing (or Your projects → Publishing for a pending publisher). These three fields must match the workflow exactly, or PyPI rejects the OIDC exchange:

PyPI Trusted-Publisher field Must be
PyPI project (package) name crowdbench-run
GitHub repository + workflow filename crowdbench-ai/crowdbench-dev, workflow publish.yml
Environment name pypi

(The owner also configures the pypi GitHub Environment's protection rule — required reviewers — so gate #3 actually pauses for approval.) This PR only prepares the workflow and docs; wiring the Trusted Publisher and the environment protection rule is an owner action on pypi.org / GitHub, and nothing publishes during the dark period.

Development

cd packages/runner
python -m pip install -e ".[dev]"
python -m pytest -q

The test suite runs on ubuntu/macos/windows in CI (a release gate — cross-platform posture).


CrowdBench is a service of Hooch Labs LLC. © 2026 Hooch Labs LLC · Apache-2.0.

Project details


Download files

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

Source Distribution

crowdbench_run-0.1.0.tar.gz (122.3 kB view details)

Uploaded Source

Built Distribution

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

crowdbench_run-0.1.0-py3-none-any.whl (81.4 kB view details)

Uploaded Python 3

File details

Details for the file crowdbench_run-0.1.0.tar.gz.

File metadata

  • Download URL: crowdbench_run-0.1.0.tar.gz
  • Upload date:
  • Size: 122.3 kB
  • Tags: Source
  • Uploaded using Trusted Publishing? Yes
  • Uploaded via: twine/6.1.0 CPython/3.13.13

File hashes

Hashes for crowdbench_run-0.1.0.tar.gz
Algorithm Hash digest
SHA256 9e9c055c6cbb2a1aed7960d1585c0b2a7fff21d49f320c6ee325df17dbfcb5c1
MD5 f2bbe07f565e2b5faa94477a6bae3419
BLAKE2b-256 50d364ce730f39f55039f6fb84445a5539ed5a61975ad761e9de447be33d7aaa

See more details on using hashes here.

Provenance

The following attestation bundles were made for crowdbench_run-0.1.0.tar.gz:

Publisher: publish.yml on crowdbench-ai/crowdbench-dev

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

File details

Details for the file crowdbench_run-0.1.0-py3-none-any.whl.

File metadata

  • Download URL: crowdbench_run-0.1.0-py3-none-any.whl
  • Upload date:
  • Size: 81.4 kB
  • Tags: Python 3
  • Uploaded using Trusted Publishing? Yes
  • Uploaded via: twine/6.1.0 CPython/3.13.13

File hashes

Hashes for crowdbench_run-0.1.0-py3-none-any.whl
Algorithm Hash digest
SHA256 9285fd384067024c11bc594897bbf31228f0b6e41f152d7556089796233b1a1a
MD5 bee6524f5fdb11d9f508fc0936b31336
BLAKE2b-256 033c363ec38cdcccfa87e2ad3ffc754e1c9f4870b462a34a03fe5e8c1900fe72

See more details on using hashes here.

Provenance

The following attestation bundles were made for crowdbench_run-0.1.0-py3-none-any.whl:

Publisher: publish.yml on crowdbench-ai/crowdbench-dev

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

Supported by

AWS Cloud computing and Security Sponsor Datadog Monitoring Depot Continuous Integration Fastly CDN Google Download Analytics Pingdom Monitoring Sentry Error logging StatusPage Status page