Overview
The Pipecat integration monitors voice AI applications built on the open-source Pipecat Python framework. Drop theroark_analytics[pipecat] observer into your existing pipeline and call lifecycle, transcripts, tool invocations, and recordings are forwarded to Roark automatically.
The observer is deployment-agnostic — it works the same whether your pipeline runs self-hosted (any Python environment) or on Pipecat Cloud (Daily’s managed Pipecat hosting). The only requirement is that the observer is included in your pipeline at runtime.
Prerequisites
- A running Pipecat application (Python 3.10+,
pipecat-ai >= 0.0.40; tested withpipecat-ai0.0.108) - A Pipecat integration created in your Roark dashboard (see Step 1)
- A Roark API key with WRITE scope bound to that integration (generate one)
Every call sent by the observer is attributed to the integration that its API key is bound to. The key must be created after the integration exists and scoped to it — a key that isn’t bound to a Pipecat integration will be rejected. Create the integration first, then generate the key from within it.
Setup Instructions
Step 1: Create a Pipecat integration
Before any calls can be sent, the API key the observer uses must be bound to a Pipecat integration. Create the integration first so Roark knows where to attribute incoming calls:- Navigate to Settings → Integrations in your Roark dashboard
- Click Add Integration and select Pipecat
- Give it a friendly Integration Name (e.g.
Support Bot — Production) and create it
An API key that is not bound to a Pipecat integration will be rejected by the observer. If you rotate keys, the replacement must be bound to the same integration.
Step 2: Install the observer
Step 3: Configure your API key
The only setting you need to provide is your Roark API key — the WRITE-scoped key bound to the Pipecat integration you created in Step 1..env
Step 4: Wire it into your pipeline
Construct aRoarkObserver, splice its audio_processor into your pipeline after transport.output() so the bot channel captures post-TTS audio, and pass the observer in PipelineParams(observers=[...]):
Power-user: bring your own AudioBufferProcessor
If you need to tune sample rate, channel count, or buffer size, instantiate AudioBufferProcessor yourself and pass it via audio_buffer_processor=. Splice that same instance into your pipeline after transport.output() in place of roark.audio_processor:
Step 5: Verify the connection
Run a test call through your Pipecat pipeline. Within a few seconds you should see:- The agent appear in your Roark dashboard under the Pipecat source filter
- The call appear in the calls table with status
In Progress - After the call ends — the transcript, tool invocations, and merged recording attached to the call
What Gets Synced
Theroark_analytics[pipecat] observer forwards:
- Calls — Lifecycle with timing and end reason
- Agents — Lazy-registered on first sight using the
agent_id/agent_namefrom the observer - Prompts — System prompt captured at call start
- Transcripts — Per-turn messages with role, content, and timestamp
- Tool Invocations — Tool call IDs, names, JSON arguments, and results
- Recordings — Pre-mixed stereo PCM audio streamed in chunks during the call and merged into a single WAV at call-end
Agent Management
Pipecat agents are lazy-registered the first time the observer reports them:- The first
call-startedevent with a newagent_idcreates the agent in Roark - Subsequent events update the agent’s name and prompt if they change
- Pipecat-sourced agents appear in the agents page under the Pipecat source filter
Deploying on Pipecat Cloud
The observer is a drop-in Pipecat component, so the same wiring works on Pipecat Cloud. The integration requirement is identical — the deployment’s API key must be bound to a Pipecat integration (Step 1). Three things to do:- Create a Pipecat integration in Roark and generate a WRITE-scoped API key bound to it (see Step 1)
- Add
roark_analytics[pipecat]to therequirements.txtbundled with your bot image - Expose that
ROARK_API_KEYto the deployment as a Pipecat Cloud secret — the observer reads it at runtime
bot.py
requirements.txt
Monitoring Integration Health
Integration health is observed through the calls and agents that arrive in Roark:- No recent calls — Check that the observer is attached to your pipeline and that
api_keyis correct and bound to a Pipecat integration (an unbound key is rejected). On Pipecat Cloud, verify theROARK_API_KEYsecret is set on the deployment - Calls created but no recordings — Confirm
roark.audio_processorsits aftertransport.output()in the pipeline - Calls created but no transcript — Verify that your STT processor emits final
TranscriptionFrames before the observer (interim transcriptions are ignored) - Call never ends in Roark — Some transports (notably
SmallWebRTC) tear down without pushingEndFrame. Callawait roark.aflush()from your disconnect handler —aflush()is idempotent, so the regularEndFramepath will no-op if both fire
Next Steps
Configure traces
Send OpenTelemetry traces to Roark
Run Simulations
Test your Pipecat agents
Configure Metrics
Define metrics and pass/fail thresholds
Integration Overview
Explore other integrations