Your AI agents fail.
Dunetrace catches, alerts, and fixes it.

Runtime detection, Slack alerts within seconds, native root cause, and one-click fixes. For every agent framework, in every language.

23
Structural detectors
7
Semantic evaluators
<500µs
Runtime overhead
Apache 2.0
Open source
customer-support-agent
User
Agent
Dunetrace
🚨 Tool Argument Fabrication detected
destructive tool call blocked
Agent invented customer ID "CHEN001".
No record of this customer in your database.
🚨 #dunetrace-alerts
Dunetrace blocked a destructive call
Agent invented a customer ID. No customer affected.
A real customer's account was not deleted.

Your agents fail quietly.

Every agent in production eventually reports success it didn't earn. A booking that failed, marked confirmed. A refund that never ran, marked done. Your logs look clean. Your customers don't.

Meeting confirmed. Customer showed up. Nobody was there.
Refund processed. Never actually issued. Customer disputes the charge.
Account created. Onboarding email never sent. Customer thinks you don't exist.

Observability tools tell you what happened after your users complained. Dunetrace catches structural and semantic failures at runtime, stops the worst ones with policies, and hands you the root cause and a fix in Slack.

support-agent · yesterday 4:32 PM
Customer
Agent
[internal] account.unlock()
[response] {"error": "user not found"}
Customer
3 hours later · today 2:04 PM
Customer
This is what your logs won't tell you.

One platform, the full lifecycle.

Not just an alerting bolt-on. Dunetrace covers everything from raw event capture to stopping a bad run before it finishes.

01

Sessions & Events

Every run, tool call, and LLM exchange, the raw data everything else is built on.

02

Structural Detection

23 zero-LLM detectors, in-path, sub-500μs overhead. Always on, no configuration.

03

Semantic Evaluation

LLM-based judgment: hallucination, task completion, cross-turn frustration. Post-hoc, sampling-based, opt-in.

Learn more →
04

Runtime Prevention

Policies that stop, redirect, or downgrade a run while it's happening.

Learn more →
05

Root Cause & Fix

Native root-cause analysis, auto-applied policy fixes, or a one-click draft PR. No third-party tracer required.

Catch. Alert. Root cause. Fix.

01

Catch

  • 23 structural detectors, in-path, sub-500μs
  • 7 semantic evaluators, post-completion
  • Voice pack and more for modality coverage
  • Zero-config defaults, opt-in packs
02

Alert

  • Slack, Linear, PagerDuty, or webhook
  • Failure type, root cause, and evidence
  • One-click actions inline
  • Per-detector severity and routing
03

Root cause

  • Structured evidence from traces
  • LLM explanation on top
  • No third-party tracer required
  • Categorized: policy-owned or code-owned
04

Fix

  • Policy fixes apply with confirmation
  • Code fixes open a draft PR via GitHub App
  • Full context to Claude Code or Cursor
  • Fix effectiveness tracked over time

Prevents failures at runtime.

Detection tells you what broke; prevention stops the break from happening. Dunetrace's policy engine intervenes mid-run, blocking destructive tool calls, pausing high-value actions for human approval, switching failing models, and capping runaway iteration.

[POLICY TRIGGERED]
delete_customer(customer_id="INVENTED_ID")
BLOCKED
Fabricated identifier detected before execution.
No customer data affected.
[POLICY TRIGGERED]
refund_customer(amount=$12,500)
AWAITING APPROVAL
Above $10K threshold. Routed to the finance team.
ApproveReject
[POLICY TRIGGERED]
tool_call_count: 47
CAPPED AT 5
Agent forced to complete or fail. $47 in tokens saved.
01

Block

Destructive tool calls with fabricated arguments never execute.

02

Approve

High-value actions pause mid-run for human sign-off in Slack.

03

Cap

Runaway iteration stops before it drains your budget.

Most observability tools tell you what broke after your users complained. Dunetrace prevents the break at runtime.

Catches what logs miss

Six categories of failure across structural and semantic layers. Every category can trigger a runtime policy that stops the failure mid-run.

01
Runaway loops & cost
Retry storms, runaway iteration, and repeated tool calls that drain your token budget before anyone notices.
02
Silent failures
The agent reports success when a tool actually failed, returns nothing, or dies at the first step.
03
Fabrication & bad grounding
Hallucinated answers, fabricated tool arguments, and replies given with no retrieval behind them.
04
Injection & memory poisoning
Adversarial instructions hidden in retrieved content or carried forward through agent memory.
05
Multi-agent breakdowns
Context dropped in handoffs and delegation loops between cooperating agents.
06
Conversation quality
User frustration, confusion loops, sycophancy, and off-topic drift tracked across turns.
Hallucination Task Completion User Frustration Confusion Loop Task Understanding Failure Sycophancy Signal Off-Topic Drift
Voice · Live Coding · Q3 Multi-Agent · Q3 RAG/Search · Q3 Browser · Q3 Transactional · Q4 MCP-Native · Q4 Long-Running · Q4 Streaming · Q4

Running in under 5 minutes

  • 1
    Start the backend
    Clone the repo and spin up with Docker Compose. PostgreSQL included. No external dependencies.
  • 2
    Install the SDK
    Pure Python. Supports any framework. First-class LangChain and LangGraph support.
  • 3
    Add two lines
    Decorate your agent function. The SDK patches OpenAI, Anthropic, httpx and requests globally. Automatic.
  • 4
    Open the dashboard
    Navigate to localhost:3000. Detectors start firing immediately. Configure Slack for real-time alerts.
terminal
# 1. Start the backend
git clone https://github.com/dunetrace/dunetrace
cd dunetrace && cp .env.example .env
docker compose -f docker-compose.ghcr.yml up -d

# 2. Install the SDK
pip install dunetrace
# or for LangChain:
pip install 'dunetrace[langchain]'
agent.py
from dunetrace import Dunetrace

dt = Dunetrace()
dt.init(agent_id="my-agent")

@dt.agent()
def run_agent(query: str) -> str:
    ...  # LLM + HTTP calls tracked automatically

Alerts that show up where your team already is.

A failure is detected and the Slack notification fires within seconds. It carries the root cause, the evidence, and one-click actions, before you ever open the dashboard.

# dunetrace-alerts
Notifications for production agent failures
D
DunetraceAPP2:47 PM
🚨 Silent Failure detected in checkout-agent
production · 3 minutes ago
Agent told the customer their order was placed. The payment step failed and no order was created.
Customer saw: "Order confirmed, thanks for your purchase!"
Root cause Agent didn't check the payment result before replying.
Suggested fix Add a response validation policy.
View traceApply fixSnooze pattern
D
DunetraceAPP2:48 PM
✓ Approval required for finance-agent
production · just now
Agent is about to send a $48,000 payout to a vendor. Policy requires human approval for payouts above $25,000.
ApproveReject with reasonEscalate
Message #dunetrace-alerts

Rich context inline

Root cause, evidence, and suggested fix in the message itself. No dashboard round-trip needed to triage.

One-click actions

Apply fix, snooze pattern, mark false positive, or approve high-value operations without leaving Slack.

Configurable routing

Per-detector severity thresholds, per-agent channel routing, and per-org integration configuration.

Fits where your agents already run

Works with every major agent framework
Drop-in instrumentation. Two lines of code. Python and TypeScript.
LangChain
LangGraph
CrewAI
AutoGen
Haystack
Langdock
LlamaIndex
PydanticAI
OpenAI Agents
smolagents
Vercel AI
LiteLLM
Dify
OpenTelemetry
Python SDK
TypeScript SDK
Custom (via SDK)

Dunetrace works alongside your existing evaluation tools. Pull your Langfuse, LangSmith, or Braintrust evaluation results into Dunetrace's issue view so everything lands in one dashboard. Or use Dunetrace's native semantic evaluation instead. Your choice.

Langfuse LangSmith Braintrust
🔗
Bring your own evals
Now live

Dunetrace's MCP

Ask questions about your agents in natural language, from inside your editor. Dunetrace's MCP server loads full trace context, root cause, and fix suggestions directly into your coding agent.

Installpip install dunetrace-mcp
Claude CodeAuto-registered after install.
CursorAdd to .cursor/mcp.json (see docs).
Full setup guide →
You
Why is my booking-agent failing this morning?
Claude Code
get_agent_health("booking-agent")
Health: 42/100. Dominant failure: Silent Failure (18 signals in last 24h, 34% of runs).
The agent is claiming success on calendar bookings when the calendar API returns 503.
Root cause: run_context.py:127 doesn't validate the calendar API response before responding to the user.
Suggested fix: add a response validation policy, or handle the 503 explicitly in the tool wrapper.
Want me to open a PR with the fix?
You
Show me the most expensive run today.
Claude Code
search_signals(filter="high_cost")
Found: run 9f2a41… at 14:23 UTC. Cost: $47.20 (average: $0.34). Duration: 9 minutes.
Cause: Context Bloat. The prompt grew to 180K tokens.
The agent appended every tool result to the context without pruning, so each step re-sent the entire history.
Add a context-pruning policy?
You
Is production healthy right now?
Claude Code
list_agents()
5 agents in production:
✓ chat-agent · healthy (94/100)
✓ search-agent · healthy (91/100)
⚠ booking-agent · degraded (42/100, silent failures)
✓ refund-agent · healthy (87/100)
⚠ notification-agent · degraded (58/100, slow steps)
Two agents need attention. booking-agent has the higher blast radius (customer-facing).
Want the details?

We're looking for a design partner

We're working with a small group of teams to shape what Dunetrace becomes. If you're running AI agents in production and want early access, direct influence on the roadmap, and a team that will actually fix your problems, let's talk.

Contact us →
Open Source · Apache 2.0

Stop finding out from users.

Instrument your agent in 5 minutes. Get your first alert before your next user does.