claque
Stress-test your conversational AI agent with a crowd of simulated users, and a judge you can actually trust.
A crowd of personas hammering an agent, graded live: solved, failed, or flagged unsafe.
Your demo shows the happy path. claque shows you everything else.
A claque was a crowd hired to react in 19th-century Paris theaters. This one is hired to break your agent: it runs a cast of persona-driven simulated users against it (the confused elder, the terse expert, the refund seeker, the prompt injector), holds a full multi-turn conversation with each, and grades every one with a calibrated LLM judge. Then it tells you where your agent fails, with a confidence interval on every number.
Quickstart
pip install git+https://github.com/pbeneteau/claque.git
claque demo --offline # zero API calls, writes a graded HTML report
That runs eight scripted personas against a deliberately mediocre demo bot and opens a self-contained report, no credentials needed. Prefer uv? uv tool install git+https://github.com/pbeneteau/claque.git. For live runs, add the anthropic extra and drop --offline (see the full quickstart). Point it at your own agent in one line:
uv run claque run --agent https://your-api.com/chat --personas ./personas
What you get
- A hostile crowd, not an echo chamber. Personas pin emotional state, literacy, patience, and a realistic way to give up, so a model playing "angry customer" does not thank your agent by turn three. Generate a stratified cast, or turn your own production logs into one.
- A judge you can audit. Anchored 0-3 rubrics as reviewable YAML, evidence quoted from the transcript, and
claque calibrate: Cohen's kappa against your own blind labels. Every headline number carries a 95% interval and its sample size. - Words vs. deeds. claque grades what the agent did, not just what it said. It catches false successes: the agent replies "your refund is processed" but never called the refund tool. A text-only grader cannot see that.
- Grade what already happened.
claque analyzepoints the same calibrated judge at your agent's real past transcripts (a two-voice JSONL, or pulled from Intercom/Fin), clusters them by archetype, and reports each with a sample size and interval. Test before you ship, or measure what already shipped. - Plug in any agent. A Python callable, an HTTP endpoint, an OpenAI-compatible server, MCP, A2A, submit-and-poll, or a Claude Agent SDK agent. The agent keeps its whole tool loop; claque only speaks user turns to it.
- Red-team, not just QA. An adversarial pack (prompt injection, secret extraction, a Crescendo attack, PII fishing) mapped to the OWASP LLM Top 10 and the Agentic Top 10, graded on a severity scale.
- Built for real agents. Per-turn timeouts, transient-error retries with backoff, rate limiting,
--resumefor a run that died halfway, and experienced-latency p50/p95, so you can point it at a production endpoint, not just a toy. - Surfaces that scale. A live terminal arena you can watch, and a self-contained HTML report that stays readable from 8 to 1000 conversations (archetype rollup, failure clusters, latency).
- Close the loop. Export the failures to an SFT/DPO dataset, fine-tune, re-test, and prove the delta only counts when the intervals are disjoint.
- Offline-first. The whole test suite (1400+ tests) runs with no credentials, no network, no spend. Deterministic scripted mode is the CI default.
Point it at your agent
An agent is anything that maps a conversation to its next reply. The --agent spec covers the common shapes without glue:
| Your agent is... | Spec |
|---|---|
| a deployed HTTP endpoint | https://your-api.com/chat |
| an OpenAI-compatible server (vLLM, Groq, Mistral...) | openai:your-model |
| Python code in your repo | your_pkg.agents:support_agent |
| a Claude Agent SDK agent | agent-sdk:config.yaml |
| MCP / A2A / async submit-and-poll | mcp: a2a: async: |
The config file, when there is one, is the agent's address, not the agent. See docs/adapters.md.
Why you can trust the numbers
Most LLM judges are vibes with a number attached. claque is built the other way around: it is presumed guilty until calibrated.
claque calibratesamples a run, serves you the transcripts in a local blind UI (the judge's score is hidden from you), and computes Cohen's kappa per criterion. It never writes a label itself.claque judge selftestproves the judge is not fooled by content-free "master key" replies (a bare:fools some judges 35% of the time).- Until the judge is calibrated, the docs tell you to trust deltas, not absolute scores. Out loud.
Docs
Quickstart · Plug in your agent · Action verification · Retrospective analysis · Calibrating the judge · The safety pack · Writing personas · Running in CI · Claude Code plugin · Evaluation intelligence
License
MIT. Install from GitHub today (see Quickstart); a PyPI release lands with v1.
Metadata
Release files for claque 0.0.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 | Provenance | |
|---|---|---|---|---|
| claque-0.0.1.tar.gz | 1.9 MB | With provenance | Details |
Built distribution (wheel)
| File | Interpreter | ABI | Platform | Reset |
|---|---|---|---|---|
| claque-0.0.1-py3-none-any.whl | Python 3 | none | any | Details |
Total release size: 2.2 MB
Release files / claque-0.0.1.tar.gz
| Download URL | claque-0.0.1.tar.gz |
|---|---|
| Size | 1.9 MB |
| Tags | Source |
|
SHA-256 checksum How to use checksums |
409ec75f66cc9567587d617aef205853ada2b38b8fcfd83e5d00f06cf2298dbb
|
|
BLAKE2b-256 checksum How to use checksums |
b5f80c135db812c23635bb9fec4decc57d1dbcb09139e56c415fface81646749
|
| 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 Aug 24, 2026.
Transparency logRelease files / claque-0.0.1-py3-none-any.whl
| Download URL | claque-0.0.1-py3-none-any.whl |
|---|---|
| Size | 306.5 kB |
| Tags | Python 3 |
|
SHA-256 checksum How to use checksums |
d2d745ae0efe8b7be0eed3f1d4913340cf3851caa92b3003d1db437b794aad80
|
|
BLAKE2b-256 checksum How to use checksums |
758cac8cdf5f1feba4d47253a7ff4869e7e9daf159fc5e316435ab096baae7a4
|
| 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 Aug 24, 2026.
Transparency logSecurity for claque 0.0.1
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.
Attestation for claque-0.0.1.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 Aug 24, 2026.
Transparency logA 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.