Integrations
Rius integrates with the client libraries, agent frameworks, and protocols
agents are built on: model calls arrive as generations with tokens and
cost, and run structure arrives from the framework’s own spans or a thin
layer of observe wrappers. Each integration’s page
covers setup, what lands in the trace, and the blind spots.
Support matrix
| Integration | Type | Model calls captured by | Python | TypeScript |
|---|---|---|---|---|
| OpenAI | Client library | the openai instrumentation | ✓ | ✓ |
| Anthropic | Client library | the anthropic instrumentation | ✓ | ✓ |
| LangChain | Framework | its callbacks, hooked by the langchain instrumentation | ✓ | ✓ |
| LlamaIndex | Framework | the llama-index instrumentation | ✓ | N/A |
| LiteLLM | Router | the litellm instrumentation | ✓ | N/A |
| MCP | Protocol | instrumentation bundled in the SDK | ✓ | ✓ |
| Vercel AI SDK | Framework | its OpenTelemetry telemetry | N/A | ✓ |
| OpenAI Agents SDK | Agent framework | the openai instrumentation underneath | ✓ | N/A |
| Pydantic AI | Agent framework | its native OpenTelemetry spans | ✓ | N/A |
| CrewAI | Agent framework | the openai instrumentation (litellm when LiteLLM is installed) | ✓ | N/A |
| AutoGen | Agent framework | its native OpenTelemetry spans plus the openai instrumentation | ✓ | N/A |
| Claude Agent SDK | Agent framework | manual tracing: an observe root plus a generation filled from the run result | ✓ | N/A |
“N/A” means no integration in that language today; trace those calls with manual generations. Install commands and package names live on each integration’s page.
Installing
Python
Each integration is an optional extra, and extras can be combined:
pip install "glassflow-rius[openai]"
pip install "glassflow-rius[anthropic,langchain]"
pip install "glassflow-rius[instruments]" # all of themEach extra installs the instrumentation for a library, never the library
itself. glassflow-rius[anthropic] expects anthropic to be in your
environment already, which it is in any project that calls Anthropic: Rius
deliberately takes no dependency on provider SDKs, so it never pins or
upgrades the versions your code runs against. An extra installed without its
library makes init() log a DependencyConflict from OpenTelemetry and
leaves that integration off, which is the one failure worth recognizing
here; see
Troubleshooting.
mcp needs no extra at all. Its instrumentation ships inside the SDK rather
than as a separate package, so there is nothing for an extra to add: it turns
itself on whenever the mcp package is importable, which it is in any agent
that calls MCP tools.
The client-library integrations are powered by OpenInference , the open source (Apache-2.0) instrumentation project from Arize AI; the SDK bundles its instrumentors and wires them into the Rius pipeline. The MCP integration is built into the SDK itself.
Enabling
With a default (global) init(), every installed integration is enabled
automatically:
Python
rius.init() # everything installed
rius.init(instruments=["openai"]) # only OpenAI
rius.init(instruments=[]) # noneDetails worth knowing:
- Requesting an integration whose package is not installed logs a warning
and continues; a broken instrumentor never blocks
init(). - If a library is already instrumented by other OpenTelemetry code (not by this SDK), it is left alone.
- Scoped clients (
set_global=False) do not auto-instrument, because instrumentors patch libraries process-wide; passinstruments=[...]explicitly to opt in.
In TypeScript the loud and quiet cases are deliberately split: a package you
did not install stays silent, while a package that is installed but fails to
load logs a warning naming the integration and the underlying error. Either
way init() continues, and the remaining integrations still attach.