> ## Documentation Index
> Fetch the complete documentation index at: https://docs.zespan.com/llms.txt
> Use this file to discover all available pages before exploring further.

# Agno

> Trace Agno multi-agent teams via OpenTelemetry auto-instrumentation, no Zespan SDK required.

<Note>
  Available via: **OpenTelemetry auto-instrumentation** (Python). This is not a Zespan SDK wrapper — see [Send traces from any OTel-instrumented app](/sdk/otel-integration#send-traces-from-any-otel-instrumented-app-no-zespan-sdk) for how the underlying endpoint works.
</Note>

[Agno](https://docs.agno.com) is a fast-growing multi-agent framework. [OpenInference](https://github.com/Arize-ai/openinference)'s `openinference-instrumentation-agno` package instruments agent runs, team coordination, and tool calls — point the exporter at Zespan and every run traces automatically.

## Installation

```bash theme={"theme":{"light":"github-light","dark":"one-dark-pro"}}
pip install agno openinference-instrumentation-agno \
  opentelemetry-sdk opentelemetry-exporter-otlp-proto-http
```

## Setup

```python theme={"theme":{"light":"github-light","dark":"one-dark-pro"}}
from agno.agent import Agent
from opentelemetry import trace as trace_api
from opentelemetry.sdk.trace import TracerProvider
from opentelemetry.sdk.trace.export import BatchSpanProcessor
from opentelemetry.exporter.otlp.proto.http.trace_exporter import OTLPSpanExporter
from openinference.instrumentation.agno import AgnoInstrumentor

provider = TracerProvider()
provider.add_span_processor(BatchSpanProcessor(OTLPSpanExporter(
    endpoint="https://api.zespan.com/v1/traces",
    headers={"x-api-key": "zsp_..."},
)))
trace_api.set_tracer_provider(provider)

AgnoInstrumentor().instrument(tracer_provider=provider)

# Every agent run below is now traced automatically
agent = Agent(instructions="You are a helpful assistant.")
response = agent.run("What's 2+2?")
```

## What gets captured

Individual agent runs and multi-agent team coordination both map through the standard [OpenTelemetry GenAI semantic conventions](/sdk/otel-integration#attributes-zespan-reads) Zespan reads — a team's parallel or sequential agent calls show up as one connected trace rather than disconnected runs.

<Note>
  Agno also ships a native [OpenLIT](https://docs.agno.com/observability/openlit) integration, which is also OTel-based under the hood and can be pointed at Zespan the same way — use whichever instrumentor you already have configured.
</Note>
