What is Agno?
Agno is a Python framework for building AI agents with built-in OpenInference instrumentation. Use the Respan Agno exporter to capture Agno spans (via OpenInference + OpenTelemetry) and send them to Respan tracing.
Make sure you have an OpenTelemetry TracerProvider with a SpanProcessor configured before running your agent (otherwise spans will not be exported).
Setup
Install packages
pip install agno openinference-instrumentation-agno respan-exporter-agno
Set environment variables
RESPAN_API_KEY = your-respan-api-key
RESPAN_BASE_URL = https://api.respan.ai/api
# If calling OpenAI directly (without Respan gateway):
OPENAI_API_KEY = your-openai-api-key
Instrument and run an agent
import os
from agno.agent import Agent
from agno.models.openai import OpenAIChat
from openinference.instrumentation.agno import AgnoInstrumentor
from opentelemetry import trace as trace_api
from opentelemetry.sdk import trace as trace_sdk
from opentelemetry.sdk.trace.export import SimpleSpanProcessor
from opentelemetry.sdk.trace.export.in_memory_span_exporter import InMemorySpanExporter
from respan_exporter_agno import RespanAgnoInstrumentor
def main ():
respan_api_key = os.getenv( "RESPAN_API_KEY" )
base_url = os.getenv( "RESPAN_BASE_URL" , "https://api.respan.ai/api" )
# Set up TracerProvider
tracer_provider = trace_api.get_tracer_provider()
if not isinstance (tracer_provider, trace_sdk.TracerProvider):
tracer_provider = trace_sdk.TracerProvider()
trace_api.set_tracer_provider(tracer_provider)
tracer_provider.add_span_processor(SimpleSpanProcessor(InMemorySpanExporter()))
# Export Agno spans to Respan
RespanAgnoInstrumentor().instrument(
api_key = respan_api_key,
base_url = base_url,
passthrough = False ,
)
# Create Agno spans (OpenInference)
AgnoInstrumentor().instrument()
agent = Agent(
name = "Respan Agno Quickstart Agent" ,
model = OpenAIChat(
id = os.getenv( "OPENAI_MODEL" , "gpt-4o-mini" ),
api_key = respan_api_key,
base_url = base_url,
),
)
agent.run( "hello from Respan Agno exporter quickstart" )
tracer_provider.force_flush()
if __name__ == "__main__" :
main()
Observability
With this integration, Respan auto-captures:
Agent runs — each agent execution as a span
LLM calls — model, input/output messages, token usage
Errors — failed runs and error details
View traces on the Traces page .