Skip to main content
Pre-release

This release is a pre-release and may not be stable for production use.

valcore

A small, self-contained local tool for developing, improving, and running agentic evaluations. Author evaluators in a web UI, run them over datasets from the command line, and gate CI on their accuracy.

Install

With Homebrew:

brew install duncankmckinnon/tap/valcore

Or as a uv tool:

uv tool install valcore

Either way you get an valcore command on your PATH.

Quickstart

Store your gateway API key, then start the app:

valcore config set-key sk-...
valcore serve

serve starts the web UI and API on http://127.0.0.1:8000 and opens a browser (pass --no-browser to skip that, or --port to bind elsewhere). Author evaluators and datasets in the UI, then drive runs from the command line. Both can be written by hand or generated from a description; a generated result is an editable draft either way.

The gateway key is stored in ~/.valcore/config.toml (mode 0600) and exported to pydantic-ai as PYDANTIC_AI_GATEWAY_API_KEY when a command runs. An already-exported environment variable always wins over the stored key. Run valcore config set-key with no argument to be prompted without echoing the key.

Commands

Command What it does
valcore serve Serve the web UI and API (--port, --host, --no-browser).
valcore list <evaluators|datasets|runs> List resources as a table or, with --json, as JSON.
valcore run <evaluator> <dataset> Run an evaluator version over a dataset.
valcore export <evaluator> Export an evaluator version as a standalone Python script.
valcore config set-key [KEY] Store the gateway API key in the config file.
valcore config get Show the current config (the key is masked unless --show-key).
valcore config path Print the path to the config file.
valcore config edit Open the config file in $EDITOR.
valcore version Print the installed valcore version.

Evaluators, versions, and datasets are addressable by name or by a unique id prefix; an ambiguous value is an error that lists the candidates. Pass --db PATH on the group to point at a SQLite database other than the default under ~/.valcore.

run accepts --version (defaults to the active version), --kind, --concurrency, --watch (one line per completed row), --json, and --min-accuracy. Progress goes to stderr and results go to stdout, so redirecting stdout yields clean JSON. The CLI talks to SQLite directly, so run works whether or not serve is up.

Using valcore in CI

run --json emits a single object with run metadata, metrics, and per-row scores, and --min-accuracy turns a validation run into a pass/fail gate:

valcore run my-evaluator my-dataset \
  --kind validation \
  --min-accuracy 0.9 \
  --json > run.json

Exit codes:

Exit Meaning
0 The run finished and, if --min-accuracy was set, accuracy met the threshold.
1 The run failed, or a domain error occurred (printed as error: <message> on stderr).
2 Accuracy fell below --min-accuracy.

--min-accuracy requires a categorical accuracy metric; numeric or unlabeled runs have no accuracy and error rather than silently passing.

~/.valcore

All state lives under ~/.valcore (mode 0700). Set VALCORE_HOME to relocate it.

~/.valcore/              0700
  config.toml              0600  gateway key + defaults
  valcore.db             SQLite (plus -wal, -shm)
  logs/                    serve logs

Development

uv sync                    # install dependencies into a local venv
uv run pytest              # run the test suite

The web UI is a Vite + React SPA under web/:

cd web
npm install
npm run dev                # Vite dev server, proxying the API

To build the SPA into the wheel, run npm run build and copy web/dist/ into src/valcore/web_dist/ before uv build; the release workflow does this automatically on a v* tag.

Download files

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

Source Distribution

valcore-0.0.2rc2.tar.gz (8.5 MB view details)

Uploaded Source

Built Distribution

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

valcore-0.0.2rc2-py3-none-any.whl (133.4 kB view details)

Uploaded Python 3

File details

Details for the file valcore-0.0.2rc2.tar.gz.

File metadata

  • Download URL: valcore-0.0.2rc2.tar.gz
  • Upload date:
  • Size: 8.5 MB
  • Tags: Source
  • Uploaded using Trusted Publishing? Yes
  • Uploaded via: twine/7.0.0 CPython/3.13.14

File hashes

Hashes for valcore-0.0.2rc2.tar.gz
Algorithm Hash digest
SHA256 c9556c8abaa08b7acd999dbd1a9cae7fbbb1f1eb45de31bff44fad6ac32a6e29
MD5 c550f9260e956a7beac710ad99a59e04
BLAKE2b-256 f2f7e3ac3502a4e8a2bd53ba209b01201bf9b2e8fc3b83c2fe086b3b4ff31d40

See more details on using hashes here.

Provenance

The following attestation bundles were made for valcore-0.0.2rc2.tar.gz:

Publisher: release.yml on duncankmckinnon/valcore

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

File details

Details for the file valcore-0.0.2rc2-py3-none-any.whl.

File metadata

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

File hashes

Hashes for valcore-0.0.2rc2-py3-none-any.whl
Algorithm Hash digest
SHA256 d8dd1829ae9c7da2c8a5ea84b280f41eff392462adeedaf74aa0478fb06c3f5f
MD5 7488f7a1f14606b3dfe5f13c4e7a3414
BLAKE2b-256 49783cc2ddcce1f8e3f3bf313dbe7ce989fb0aaded5871816ce631102c036a89

See more details on using hashes here.

Provenance

The following attestation bundles were made for valcore-0.0.2rc2-py3-none-any.whl:

Publisher: release.yml on duncankmckinnon/valcore

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 Sentry Error logging StatusPage Status page