ToolGauntlet
ToolGauntlet by HiLo Labs is a Python package and CLI for deterministic reliability testing of tool-using AI agents.
Public guide: labs.hilomedia.com/products/toolgauntlet. Support: labs.hilomedia.com/support.
Install
pip install toolgauntlet
toolgauntlet --version
The distribution, primary CLI, and public Python import are all toolgauntlet.
The prerelease agent-chaos commands and agent_chaos import remain available
as compatibility aliases.
Quick start (CLI)
Generate a complete local baseline with no API key:
toolgauntlet quickstart --out-dir toolgauntlet-quickstart
This writes JSON, Markdown, and HTML baseline reports plus a copyable next-step
regression command. It uses the built-in deterministic adapter with safe logging
enabled and refuses to overwrite its files unless --force is supplied.
Build a custom workflow manually:
toolgauntlet list-suites
toolgauntlet init-suite --id my_suite_v1 --out-dir suites
toolgauntlet run --suite ecommerce_refunds_v1 --runs 10 --out report.json
toolgauntlet report --in report.json --format md --out report.md
toolgauntlet report --in report.json --format html --out report.html
Use a saved baseline as a release gate:
toolgauntlet run --suite ecommerce_refunds_v1 --runs 25 --out baseline.json
toolgauntlet run \
--suite ecommerce_refunds_v1 \
--runs 25 \
--baseline baseline.json \
--fail-on-regression \
--regression-tolerance 1.0 \
--out candidate.json
The public guide includes the supported quickstart and release-gate workflow.
Signed pack workflow:
export TOOLGAUNTLET_PACK_KEY=your-shared-signing-key
toolgauntlet sign-pack --suite suites/my_suite_v1
toolgauntlet verify-pack --suite suites/my_suite_v1
toolgauntlet run --suite suites/my_suite_v1 --verify-pack --out report.json
OpenTelemetry traces (optional):
pip install "toolgauntlet[otel]"
# Requires an OTLP/HTTP collector reachable at the default endpoint,
# or pass --otel-endpoint with your collector URL.
toolgauntlet run --suite ecommerce_refunds_v1 --runs 5 --otel-enabled --otel-metrics-enabled
Quick start (Python)
from toolgauntlet import SuiteConfig, run_suite
from toolgauntlet.adapters import deterministic_demo_agent
report = run_suite(
agent=deterministic_demo_agent,
suite_path="ecommerce_refunds_v1",
config=SuiteConfig(runs=10, concurrency=2),
)
report.save_json("report.json")
report.save_markdown("report.md")
OpenAI-compatible adapter
from toolgauntlet import SuiteConfig, run_suite
from toolgauntlet.adapters import OpenAICompatibleAdapterConfig, make_openai_tool_loop_adapter
agent = make_openai_tool_loop_adapter(
OpenAICompatibleAdapterConfig(
model="gpt-4o-mini",
base_url="https://api.openai.com",
)
)
report = run_suite(
agent=agent,
suite_path="ecommerce_refunds_v1",
config=SuiteConfig(runs=5, concurrency=1),
)
Additional adapter helpers
make_async_adapter: use async agent callables with the synchronous harness interface.make_langchain_like_adapter: adapt invoke/ainvoke-style runnables.
See the included examples in examples/adapters/.
Budget-as-Code Proxy
Start and validate:
toolgauntlet-proxy validate-policy --policy examples/budget_proxy/policy.example.yaml
toolgauntlet-proxy serve \
--host 127.0.0.1 \
--port 8080 \
--policy examples/budget_proxy/policy.example.yaml \
--ledger logs/usage-ledger.sqlite
See the public guide for deployment and operating guidance.
Key endpoints:
GET /healthzGET /metricsGET /v1/modelsPOST /v1/chat/completionsPOST /v1/responsesPOST /admin/reload-policy
Common environment variables:
OPENAI_API_KEYorBUDGET_UPSTREAM_API_KEYBUDGET_PROXY_API_KEYBUDGET_POLICY_PATHBUDGET_AUDIT_LOG_PATHBUDGET_LEDGER_PATHBUDGET_PROJECT_HEADERBUDGET_PROJECT_API_KEY_HEADERBUDGET_METRIC_NAMESPACEBUDGET_RATE_LIMIT_BACKEND(memoryorredis)BUDGET_REDIS_URL(required when backend isredis)BUDGET_REDIS_KEY_PREFIXBUDGET_OTEL_ENABLEDBUDGET_OTEL_METRICS_ENABLEDBUDGET_OTEL_SERVICE_NAMEBUDGET_OTEL_ENDPOINT
To enable distributed rate limiting across proxy instances, install Redis support:
pip install "toolgauntlet[redis]"
Included suites
ecommerce_refunds_v1support_triage_v1travel_booking_v1
Documentation and support
Metadata
Release files for toolgauntlet 0.1.3
For a detailed explanation of source distributions (sdists) and built distributions (wheels), please see the package formats documentation.
Source distribution (sdist)
| File | Size | Uploaded | |
|---|---|---|---|
| toolgauntlet-0.1.3.tar.gz | 48.1 kB | Details |
Built distribution (wheel)
| File | Interpreter | ABI | Platform | Reset |
|---|---|---|---|---|
| toolgauntlet-0.1.3-py3-none-any.whl | Python 3 | none | any | Details |
Total release size: 115.8 kB
Release files / toolgauntlet-0.1.3.tar.gz
| Download URL | toolgauntlet-0.1.3.tar.gz |
|---|---|
| Size | 48.1 kB |
| Tags | Source |
|
SHA-256 checksum How to use checksums |
688ee5ab446ebf10102a1ecd968b968e2cac7474cd369386f6410708d0ef2542
|
|
BLAKE2b-256 checksum How to use checksums |
bdd2ee226a29b68317c16614b26b9814f876a1b41675bd3f0d061d8d6112c731
|
| 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 29, 2026.
Transparency logRelease files / toolgauntlet-0.1.3-py3-none-any.whl
| Download URL | toolgauntlet-0.1.3-py3-none-any.whl |
|---|---|
| Size | 67.7 kB |
| Tags | Python 3 |
|
SHA-256 checksum How to use checksums |
07399ecc753e5c939d8a7d8db39a7b85de6b101157f47981f5da04cf6240bb47
|
|
BLAKE2b-256 checksum How to use checksums |
154a6a2ac7b39d65d28a8f395dc47b97dfbcaec09dbe3d263e728756cd82eb1a
|
| 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 29, 2026.
Transparency log