This guide applies to teams running meetingMLservice (the Pipecat-based
meeting engine). The Waterr.ai cloud product ships with internal tracing
already wired — this page is for developers self-hosting or contributing to
the service who want spans flowing to their own observability backend.
How it works
meetingMLservice uses the OpenTelemetry Protocol (OTLP) over HTTP to ship traces. That means it works with any OTLP-compatible backend — the integration is not tied to a single vendor. The same three env vars switch between providers:What gets traced
Once tracing is enabled, every meeting emits structured spans for:- Pipeline stages — STT, LLM, and TTS latency + token usage per turn
(Pipecat’s built-in
enable_tracingon thePipelineTask) - Agentic LLM calls —
agentic.llm.callfor every task-detection / orchestration call, with full input messages and JSON output - Agentic flow events —
agentic.process_user_message,agentic.task_detected,agentic.task_created, content-save spans
Provider configurations
Pick your backend, copy the env block intomeetingMLservice/.env (local) or
your deploy secrets (prod), restart the service. The OTel deps
(opentelemetry-api, opentelemetry-sdk,
opentelemetry-exporter-otlp-proto-http) are already pinned in
requirements.txt — no extra pip install needed.
- Langfuse
- Honeycomb
- Grafana Cloud
- New Relic
- Datadog
- SigNoz
- Phoenix (Arize)
- Other OTLP backend
Best for: LLM-native observability with prompt/output replay, evals,
datasets, and session grouping.Build the header value:Get keys from Project Settings → API Keys. View traces at
cloud.langfuse.com → Traces.
How it’s wired
You don’t need to write any tracing code — the integration is built into the pipeline factories. For reference:services/agentic/llm_helper.py and services/agentic/agentic_flow_manager.py.
You can also tee spans to stdout while debugging by setting
OTEL_CONSOLE_EXPORT=true.
Verify
Start a meeting against your dev instance, then in your backend:- Look for traces tagged with service name
pipecat-demo(or whateverservice_nameyou passed tosetup_tracing). - You should see one trace per meeting with nested spans for each pipeline stage and agentic call.
ENABLE_TRACINGis empty.os.getenv("ENABLE_TRACING")returnsNoneif the var isn’t set. Set it totrue.- Wrong region / endpoint. Most providers split EU and US data centers; using the wrong one returns 401 or 404.
- Auth header malformed. Must be
Header=Value(equals sign, not colon), on a single line. Multiple headers are comma-separated:key1=value1,key2=value2. - Enable console export. Set
OTEL_CONSOLE_EXPORT=trueand watch the service logs — if spans print there but not in your backend, the issue is auth or network egress.
Security notes
- Never commit keys. Inject
OTEL_EXPORTER_OTLP_HEADERSvia your deploy secret store, not.envin git. - PII in spans. Agentic spans capture full input messages and LLM output for debuggability. If your meetings carry sensitive data (PHI, payment info, etc.), keep tracing off in prod or point it at a backend inside your VPC (self-hosted Langfuse, SigNoz, Phoenix, or an internal collector).
- Rotate on exposure. All providers above let you revoke ingest keys from
their settings UI; rotate immediately if a
.envfile leaks.

