Pipecat
Instrument Pipecat voice agents with Parlot — turns, waterfall, and usage over OpenTelemetry.
You already ship Pipecat voice agents. Parlot’s MIT parlotize()
adds a production session debugger: turns, STT/LLM/TTS waterfall, and usage — on the shared
Conversation Contract every Parlot adapter emits.
Install and env setup: Quick Start. Shared product model: Concepts.
What you get in Parlot
- Session + transcript — turns, close reason,
framework=pipecat - Pipeline waterfall — STT / LLM / TTS timing from Pipecat’s OpenTelemetry spans
- Usage — tokens and character counts when
enable_metrics/enable_usage_metricsare on - Search by conversation id — Pipecat
conversation_id→platform.ref.conversation_id
How instrumentation works
- Call
parlotize("…")once at process start. This installs a TracerProvider that exports to Parlot and patchesPipelineWorkerso tracing + metrics default on. - Build your pipeline as usual. Pass
enable_tracing=Trueandenable_turn_tracking=TrueonPipelineWorker(or rely on the patch). - Do not call Pipecat’s
setup_tracing()afterward — it would replace the global TracerProvider and drop Parlot processors.parlotizeis the Parlot equivalent.
Pipecat’s nested conversation→turn tree is remapped onto the Conversation Contract: one
parlot.session per conversation, a new OTel trace per parlot.turn, and service spans
renamed to the shared GenAI / voice vocabulary (chat {model}, stt, tts, …).
Add it to an existing bot
from parlot.instrumentation.pipecat import parlotize
parlotize("my-pipecat-agent", version="0.1.0")
# ... Pipeline ...
worker = PipelineWorker(
pipeline,
params=PipelineParams(enable_metrics=True, enable_usage_metrics=True),
enable_tracing=True,
enable_turn_tracking=True,
conversation_id="optional-stable-id",
)export PARLOT_ENDPOINT=https://ingest.parlot.ai
export PARLOT_API_KEY=<org-scoped-key>Call parlotize once from parlot.instrumentation.pipecat for the process that owns the
pipeline. Do not mix in another framework’s parlotize in the same agent process.
Example
examples/pipecat/minimal-voice/ —
adapted from Pipecat’s open-telemetry/langfuse demo.
Related
- Concepts — Conversation Contract and shared capture policies
- Pipecat OpenTelemetry docs
