Guides

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_metrics are on
  • Search by conversation id — Pipecat conversation_id → platform.ref.conversation_id

How instrumentation works

  1. Call parlotize("…") once at process start. This installs a TracerProvider that exports to Parlot and patches PipelineWorker so tracing + metrics default on.
  2. Build your pipeline as usual. Pass enable_tracing=True and enable_turn_tracking=True on PipelineWorker (or rely on the patch).
  3. Do not call Pipecat’s setup_tracing() afterward — it would replace the global TracerProvider and drop Parlot processors. parlotize is 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.

On this page