Trace a multi-agent system

SkillMonitoring & ops

Use this to add observability to a multi-agent or agentic system (multiple agents, sub-agents, tool loops, handoffs). Trigger on "trace my agents", "my agent crew is a black box", "which agent failed", "debug my LangGraph/CrewAI/AutoGen/agent workflow", "the agents loop forever". Get a clear span tree across agents and tool calls so you can see who did what.

Available today. Use it from your connected AI after setup.

Connect ahel once, and every AI you use reads what you have installed.

Then ask your AI: use the Trace a multi-agent system skill

What this skill tells your AI

The instructions your AI receives, as published by contextjet-ai/awesome-llm-observability in skills/trace-multi-agent-system/SKILL.md and read by ahel’s review.

Multi-agent systems fail in ways single calls do not: an agent hands off bad state, a tool loop never terminates, a sub-agent silently fails and the orchestrator carries on. You cannot debug that from the final output. You need the full tree of who called whom.

Get the structure right

Model the run as a nested span tree:

  • One root span per user request or task.
  • One span per agent turn (which agent, its role, its input state).
  • Child spans for each tool call, retrieval, and LLM call inside that turn.
  • Handoff spans / events when one agent passes control or state to another (record what was passed).

Most agent frameworks emit this if you turn on their tracing (LangGraph, CrewAI, AutoGen, OpenAI Agents SDK, LlamaIndex) or add OpenTelemetry instrumentation (OpenLLMetry, OpenInference auto-instrument several agent frameworks). Prefer the framework's built-in tracing, then fill gaps with manual spans (see instrument-llm-observability).

What to capture per agent

  • Identity + role (agent.name, agent.role) so spans are attributable.
  • Input state and output at each handoff (the #1 source of multi-agent bugs is corrupted or lost state between agents).
  • Tool calls with args + results + errors.
  • Loop/iteration count so runaway loops are visible.
  • Tokens + latency + cost per agent (rolled up to the whole run) so you can see which agent is the expensive/slow one.

Debug the common failures

SymptomLook at
Wrong final resultWalk the tree to the first agent whose output diverges from intent. Fix there.
Infinite / long loopsIteration counts + repeated identical tool spans. Add a max-iterations guard.
One agent "did nothing"A missing or errored subtree. A swallowed exception in a sub-agent.
Blows the budgetPer-agent token rollup. Usually one agent re-sending full context each turn.
Non-deterministic flakinessCompare two traces of the same input side by side.

Verify

  • Run one task and confirm the trace shows every agent turn, every tool call, and every handoff, nested correctly.
  • Confirm per-agent cost + latency roll up to a run total.
  • Break a sub-agent on purpose and confirm the failure is visible in the tree (not swallowed).

Anti-patterns

  • Logging only the orchestrator, so sub-agent behavior is invisible.
  • No handoff/state capture, so you cannot tell where state got corrupted.
  • No iteration count, so a runaway loop just looks like "it is slow and expensive."
  • Treating a multi-agent bug as a prompt bug when it is really a state-passing bug between agents.

Signals

GitHub stars
34
Forks
18
Last commit
Sep 2026
Advanced
Catalog kind
skill
Gateway key
trace-multi-agent-system
Source
github.com/contextjet-ai/awesome-llm-observability