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

Live Capture Stream
4 decisions captured
gpt-4-turbomodel call
support-bot1.2s
14:32:01.234
search_knowledge_basetool call
support-bot0.3s
14:32:02.456
Generated responseresponse
support-bot0.1s
14:32:02.789
query_approveddecision
data-analyst0.05s
14:32:03.012
Streaming from 3 agents

How It Works

Three lines to complete capture

Add our middleware and start capturing—no changes to your existing agent code

agent.py
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 ChroniclerCallbackHandler

LangGraph

from chronicler.langgraph import ChroniclerMiddleware

CrewAI

from chronicler.crewai import ChroniclerListener

Custom Agents

from chronicler import audit_call, @chronicler_traced

Start capturing in 5 minutes

Free tier includes 10,000 decisions per month