Skip to main content
bryel is OpenTelemetry-native, so it traces any library that has an OpenInference instrumentor. You don’t map anything — install the instrumentor for your stack and bryel exports the spans. In Python, one call wires up every instrumentor you have installed:
import bryel
bryel.init(service_name="my-app", instrument=True)  # reads BRYEL_KEY
instrument=True scans for the libraries below and turns on the ones present. Prefer to be explicit? Call a single instrumentor yourself — the table shows how.
In TypeScript/JavaScript, add any OpenTelemetry GenAI instrumentation to your NodeSDK and ship it with bryelSpanProcessor — see TypeScript. Any other language can send over the HTTP API.

Provider SDKs

ProviderPackageInstrumentor
OpenAIopeninference-instrumentation-openaiOpenAIInstrumentor
Anthropicopeninference-instrumentation-anthropicAnthropicInstrumentor
Amazon Bedrockopeninference-instrumentation-bedrockBedrockInstrumentor
Google GenAIopeninference-instrumentation-google-genaiGoogleGenAIInstrumentor
VertexAIopeninference-instrumentation-vertexaiVertexAIInstrumentor
Groqopeninference-instrumentation-groqGroqInstrumentor
Mistralopeninference-instrumentation-mistralaiMistralAIInstrumentor
LiteLLMopeninference-instrumentation-litellmLiteLLMInstrumentor
Instructoropeninference-instrumentation-instructorInstructorInstrumentor

Agent SDKs

SDKPackageInstrumentor
OpenAI Agentsopeninference-instrumentation-openai-agentsOpenAIAgentsInstrumentor
Google ADKopeninference-instrumentation-google-adkGoogleADKInstrumentor

Frameworks

FrameworkPackageInstrumentor
LangChain / LangGraphopeninference-instrumentation-langchainLangChainInstrumentor
LlamaIndexopeninference-instrumentation-llama-indexLlamaIndexInstrumentor
CrewAIopeninference-instrumentation-crewaiCrewAIInstrumentor
DSPyopeninference-instrumentation-dspyDSPyInstrumentor
Haystackopeninference-instrumentation-haystackHaystackInstrumentor
smolagentsopeninference-instrumentation-smolagentsSmolagentsInstrumentor
Agnoopeninference-instrumentation-agnoAgnoInstrumentor
AutoGenopeninference-instrumentation-autogenAutogenInstrumentor
Guardrailsopeninference-instrumentation-guardrailsGuardrailsInstrumentor
Two special cases:
  • AutoGen instruments the classic ConversableAgent API (the ag2 package), not the newer autogen-agentchat rewrite.
  • MCP (openinference-instrumentation-mcpMCPInstrumentor) propagates trace context across the MCP client/server boundary so tool calls stay on the same trace — it stitches spans rather than emitting model spans itself. Add it alongside the instrumentor for whatever runs your model.

Turning one on explicitly

Install the instrumentor and call it after bryel.init():
import bryel
bryel.init(service_name="research-agent")   # exporter only

from openinference.instrumentation.crewai import CrewAIInstrumentor
CrewAIInstrumentor().instrument()
That’s the same thing instrument=True does — it just calls every instrumentor it finds. Use the explicit form when you want to trace one library and not the rest.
Don’t see your framework? If it emits OpenTelemetry GenAI or OpenInference spans, bryel already accepts them — point your OTLP exporter at the HTTP API. If it doesn’t, tell us and we’ll add it.