Skip to content

Quickstart: OpenTelemetry Collector fan-out

If your traces already flow through an OpenTelemetry Collector to Langfuse, Datadog, or another backend, you can keep that pipeline unchanged. You add a second pipeline that sends a copy of the same traces to Mibo. Your observability tool keeps the traces it has today, and Mibo tests them.

  • A Mibo account with a verified email. Mibo rejects traces and AI features until you verify. See Email verification.
  • An OpenTelemetry Collector that receives your application’s traces over OTLP.
  • An application whose traces include the user input and the final response. See Capture the content Mibo needs.
  1. Create an account at app.mibo-ai.com, or sign in, and click Set up your Agent.
  2. Enter an Agent Name and choose the Other agent type. Click Continue to API key.
  3. Click Create Agent API key and copy the key. Mibo shows it only once. Click I’ve saved it — continue to traces.
  4. In the Agent navigation, open Set up agent. Set OTLP Service Name to your application’s service.name, such as support-agent-prod, and click Save Changes.

The Collector forwards each trace’s service.name unchanged. Mibo routes the trace to the Agent whose OTLP Service Name equals it.

Add an otlp_http/mibo exporter and a traces/mibo pipeline. Leave your existing exporter and pipeline as they are. In the example below, otlp_http/existing stands for your current backend’s exporter. Both pipelines read from the same otlp receiver, so each gets a copy of every trace. This configuration is illustrative: keep your own receivers, processors, and existing exporter settings.

receivers:
otlp:
protocols:
grpc:
endpoint: 0.0.0.0:4317
http:
endpoint: 0.0.0.0:4318
processors:
batch: {}
batch/mibo:
send_batch_size: 20
send_batch_max_size: 20
exporters:
otlp_http/existing:
endpoint: <YOUR_EXISTING_BACKEND_ENDPOINT>
otlp_http/mibo:
traces_endpoint: https://api.mibo-ai.com/public/traces
headers:
x-api-key: ${env:MIBO_API_KEY}
encoding: proto
compression: gzip
service:
pipelines:
traces:
receivers: [otlp]
processors: [batch]
exporters: [otlp_http/existing]
traces/mibo:
receivers: [otlp]
processors: [batch/mibo]
exporters: [otlp_http/mibo]

Start the Collector with MIBO_API_KEY set to your Mibo API key.

What matters in the Mibo exporter:

  • traces_endpoint is used as written. If you set endpoint instead, the exporter appends /v1/traces, which Mibo does not serve.
  • headers carries your key in x-api-key.
  • encoding can be proto or json. Mibo accepts both over OTLP/HTTP. Mibo does not accept OTLP/gRPC, so do not use the otlp gRPC exporter for Mibo.
  • compression: gzip is the exporter default, and Mibo accepts it.
  • batch/mibo keeps each request small. Mibo accepts up to 10 MB per request, and verbose GenAI spans can pass that in large batches.
  1. Restart the Collector so it loads the new pipeline.
  2. Run one interaction through your Agent.
  3. Open the Agent’s Traces page in Mibo. The same trace still appears in your existing backend.

If the trace does not appear, check the Collector’s logs for the Mibo exporter’s response:

Status Cause
401 UNAUTHORIZED The API key is missing, wrong, revoked, or expired.
403 EMAIL_NOT_VERIFIED Your Mibo email is not verified yet.
400 OTLP_SERVICE_NAME_REQUIRED The trace has no service.name.
404 OTLP_PLATFORM_NOT_FOUND No Agent has an OTLP Service Name equal to the trace’s service.name.
403 OTLP_PLATFORM_NOT_ALLOWED The service name matched an Agent, but the API key cannot write to it.
413 PAYLOAD_TOO_LARGE The request is over 10 MB. Lower send_batch_max_size.
429 TRACE_LIMIT_REACHED Your plan’s monthly trace quota is used up. Each new trace counts toward it.
429 RATE_LIMIT_EXCEEDED The API key sent more than 1,000 requests in a minute, or too many concurrent requests.

If the Collector also receives traces from other services, Mibo rejects the traces whose service.name matches no Agent. When a batch mixes accepted and rejected traces, Mibo returns 200 with a partial-success response that counts the rejected spans, and stores the accepted traces. To send Mibo only your Agent’s traces, add the Collector’s filter processor to the traces/mibo pipeline. It ships in the contrib distribution.

  1. In the Agent navigation, open Create tests with AI.
  2. Click Use real trace. In Ground generation on a real trace, select your trace and click Use this trace.
  3. Review the generated test cases and click Save. Keep the test enabled, with Passive behavior set to Always run or Run when relevant.
  4. Run another interaction through your Agent. Mibo evaluates each new trace against your saved tests.
  5. Open the test and check Last Result.

The Collector forwards what your instrumentation records. Mibo reads the user input from gen_ai.input.messages or gen_ai.prompt, and the final response from gen_ai.output.messages or gen_ai.response.text. Without user input, Run when relevant tests are skipped and the trace shows No usable input. Always run tests still run.

Instrumentation How to record content
Vercel AI SDK 7 On by default. See the Vercel AI SDK quickstart.
OpenLLMetry On by default. TRACELOOP_TRACE_CONTENT=false turns it off. See the OpenLLMetry quickstart.
OpenTelemetry’s GenAI instrumentations Off by default. Their documentation enables span content with OTEL_SEMCONV_STABILITY_OPT_IN=gen_ai_latest_experimental and OTEL_INSTRUMENTATION_GENAI_CAPTURE_MESSAGE_CONTENT=span_only. Mibo has not verified these end to end.

Some teams turn content capture off for their observability backend. Mibo needs it on for the traces it receives. Mibo always redacts secrets and redacts personal data when your project enables it. See Data handling.