Skip to main content
Databricks Agent Bricks agents emit MLflow Tracing spans. HoneyHive ingests those spans over OTLP/HTTP from environment variables on the agent runtime. No HoneyHive SDK code is required in the agent. These steps apply wherever you control the agent’s environment variables: agents deployed to Model Serving with agents.deploy(), and MLflow-traced code in notebooks or jobs.

Prerequisites

  • Databricks workspace with Model Serving, or a local/notebook environment with mlflow>=3.11 (this guide was validated with MLflow 3.16; dual export needs 3.4+)
  • A HoneyHive ingestion API key from Settings > Project > API Keys, on the Ingestion tab

Provider host and OTLP traces URL

HoneyHive routes OTLP ingestion through your deployment’s API host. Replace <provider-host> with the hostname shown in your HoneyHive dashboard or API settings:
Example for a US production deployment:

Environment variables

Set these on the agent process before any MLflow tracing starts. The first three are required: Dual export uses MLFLOW_TRACE_ENABLE_OTLP_DUAL_EXPORT (MLflow 3.4+). Databricks’ OpenTelemetry export page currently shows MLFLOW_ENABLE_DUAL_EXPORT, which MLflow does not read - use the name above. If you previously set MLFLOW_ENABLE_OTEL_GENAI_SEMCONV=true, remove it and restart the endpoint. See GenAI semantic conventions for what that setting changes. If both OTEL_EXPORTER_OTLP_TRACES_PROTOCOL and OTEL_EXPORTER_OTLP_PROTOCOL are set, the traces-specific variable wins. Unset any leftover OTEL_EXPORTER_OTLP_TRACES_PROTOCOL=grpc so http/protobuf takes effect.

Configure a Model Serving agent

Pass the variables through environment_vars on agents.deploy():
Use a Databricks secret with {{secrets/scope/key}} instead of pasting the API key into a notebook. For agents already deployed, add the same variables under Serving > endpoint > Edit > Environment variables, then redeploy or restart the endpoint.

Notebook or local smoke test

mlflow.openai.autolog() creates the model span that carries inputs, outputs, and tokens:
This smoke test sends traces to HoneyHive only. To also keep them in MLflow, set MLFLOW_TRACE_ENABLE_OTLP_DUAL_EXPORT=true. Dual export writes the MLflow half to the active tracking URI. Databricks notebooks and Model Serving use the workspace by default. Outside Databricks, MLflow writes to a local tracking store unless you set a tracking URI with mlflow.set_tracking_uri(...).
On Databricks, use mlflow[databricks] when you also want traces in the workspace MLflow UI.

What HoneyHive receives

HoneyHive maps each MLflow span type to an event type: A tool-calling agent produces this shape:
Each span currently appears as its own session row in HoneyHive. Parent/child links are kept through OTel parent span IDs. To see one agent run, filter Traces by the trace_id metadata field, or by service.name.

Verify traces in HoneyHive

  1. Invoke the agent (or run the smoke test above).
  2. Open Traces for the project tied to your API key.
  3. Look for events with source set to otlp and metadata such as telemetry.sdk.name=mlflow, instrumentor=MLflow, and your OTEL_SERVICE_NAME.
  4. Open a model span and confirm the model inputs, outputs, and token counts appear.
If traces do not appear:
  1. Confirm the endpoint ends with /opentelemetry/v1/traces and uses your HoneyHive API host.
  2. Confirm OTEL_EXPORTER_OTLP_PROTOCOL=http/protobuf, and that OTEL_EXPORTER_OTLP_TRACES_PROTOCOL is unset or also http/protobuf.
  3. Confirm Authorization=Bearer <HH_INGESTION_API_KEY> matches the target project.
  4. Confirm MLFLOW_ENABLE_OTLP_EXPORTER is not set to false.
  5. Confirm the serving endpoint can reach HoneyHive over outbound HTTPS.

Export modes

GenAI semantic conventions

MLflow 3.11+ can translate its spans to OpenTelemetry GenAI semantic conventions (gen_ai.* attributes) when you set MLFLOW_ENABLE_OTEL_GENAI_SEMCONV=true. HoneyHive reads both formats, but leave this off for agents. The translation drops detail that MLflow’s default export keeps:
  • Agent and chain spans arrive as invoke_agent with no inputs or outputs
  • Tool spans arrive as execute_tool without the tool name
  • Values you set with set_inputs / set_outputs on a plain mlflow.start_span span are dropped
Model spans keep their inputs, outputs, and token usage in both formats. If you do turn it on, set it before the first span.

OpenTelemetry concepts

How HoneyHive stores OTLP traces and GenAI span attributes

Tracing introduction

Sessions, event types, and trace hierarchy in HoneyHive

Enrich your traces

Add metadata, user properties, and feedback to traces

Custom spans

Add HoneyHive spans around business logic in your application

Resources