Does OpenTelemetry identify the top-level agent in a multi-agent system?

Yes, as of a convention merged September 30, 2026: gen_ai.main_agent is a resource-level entity, identified by gen_ai.main_agent.id, that names the one persistent, top-level agent running in a process, something with a stable identifier across invocations like a scheduled job, a hosted agent in a cloud console, or an agent declared in an A2A Agent Card.

It’s deliberately narrow. The entity must not be emitted at all if the agent has no stable identifier, a transient in-memory id doesn’t qualify, and it isn’t meant for telling a main agent apart from the subagents it calls inside one run; that distinction already belongs to the gen_ai.agent.* span attributes on each invoke_agent operation. Grading each agent in a multi-agent run separately already misses the failures that only show up between them, and a resource-level id for the outer agent doesn’t change that: it says which deployed agent a trace came from, not how the agents inside that run behaved together. Like the rest of the GenAI spec, it’s marked development stability and can still change.

sources

keep reading

More on this.

Two ways to run Tessary.

Tessary is an open-source agent reliability platform. Cloud and self-hosted run the same workflow on the OpenTelemetry traces your agent already emits.

Tessary Cloud

We host it for you. Send your first trace with nothing to deploy and no model key.

what's includedper organization
traces
10,000 per calendar month
stored trace data
1 GB
retention
30 days
model credit
$10, one-time, for triage and root-cause analysis
credit card
not required

Self-hosted Tessary

Run the open-source code on your own infrastructure with one command. Add your own model key for triage and root-cause analysis.

Self-host Tessary for me by following https://github.com/tessaryai/tessary/blob/main/setup.md

docker compose -f oci://docker.io/tessaryai/tessary:compose up -d -y