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

# Dash0

> Learn how to export LLM Gateway traces and metrics to Dash0 using OpenTelemetry integration.

This guide provides instructions for integrating [Dash0](https://dash0.com) with the TrueFoundry AI Gateway to export OpenTelemetry traces and metrics.

## What is Dash0?

Dash0 is a cloud-native observability platform built on OpenTelemetry that accepts traces, metrics, and logs via standard OTLP endpoints. It provides distributed tracing, metrics dashboards, log management, and alerting in a unified interface. Dash0 is designed to be OpenTelemetry-native — it accepts data directly from any OTLP-compatible source without requiring proprietary SDKs or agents.

### Key Features of Dash0

* **[OpenTelemetry Native](https://www.dash0.com/documentation/dash0/opentelemetry)**: Accepts traces, metrics, and logs directly via OTLP/HTTP and OTLP/gRPC with no proprietary instrumentation required.
* **[Distributed Tracing](https://www.dash0.com/documentation/dash0/tracing)**: Visualize end-to-end request flows across services with full span detail and trace timelines.
* **[Datasets](https://www.dash0.com/documentation/dash0/datasets)**: Route telemetry to named datasets for logical separation of environments, teams, or signal types.
* **[Alerting](https://www.dash0.com/documentation/dash0/alerting)**: Set threshold-based alerts on trace latency, error rates, and custom metrics.

## Prerequisites

Before integrating Dash0 with TrueFoundry, ensure you have:

1. **TrueFoundry Account**: Create a [TrueFoundry account](https://www.truefoundry.com/register) and follow the instructions in our [Gateway Quick Start Guide](https://docs.truefoundry.com/gateway/quick-start).
2. **Dash0 Account**: Sign up at [app.dash0.com](https://app.dash0.com). A free trial is available.
3. **Dash0 Auth Token**: Create an auth token with Ingest permissions from **Organization Settings → Auth Tokens**.
4. **Dash0 OTLP Endpoint**: Find your region-specific endpoint from **Organization Settings → Endpoints → OTLP via HTTP**.

## Understanding the Dash0 Endpoint

Dash0 uses a region-specific ingestion endpoint in the format:

```
https://ingress.<region>.aws.dash0.com
```

The region is determined when you create your organization. Find your exact endpoint by going to **app.dash0.com → Organization Settings → Endpoints → OTLP via HTTP**. The full traces endpoint appends `/v1/traces` to the base URL.

Examples:

* US West 2: `https://ingress.us-west-2.aws.dash0.com/v1/traces`
* EU West 1: `https://ingress.eu-west-1.aws.dash0.com/v1/traces`

## Integration Steps

<Steps>
  <Step title="Get Your Dash0 Endpoint and Auth Token">
    1. Log in to [app.dash0.com](https://app.dash0.com).
    2. Go to **Organization Settings → Endpoints → OTLP via HTTP** and copy the base endpoint URL.
    3. Go to **Organization Settings → Auth Tokens**.
    4. Click **Add** to create a new token, give it a name (for example `tfy-gateway`), set **Signal types** to **All signal types**, and set **Permissions** to **Ingesting**.
    5. Copy the token value immediately — Dash0 will not show it again.

    <Frame>
      <img src="https://mintcdn.com/truefoundry/cvICHJFstf_12rNf/images/dash0-otlp-endpoint.png?fit=max&auto=format&n=cvICHJFstf_12rNf&q=85&s=475ae3a3f692e468729b8a0128c855c9" alt="Dash0 Organization Settings showing the OTLP via HTTP endpoint URL" width="1024" height="540" data-path="images/dash0-otlp-endpoint.png" />
    </Frame>

    <Frame>
      <img src="https://mintcdn.com/truefoundry/cvICHJFstf_12rNf/images/dash0-auth-token.png?fit=max&auto=format&n=cvICHJFstf_12rNf&q=85&s=e523f07ccd9c80a154b06c3a39cb4ef2" alt="Dash0 Organization Settings showing Auth Tokens section with a token created for TrueFoundry" width="1024" height="528" data-path="images/dash0-auth-token.png" />
    </Frame>

    <Tip>
      Dash0 auth tokens start with `auth_`. The token shown in the Auth Tokens list is masked — copy it immediately after creation as you cannot retrieve it later.
    </Tip>
  </Step>

  <Step title="Configure OTEL Export in TrueFoundry">
    1. Go to **AI Gateway** → **Controls** → **Settings** in the TrueFoundry dashboard.
    2. Scroll down to the **OTEL Config** section and click the edit (✏️) button.

    <Frame>
      <img src="https://mintcdn.com/truefoundry/Txtn6I8CGH9ouuEq/images/dash0-tfy-otel-nav.png?fit=max&auto=format&n=Txtn6I8CGH9ouuEq&q=85&s=d4a090aff0bf3b5aba5a8e214a11f8e0" alt="TrueFoundry AI Gateway Settings page showing the OTEL Config section" width="1024" height="536" data-path="images/dash0-tfy-otel-nav.png" />
    </Frame>

    3. Enable the **Otel Traces Exporter Configuration** toggle and fill in:

    <table>
      <thead>
        <tr><th>Field</th><th>Value</th></tr>
      </thead>

      <tbody>
        <tr><td>Toggle</td><td>Enabled</td></tr>
        <tr><td>Protocol</td><td>HTTP Configuration</td></tr>
        <tr><td>Endpoint</td><td>[https://ingress.\&lt;your-region\&gt;.aws.dash0.com/v1/traces](https://ingress.\&lt;your-region\&gt;.aws.dash0.com/v1/traces)</td></tr>
        <tr><td>Encoding</td><td>Proto</td></tr>
        <tr><td>Header Key 1</td><td>Authorization</td></tr>
        <tr><td>Header Value 1</td><td>Bearer \<your-dash0-auth-token></td></tr>
        <tr><td>Header Key 2</td><td>Dash0-Dataset</td></tr>
        <tr><td>Header Value 2</td><td>default</td></tr>
      </tbody>
    </table>

    <Frame>
      <img src="https://mintcdn.com/truefoundry/Txtn6I8CGH9ouuEq/images/dash0-traces-config.png?fit=max&auto=format&n=Txtn6I8CGH9ouuEq&q=85&s=5a41ca795a54a4942a29b2b510d0d70c" alt="TrueFoundry OTEL Traces Exporter Configuration showing Dash0 endpoint and headers" width="998" height="996" data-path="images/dash0-traces-config.png" />
    </Frame>

    4. Enable the **Otel Metrics Exporter Configuration** toggle and fill in:

    <table>
      <thead>
        <tr><th>Field</th><th>Value</th></tr>
      </thead>

      <tbody>
        <tr><td>Toggle</td><td>Enabled</td></tr>
        <tr><td>Protocol</td><td>HTTP Configuration</td></tr>
        <tr><td>Endpoint</td><td>[https://ingress.\&lt;your-region\&gt;.aws.dash0.com/v1/metrics](https://ingress.\&lt;your-region\&gt;.aws.dash0.com/v1/metrics)</td></tr>
        <tr><td>Encoding</td><td>Proto</td></tr>
        <tr><td>Header Key 1</td><td>Authorization</td></tr>
        <tr><td>Header Value 1</td><td>Bearer \<your-dash0-auth-token></td></tr>
        <tr><td>Header Key 2</td><td>Dash0-Dataset</td></tr>
        <tr><td>Header Value 2</td><td>default</td></tr>
      </tbody>
    </table>

    5. Click **Save** to apply the configuration.

    <Note>
      Replace `&lt;your-region&gt;` with your actual Dash0 region (for example `us-west-2` or `eu-west-1`). Both the traces and metrics exporters require two headers: the `Authorization` header with your Bearer token and the `Dash0-Dataset` header to route data to the correct dataset. Using `default` routes to your organization's default dataset.
    </Note>
  </Step>

  <Step title="Verify the Integration">
    1. Make a request through the TrueFoundry AI Gateway (for example from the Playground).
    2. Log into [app.dash0.com](https://app.dash0.com) and click **Tracing** in the left sidebar.
    3. Click **All Traces** and confirm traces from `tfy-llm-gateway` are appearing.

    <Frame>
      <img src="https://mintcdn.com/truefoundry/Txtn6I8CGH9ouuEq/images/dash0-traces.png?fit=max&auto=format&n=Txtn6I8CGH9ouuEq&q=85&s=6378b51166afdd1ae76e5e16313660cf" alt="Dash0 Tracing page showing LLM call traces from TrueFoundry AI Gateway" width="1024" height="534" data-path="images/dash0-traces.png" />
    </Frame>

    4. To verify metrics, click **Metrics** in the left sidebar and query for `tfy_` prefixed metric names.

    <Tip>
      If no traces appear after sending a request, try toggling the Otel Traces Exporter Configuration off and back on in TrueFoundry and saving again. This forces the gateway to reload the exporter configuration without requiring a full pod restart.
    </Tip>
  </Step>
</Steps>

## Configuration Reference

<table>
  <thead>
    <tr><th>Configuration</th><th>Value</th></tr>
  </thead>

  <tbody>
    <tr><td>Traces Endpoint</td><td>[https://ingress.\&lt;your-region\&gt;.aws.dash0.com/v1/traces](https://ingress.\&lt;your-region\&gt;.aws.dash0.com/v1/traces)</td></tr>
    <tr><td>Metrics Endpoint</td><td>[https://ingress.\&lt;your-region\&gt;.aws.dash0.com/v1/metrics](https://ingress.\&lt;your-region\&gt;.aws.dash0.com/v1/metrics)</td></tr>
    <tr><td>Protocol</td><td>HTTP</td></tr>
    <tr><td>Encoding</td><td>Proto</td></tr>
    <tr><td>Auth Header Key</td><td>Authorization</td></tr>
    <tr><td>Auth Header Value</td><td>Bearer \<your-dash0-auth-token></td></tr>
    <tr><td>Dataset Header Key</td><td>Dash0-Dataset</td></tr>
    <tr><td>Dataset Header Value</td><td>default (or your dataset name)</td></tr>
  </tbody>
</table>
