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.

  1. Every agent in the run reports into the same trace.

  2. Splits and parallel work show up as sibling spans.

  3. Each result is linked to the agent that produced it.

  4. A missing handoff is the gap in the tree.

  5. Cost and time can be read per agent, not just per run.

Multi-agent systems1 / 5 steps
  1. 01

    Planner starts

    Goal split into three tasks.

    ok
  2. 02

    Work split

    Three workers start in parallel.

    ok
  3. 03

    Worker returns

    Two of three results arrive.

    ok
  4. 04

    Handoff dropped

    The third result never reaches the reviewer.

    dropped
  5. 05

    Run times out

    The reviewer waits for a result that never comes.

    ok

What Tracify watches.

01

Handoffs

Recorded on every run, so it can be searched, compared and alerted on.

02

Agent roles

Recorded on every run, so it can be searched, compared and alerted on.

03

Loops between agents

Recorded on every run, so it can be searched, compared and alerted on.

04

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" });