Docs / Compare / Langfuse

Dunetrace vs Langfuse

They solve different problems and work well together — this page is about when you need each.

What Langfuse does well: deep observability. Full trace trees with every prompt and completion, prompt versioning and management, dataset-based evaluation, and a mature UI for inspecting exactly what happened in a run. If you need to answer "what did this agent actually see and say at every step," Langfuse is built for that.

What Dunetrace adds: Langfuse is a tracer — it records what happened so you can inspect it later. Nothing in a tracer runs inside your agent's process while it executes, so nothing in a tracer can act before a bad run finishes. Dunetrace's structural detectors do run in-path, which is what makes runtime prevention — stopping, redirecting, or downgrading a run mid-flight — possible at all.

Side by side

DunetraceLangfuse
When it firesIn-path (policies) or within 15s of run completion (structural)You query it after you notice a problem
Can stop a run mid-flightYes — runtime prevention policiesNo — passive tracer, no in-path hook
Structural failure detection23 detectors, zero LLM calls, automaticNot built for this — manual trace inspection
LLM-based evaluationBuilt in (semantic evaluation), or pull Langfuse's own results inYes — datasets, scores, LLM-as-judge
Full trace inspectionStep graph + event logYes — this is Langfuse's core strength
Prompt management/versioningNoYes
Proactive alertingSlack / webhook / Linear, <15sNo — passive by design

Use both

Dunetrace can pull your Langfuse evaluation results directly into its own dashboard, correlated to the same runs via trace_id — one alert channel, one place to look, instead of switching tools mid-incident. Get the alert (and, where possible, the automatic stop) from Dunetrace; drill into the full trace and prompt history in Langfuse when you need to go deep. See the Langfuse integration docs.