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

# OTLP Export

> Export telemetry to external observability platforms

Ultra supports exporting traces and metrics via the **OpenTelemetry Protocol (OTLP)** to external observability backends like Jaeger, Grafana Tempo, Datadog, and others.

## Configuration

Enable OTLP export in your Ultra config:

```yaml theme={null}
observability:
  enabled: true
  endpoint: "localhost:4317"    # OTLP gRPC endpoint
  service_name: "ultra"         # Service name in traces
```

| Field          | Type   | Default   | Description                  |
| -------------- | ------ | --------- | ---------------------------- |
| `enabled`      | bool   | `false`   | Enable OTLP telemetry export |
| `endpoint`     | string | `""`      | OTLP gRPC endpoint           |
| `service_name` | string | `"ultra"` | Service name for telemetry   |

## Backend Examples

### Jaeger

Run Jaeger locally and point Ultra to it:

```bash theme={null}
# Start Jaeger with OTLP support
docker run -d --name jaeger \
  -p 4317:4317 \
  -p 16686:16686 \
  jaegertracing/all-in-one:latest
```

```yaml theme={null}
observability:
  enabled: true
  endpoint: "localhost:4317"
```

View traces at `http://localhost:16686`.

### Grafana Tempo

```yaml theme={null}
observability:
  enabled: true
  endpoint: "tempo.example.com:4317"
  service_name: "ultra-production"
```

### Datadog

Use the Datadog OTLP ingest endpoint:

```yaml theme={null}
observability:
  enabled: true
  endpoint: "localhost:4317"  # Datadog Agent OTLP port
```

Ensure your Datadog Agent is configured with OTLP ingest enabled.

### Honeycomb

```yaml theme={null}
observability:
  enabled: true
  endpoint: "api.honeycomb.io:443"
```

## What Gets Exported

* **Traces** — OpenTelemetry spans for every MCP operation with W3C Trace Context IDs
* **Metrics** — Request counts, latency histograms, error rates

## Dual Storage

OTLP export works alongside local storage. When enabled, Ultra writes to both:

1. **Local SQLite** — Always available for the dashboard and local inspection
2. **OTLP endpoint** — Exported to your chosen backend

This means you get the Ultra dashboard locally plus your existing observability stack for alerts, SLOs, and cross-service correlation.
