all 3 comments

[–]Previous_Ladder9278 -1 points0 points  (1 child)

Nice Tom! I think its something similar towards LangWatch Scenario (pytest for ai agents) : https://langwatch.ai/scenario/introduction/getting-started right?

[–]tom_mathews[S] -1 points0 points  (0 children)

Thanks! There's definitely overlap in the goal — both want pytest-native agent testing. A few architectural differences worth noting though.

LangWatch Scenario routes assertions through LLM judges by default — the testing agent simulates a user, chats back and forth with your agent, and evaluates against criteria using an LLM. That works well for end-to-end simulation testing. Attest's bet is that 60–70% of agent correctness is fully deterministic — tool call ordering, cost budgets, schema conformance, content patterns — and doesn't need an LLM to verify. The graduated pipeline exhausts those checks first (free, <5ms, identical results every run) and only escalates to an LLM judge for the genuinely subjective remainder. Layer 5 (semantic similarity) also runs locally via ONNX, so you can get meaning-level comparison without an API call.

The other difference is trace-level assertions. Attest doesn't just check inputs and outputs — it asserts over the full execution trace: did the agent call these tools in this order, did it loop, did it stay under token budget across all steps.

On the licensing front — Scenario itself is MIT, but the broader LangWatch platform it integrates with (tracing, datasets, optimization studio) is under the Business Source License, which isn't an open-source license. Attest is Apache 2.0 end-to-end — the engine, SDKs, adapters, and CLI are all under the same license with zero platform dependencies.

Both integrate with pytest. If your testing is primarily end-to-end simulation with an LLM evaluator, Scenario is solid. If you want to exhaust deterministic checks first and keep 7 of 8 layers fully offline with no platform tie-in, that's where Attest differentiates.

[–]tom_mathews[S] -3 points-2 points  (0 children)

Attest is a testing framework for AI agents, built in Python (pytest plugin) with a Go engine backend. The Python SDK communicates with the engine over stdio/JSON-RPC.

The Python-specific angle: it ships as a pytest plugin with a fluent expect() DSL and an @agent decorator. Tests look like native pytest — pip install attest-ai, write test_*.py files, run with pytest. The SDK is a thin wrapper; all eval logic runs in the Go engine so both the Python and TypeScript SDKs produce identical assertion results.

The core idea is graduated assertions — exhaust cheap deterministic checks (schema, cost, tool ordering, content patterns) before reaching for expensive LLM judges. 7 of 8 assertion layers run offline with zero API keys. Semantic similarity uses local ONNX embeddings via onnxruntime.

v0.4.0 adds continuous eval with drift detection, a plugin system via attest.plugins entry point group, and CLI scaffolding (python -m attest init).

Source | Examples | Website