Skip to content
GONATURELLE
OpenTelemetry logoObservability

GONATURELLE for OpenTelemetry

Send spans that follow the OpenTelemetry GenAI semantic conventions to GONATURELLE, evaluate them as trajectories and promote production traces into regression cases.

gen_ai.* span attributes
otel-collector.yaml
receivers:
  otlp:
    protocols:
      grpc:
        endpoint: 0.0.0.0:4317
      http:
        endpoint: 0.0.0.0:4318

processors:
  batch: {}
  attributes/redact:
    actions:
      - key: enduser.id
        action: hash
      - key: gen_ai.input.messages
        action: delete

exporters:
  otlphttp/gonaturelle:
    endpoint: https://ingest.gonaturelle.si/otlp
    headers:
      authorization: Bearer ${env:GONATURELLE_INGEST_KEY}

service:
  pipelines:
    traces:
      receivers: [otlp]
      processors: [attributes/redact, batch]
      exporters: [otlphttp/gonaturelle]

OpenTelemetry's GenAI semantic conventions define how to describe model calls, agent invocations and tool executions as spans. A tool execution span has gen_ai.operation.name set to execute_tool and carries attributes such as gen_ai.tool.name and gen_ai.tool.call.id; chat spans carry gen_ai.provider.name, gen_ai.request.model and token usage; agent spans use invoke_agent. Recording tool call arguments and results is opt-in because they can contain sensitive data. The conventions are still marked as in development as of November 2026, so attribute names can change between releases.

GONATURELLE accepts OTLP over HTTP and gRPC. Point an OpenTelemetry Collector exporter or your SDK's OTLP exporter at your GONATURELLE endpoint, and spans are assembled into trajectories by trace id: execute_tool spans become tool steps, chat spans become generation steps, and parent-child relationships give the order and nesting. Because many frameworks and instrumentation libraries already emit these spans, this is often the fastest path for agents in languages or frameworks without a native adapter.

The second use is promotion. Production traces that a reviewer flags, or that match a filter such as a guardrail trip or a human escalation, can be promoted into a BYOD suite: the user input becomes the case input, the observed trajectory becomes a candidate expectation, and PHI and PII detectors run before anything is stored. A reviewer confirms the gold label, and the incident becomes a permanent regression case that every future pull request must pass.

What you can test with OpenTelemetry.

OTLP ingest of GenAI spans

execute_tool, chat and invoke_agent spans are mapped to trajectory steps by trace and parent span, with gen_ai attributes kept for filtering and assertions.

Language-agnostic agents

Agents in Java, Go, .NET or any language with OpenTelemetry instrumentation can be evaluated without a native GONATURELLE SDK.

Trace-to-test promotion

Flag a production trace and it becomes a de-identified BYOD case with a candidate expectation, waiting for reviewer sign-off before it gates merges.

Collector-side redaction

Use the Collector's attributes or transform processors to drop or hash fields before export, in addition to GONATURELLE's own PHI and PII detectors on ingest.

Set up in 5 steps.

Most teams have a first suite running against OpenTelemetry in under an hour, then add the CI gate.

Get an API key
  1. 01

    Enable GenAI instrumentation in your agent, either through your framework's built-in OpenTelemetry support or an instrumentation library, and opt in to recording tool arguments where policy allows.

  2. 02

    Create an GONATURELLE ingest key and add an otlphttp exporter to your OpenTelemetry Collector pointing at your GONATURELLE endpoint.

  3. 03

    Add redaction processors for any attributes that must never leave your network.

  4. 04

    In GONATURELLE, create a trace source with filters for the services and span names to keep, and enable promotion rules if you want flagged traces turned into cases.

  5. 05

    Run suites against the agent as usual; spans emitted during evaluation runs are matched to cases by the gonaturelle.case_id baggage entry the runner sets.

OpenTelemetry integration FAQ

Which version of the GenAI conventions do you support?

The current development release and the previous one. Older spans that use gen_ai.system instead of gen_ai.provider.name are mapped automatically. Because the conventions are not yet stable, check the GONATURELLE changelog when you upgrade instrumentation.

Is this a replacement for our observability platform?

No. GONATURELLE stores the traces it needs for evaluation and promotion, not a general-purpose APM view. Most teams fan out the same spans to their observability backend and to GONATURELLE from one Collector.

What if tool arguments are not recorded?

Order, cycle and tool-selection assertions still work from tool names. Schema, bound and hallucinated-argument assertions need arguments, so enable argument capture for evaluation environments even if production keeps it off.

Stop testing regulated agents on generic prompts.

Run your agent against 100 industry-standard clinical or financial edge cases in 5 minutes. 14-day free production trial, no card.