OpenInference is a set of semantic conventions and instrumentation plugins that complement OpenTelemetry for tracing AI applications. The specification describes LLM invocations and their surrounding context, such as retrieval from vector stores and calls to external tools like search engines or APIs. It is transport- and format-agnostic, meant to be used alongside formats such as JSON, ProtoBuf, and DataFrames.
Traces are collected natively by Arize Phoenix and Arize AX, and any OpenTelemetry-compatible collector also works as a destination. Instrumentation packages exist for Python, JavaScript, Java, and Go, covering model SDKs (OpenAI, Anthropic, Google GenAI, Vertex AI, Mistral, Groq, Cohere, Ollama, AWS Bedrock, Together AI) and agent frameworks such as LangChain, LlamaIndex, CrewAI, DSPy, Haystack, Agno, smolagents, Pydantic AI, AG2, the OpenAI Agents SDK, the Claude Agent SDK, Google ADK, Strands Agents, BeeAI, and MCP.
Span processors normalize traces produced by other instrumentation libraries, OpenLIT and OpenLLMetry, into the OpenInference format, so data from mixed sources lands in one schema.
Features
- Semantic conventions: a specification for attributes that describe LLM calls, retrieval, tool use, and agent steps on OpenTelemetry spans
- Python instrumentation: packages for model SDKs and agent frameworks, plus shared decorators and helpers
- JavaScript instrumentation: packages including LangChain.js, the OpenAI and Anthropic SDKs, AWS Bedrock, BeeAI, and MCP
- Java instrumentation: LangChain4j, Spring AI, and Google ADK Java, with typed span classes for manual tracing
- Go instrumentation: the official OpenAI and Anthropic Go SDKs, with context propagation and masking utilities
- Span processors: convert OpenLIT and OpenLLMetry traces into OpenInference spans
- Destinations: Arize Phoenix, Arize AX, or any OpenTelemetry-compatible collector



