OpenInference
OpenInference is a fixed projection of the unified OpenTelemetry exporter. It is always available and no longer has a separate configuration section, subscriber class, or Cargo feature.
Plugin Configuration
Select openinference on an endpoint in the opentelemetry section:
The endpoint emits the existing OpenInference scope, tool, LLM, and mark
projection. It supports the mark_projection, mark_exclude_names, and
attribute_mappings controls on the typed endpoint, retaining the legacy
behavior.
Normalized tool results emit one llm.input_messages entry per result with
message.role = "tool", message.tool_call_id, and message.content.
Anthropic user messages that contain only tool_result blocks expand into
separate entries so parallel tool results retain their original order and
correlation IDs.
Set OTEL_AUTHORIZATION to the complete authorization header value before
activation. NeMo Relay snapshots the value when the plugin
activates. The variable must be set and nonblank. A header name cannot appear
in both headers and header_env, including names that differ only by ASCII
case. The resolved value cannot have surrounding whitespace.
For the complete endpoint field table, multi-endpoint behavior, and version-2 migration, refer to OpenTelemetry.
Direct Subscriber
Use OpenTelemetrySubscriber with the OpenInference discriminator:
Python
Node.js
Rust
Direct OpenInference subscribers use the shared
header_env construction, validation, and secret-handling behavior.
Set OTEL_AUTHORIZATION to the complete, nonblank authorization header value
before constructing OpenTelemetrySubscriber. Subscriber construction fails
if the environment variable is missing or invalid.
Register the subscriber before instrumented work. During graceful teardown, deregister it, flush it, and then shut it down.