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

# Agno

> Route + trace Agno agents through Orbitrage.

Agno's `OpenAIChat` model is OpenAI-compatible — point it at the Orbitrage
gateway and every agent step is routed and traced.

## Install

```bash theme={null}
pip install -U orbitrage agno openai
```

## Setup

```python theme={null}
import os, orbitrage
orbitrage.init(os.environ["ORBITRAGE_API_KEY"], user_id="customer_42")

from agno.agent import Agent
from agno.models.openai import OpenAIChat

agent = Agent(
    model=OpenAIChat(
        id="minimax-m3",                            # direct model — or "glm-5.2"; "auto" to route
        api_key=os.environ["ORBITRAGE_API_KEY"],
        base_url="https://api.orbitrage.ai/v1",
        default_headers={"x-orbitrage-end-user-id": "customer_42"},
    ),
    markdown=False,
)

print(agent.run("Summarize what an LLM router does, in one sentence.").content)
```

## Managed tools (server-side, no keys)

Pass [managed tools](/concepts/tools-gateway) through Agno's `request_params` —
Orbitrage runs them server-side and loops the result back to the model.

```python theme={null}
from agno.models.openai import OpenAIChat

model = OpenAIChat(
    id="minimax-m3",
    api_key=os.environ["ORBITRAGE_API_KEY"],
    base_url="https://api.orbitrage.ai/v1",
    request_params={"tools": ["calculator_orbitrage", "tavily_orbitrage"]},
)
agent = Agent(model=model, markdown=False)
print(agent.run("Use the calculator to compute 1234*5678. Only the number.").content)  # 7006652
```

<Tip>
  Pass your end-user id via `default_headers={"x-orbitrage-end-user-id": ...}` on
  the `OpenAIChat` model so per-user analytics line up. Agno's own tools keep
  running on your side, right alongside managed tools.
</Tip>
