Pillar 01
One import. Every decision logged.
Chronicler middleware hooks into model calls, tool executions, and agent lifecycle events—automatically. No refactoring. No wrapper functions. No overhead.
Live Demo
Watch decisions stream in real-time
Every model call, tool execution, and agent response captured automatically
How It Works
Three lines to complete capture
Add our middleware and start capturing—no changes to your existing agent code
from chronicler import create_chronicler_middleware
# One line to create the middleware
middleware = create_chronicler_middleware(
agent_id="support-bot",
capture_level="full", # or "minimal", "standard"
)
# Your existing agent code—unchanged
agent = create_agent(
model="gpt-4-turbo",
tools=[search_kb, create_ticket, escalate],
middleware=middleware, # Just add this
)
# That's it. Every decision is now captured.
response = agent.invoke("Help me reset my password")Features
Comprehensive capture, zero friction
Model Calls
Every LLM invocation captured with prompts, completions, token usage, and latency metrics.
Tool Executions
Full visibility into which tools were called, with what arguments, and what they returned.
Framework Agnostic
Native support for LangChain, LangGraph, CrewAI, and custom agent architectures.
Sub-millisecond Overhead
Async-first design ensures capture never blocks your agent's critical path.
Privacy-Preserving
Automatic PII detection and optional redaction before data leaves your infrastructure.
Rich Metadata
Session IDs, user context, decision chains, and custom attributes for complete traceability.
Integrations
Works with your stack
First-class support for popular agent frameworks
LangChain
from chronicler.langchain import ChroniclerCallbackHandlerLangGraph
from chronicler.langgraph import ChroniclerMiddlewareCrewAI
from chronicler.crewai import ChroniclerListenerCustom Agents
from chronicler import audit_call, @chronicler_traced