
Use case / Multi-agent systems
Follow the work from agent to agent.
When several agents share a job, failures hide between them. Keep every agent in one trace and each handoff becomes a step you can inspect.
- Handoffs
- Traced
- Agents
- One trace
- Loops
- Detected
Handoff map
Where the work stopped moving.
Every agent in the run reports into the same trace.
Splits and parallel work show up as sibling spans.
Each result is linked to the agent that produced it.
A missing handoff is the gap in the tree.
Cost and time can be read per agent, not just per run.
- 01ok
Planner starts
Goal split into three tasks.
- 02ok
Work split
Three workers start in parallel.
- 03ok
Worker returns
Two of three results arrive.
- 04dropped
Handoff dropped
The third result never reaches the reviewer.
- 05ok
Run times out
The reviewer waits for a result that never comes.
What Tracify watches.
Handoffs
Recorded on every run, so it can be searched, compared and alerted on.
Agent roles
Recorded on every run, so it can be searched, compared and alerted on.
Loops between agents
Recorded on every run, so it can be searched, compared and alerted on.
Cost per agent
Recorded on every run, so it can be searched, compared and alerted on.

The failure to catch
A handoff that never arrived, so nobody finished the job.
Trace every handoff between agents in one run so a dropped task or a loop between agents is visible.
Instrument it
Keep every agent in one trace.
Run each agent inside the same traced run and a handoff is just another span, so a dropped one is easy to spot.
$ npm install tracify-sdk
import { span, traceAgent } from "tracify-sdk";
export const run = traceAgent(async (goal: string) => {
const plan = await span("planner", () => planner(goal), { type: "llm", input: goal });
const results = await Promise.all(plan.tasks.map((task) => span("worker", () => worker(task), { type: "llm" })));
return span("reviewer", () => reviewer(results), { type: "llm" });
}, { environment: "production" });