> ## Documentation Index
> Fetch the complete documentation index at: https://oximy.com/docs/llms.txt
> Use this file to discover all available pages before exploring further.

# Observe with OpenTelemetry

> Send LLM and agent traces to Relay without changing where model requests execute.

Observe mode leaves provider execution unchanged. Your application continues calling its provider or gateway and exports OpenTelemetry data to Relay for analysis.

## Send traces to the OTLP endpoint

No Oximy SDK is required. Configure your runtime's existing OpenTelemetry
exporter to send OTLP over HTTP/protobuf:

```bash theme={null}
export OTEL_EXPORTER_OTLP_ENDPOINT="https://relay.oximy.com"
export OTEL_EXPORTER_OTLP_PROTOCOL="http/protobuf"
export OTEL_EXPORTER_OTLP_HEADERS="authorization=Bearer%20ox_..."
export OTEL_SERVICE_NAME="your-service-name"
```

The trace request is sent to:

```text theme={null}
https://relay.oximy.com/v1/traces
```

If you configure the signal-specific URL directly, send the Relay key in the
HTTP authorization header:

```text theme={null}
Authorization: Bearer ox_...
```

Use the ingest URL shown in Relay setup if your deployment supplies a different endpoint.

<Info>
  `OTEL_EXPORTER_OTLP_HEADERS` uses an encoded space in `Bearer%20ox_...`.
  Some exporters silently drop a header containing a raw space.
</Info>

## What remains unchanged

* Your application still chooses and calls the provider.
* Existing provider credentials stay in the application or gateway.
* Relay does not become the retry or execution authority.
* Observation can run alongside gateway traffic in the same project.

## Verify ingestion

1. Generate a small, identifiable request.
2. Open **Relay → Traffic** and filter the source to OTEL.
3. Confirm the model, token, cost, latency, trace, and status fields that your instrumentation emits.
4. Open the trace to inspect related spans.

Missing fields are usually an instrumentation issue rather than an ingestion failure. Start with trace arrival, then validate model and usage attributes.

<Note>
  Shadow comparison is separate from observation. Enabling shadow causes Relay to execute an additional candidate request, so it requires a usable provider credential and consumes its configured budget.
</Note>

<Card title="Troubleshoot telemetry" icon="stethoscope" href="/docs/relay/troubleshooting">
  Diagnose missing traces, incomplete fields, authentication failures, and source mismatches.
</Card>
