Skip to main content
Turn detection is the only thing that differs per framework. All six adapters share identical self-healing: the same mailbox, the same toolset, the same system context, the same validation. Each Harness.for_<framework>() factory wires the framework’s natural turn boundary to on_turn_end and preserves its session resolution (session identity comes from the PandaProbe SDK’s session context, so harness evaluations and SDK traces line up automatically). Adapters are optional, import-guarded extras:
Every factory accepts the same keywords: session_id= (a fixed session for single-conversation processes), config=, cli=, and replay= for closed-loop validation.

LangGraph (LangChain & DeepAgents work the same way)

Like the SDK’s LangGraph tracing integration, the handler must be passed via config["callbacks"] on each invocation — the LangChain family has no instrument() pattern.

CrewAI

Claude Agent SDK

OpenAI Agents SDK

Rebuilding the preamble per turn

Frameworks that rebuild the system prompt each turn get the live banner and freshly-retrieved rules for free. For frameworks that fix the prompt at construction time, either rebuild the agent per conversation, or rely on the standing protocol (the agent checks its mailbox every turn regardless) — the notices are in the workspace either way. Runnable end-to-end sketches for every framework live in the repository’s examples/ directory.