Mixedbread

Trace Export

Every search and generation on Mixedbread produces a structured trace: the query, the tool calls the agent issued with their arguments and results, the model turns with their token usage, and the chunks that came back. The dashboard renders these traces, and trace export pushes the same data to an observability backend you own, as OpenTelemetry spans, moments after each run finishes.

Traces land next to the rest of your LLM observability, so you can search them, score them, and alert on them with the tooling you already use.

The Tracing settings page in the dashboard, showing a Langfuse and an OTLP destination, both with a green Delivering status.

What gets exported

Each exported trace is one run, with a root span for the request and a child span per recorded step: execute_tool spans for retrieval tool calls (with their arguments and results) and chat spans for model turns (with their token usage). Attributes follow the OpenTelemetry GenAI semantic conventions, so Langfuse and Braintrust classify them as tool and generation observations automatically and other OTel tooling reads them without configuration.

The export is exactly the customer-facing trace you see in the dashboard and the events API. Mixedbread's internal spans (databases, retrieval backends, inference infrastructure) are never sent.

You choose per destination which trace kinds to export:

Trace kindContentsExported by default
Agentic searchThe agent's rounds, tool calls, and model turnsYes
Chat completionsCompletion and Responses turns, grouped per conversationYes
Question answeringEach Q&A request's retrieval and answer generationYes
SearchEvery plain search (high volume)No
GrepRegex matches over your storesNo

Chat completion turns in the same conversation share a session id, so a resumed chat reads as one thread in Langfuse instead of unrelated traces.

Large runs are kept deliverable rather than dropped: a trace carries up to 50 result chunks, chunk text is truncated to 2,000 characters, and any single span field is capped at 128 kB.

Setup

In the dashboard, go to Settings → Tracing and click Connect destination. Pick Langfuse, or OpenTelemetry (OTLP) for Braintrust and everything else.

Agentic search, chat completions, and question answering are on by default; plain searches and grep are off because of their volume.

Saving checks the credentials against the destination, so a wrong key fails here instead of silently dropping traces later. Traces then arrive within seconds of each run, and the destination card shows the delivery status.

The Connect a destination dialog with Langfuse selected, showing host, public key, and secret key fields and the list of trace kinds to export.

Langfuse

Langfuse Cloud or a self-hosted instance. Three fields, all from Project settings → API keys in Langfuse:

FieldValue
Hosthttps://cloud.langfuse.com, or your self-hosted URL
Public keypk-lf-…
Secret keysk-lf-…

Here is an exported agentic search in Langfuse: the root span with the query and final ranking, tool spans for each retrieval call, and generations with their token usage:

An exported agentic search trace in Langfuse, showing the span tree with search and generation spans, the input query, the output ranking, and token usage.

Braintrust

Braintrust ingests OpenTelemetry directly, so connect it as an OpenTelemetry (OTLP) destination: set the traces URL, and the two headers Braintrust authenticates and routes with.

FieldValue
Traces endpointhttps://api.braintrust.dev/otel/v1/traces (EU: https://api-eu.braintrust.dev/otel/v1/traces)
HeadersAuthorization and x-bt-parent, one per line
Authorization: Bearer <BRAINTRUST_API_KEY>
x-bt-parent: project_name:My Project
  • Authorization carries a Braintrust API key from Settings → API keys.
  • x-bt-parent decides which project the traces land in. Use project_name:<name> or project_id:<uuid>. Braintrust has no default project for OTLP, so leave it out and the connection check fails.

Traces arrive under the project's Logs, one row per run. Braintrust reads the GenAI attributes, so retrieval calls render as tool spans and model turns as generations with their token usage:

An exported agentic search trace in Braintrust's Logs view, showing the span tree with tool and generation spans and the selected tool span's GenAI metadata.

The connection check shows up there too, as a mixedbread.connection_test trace: Braintrust rejects an OTLP request that carries no spans, so the check sends a single empty one instead. It is safe to delete.

Other OTLP collectors

Phoenix, Traceloop, Grafana, or your own collector connect the same way as Braintrust: the OTLP/HTTP traces path as the endpoint, plus whatever headers it authenticates with. gRPC collectors are not supported.

Delivery

Export is best-effort by design: a slow or failing destination never affects the request that produced the trace. Deliveries are batched and usually arrive within seconds of the run finishing.

  • Status. Each destination card shows one of Delivering, Waiting for traces, Failing (with the destination's last error), or Paused.
  • No duplicates. Trace and span ids are derived deterministically from the event, so a retried delivery overwrites the previous one instead of creating a duplicate trace.
  • Pause and resume. Pausing stops exports without forgetting the configuration. Traces produced while paused are not backfilled.

Security

Traces contain your queries, retrieved content, and generated answers, so only connect backends you control. Credentials are encrypted at rest and write-only: the API returns only a non-secret hint (the Langfuse public key, or the auth header name). For organizations using Bring Your Own Bucket, customer content is blanked from exported traces, matching the events API.

Troubleshooting

A destination shows Failing: the card displays the destination's last error response. After fixing the cause (rotated keys, changed endpoint), use Update credentials on the destination; delivery resumes with the next trace and the status clears on the first success.

Traces are missing: check that the trace kind is enabled on the destination. Plain searches and grep are not exported unless you turn them on.