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

# Connect AI Observability

> Pull your existing AI traces into DataFramer from your observability tool

If your AI traces already live in an observability tool, connect it and DataFramer pulls the traces in. This is separate from [server instrumentation](/docs/user-signals/server-instrumentation): connecting a project pulls traces you've *already* created, while `dataframer-journey` auto-tags traces *as your service creates them*.

<Note>
  **Currently supported: Langfuse and LangSmith.** More observability tools are on the roadmap.
</Note>

## Connect a project

In the DataFramer UI, under **Findings**, add a project and choose your provider:

<Tabs>
  <Tab title="Langfuse">
    | Field        | Example                                        |
    | ------------ | ---------------------------------------------- |
    | Project Name | `Production Langfuse`                          |
    | Base URL     | `https://cloud.langfuse.com` (default)         |
    | Public Key   | `pk-lf-...`                                    |
    | Secret Key   | `sk-lf-...`                                    |
    | Data level   | `Observation` (default), `Trace`, or `Session` |

    Find your keys in your Langfuse project settings.
  </Tab>

  <Tab title="LangSmith">
    | Field                        | Example                                                       |
    | ---------------------------- | ------------------------------------------------------------- |
    | Project Name (in DataFramer) | `Production LangSmith`                                        |
    | Endpoint URL                 | `https://api.smith.langchain.com` (default)                   |
    | API Key                      | `ls-...`                                                      |
    | LangSmith Project            | `my-project`, the project name in LangSmith to pull runs from |
    | Data level                   | `Run` (default), `Trace`, or `Thread`                         |

    Find your API key in your LangSmith account settings.
  </Tab>
</Tabs>

Once connected, DataFramer pulls traces (Langfuse) or runs (LangSmith) into Findings, where you can explore, track, and push them into datasets or review queues.

Two things to decide up front:

* **Data level is permanent.** It sets what one datapoint is, and discovery and evaluations work at that level. You cannot change it after the project is created — pick a new project instead. At trace or session level a datapoint spans many observations, so very large ones are common; those are imported and analyzed in pieces rather than truncated, and only a datapoint that can't be read that way at all is skipped at import.
* **Importing traces is an AI task.** It reads PDF and spreadsheet attachments on the traces it pulls with a model, so it draws on your DataFramer credits or your own model provider key, and it is blocked while AI usage is unfunded or over the plan's spend limit.

## Journey correlation: Langfuse only, for now

If you also use the [Signals SDK](/docs/user-signals/browser-sdk) and want traces auto-tagged with a `journey_id` at creation time, that only works for Langfuse today, and only its v2 SDK, via `dataframer-journey`. See the [Langfuse v2 caveat](/docs/user-signals/server-instrumentation) for details.

LangSmith traces still pull in fine, they just won't have a `journey_id` auto-stamped on them. If you want journey correlation on LangSmith traces, add `journey_id` to your run's metadata or tags yourself before it's pulled in.

## Next steps

<Card title="Findings" icon="magnifying-glass" href="/docs/findings/overview">
  See what you can do with pulled traces
</Card>
