Auto-instrument every LangGraph graph execution, node by node, edge by edge. Get per-node span trees, cost attribution, and full visibility into which path your agent took and why.
Free tier · No credit card · 2-minute setup
Every graph node execution is a separate trace span, see which nodes ran, in what order, how long each took, and what tokens they consumed.
Token and USD cost attributed per graph node. Know exactly which node in your agent graph is expensive, and track cost across long-running multi-turn graphs.
Conditional edges and state transitions are recorded in the trace, making it easy to debug why a graph took a particular execution path.
import fluiq
fluiq.instrument(api_key="fl_...") # patches LangGraph automatically
from langgraph.graph import StateGraph, END
from typing import TypedDict
class AgentState(TypedDict):
messages: list
builder = StateGraph(AgentState)
builder.add_node("planner", planner_node)
builder.add_node("executor", executor_node)
builder.add_conditional_edges("planner", route_fn, {"execute": "executor", "end": END})
builder.set_entry_point("planner")
graph = builder.compile()
# Each node is a traced span, no code changes needed:
result = graph.invoke({"messages": [("user", "Analyse sales data")]})Every call to these methods is automatically traced, no decorators, no wrappers, no manual spans.
CompiledGraph.invoke()CompiledGraph.ainvoke()CompiledGraph.stream()CompiledGraph.astream()Node function calls (any add_node target)Conditional edge routing functionsMemorySaver checkpointer operationsSubgraph invocationsFree tier. No credit card. Full traces, security scanning, and evals on your first LangGraph call.
50,000 free traces / month · 1,000 evals / month · 14-day retention