Registry / llm-agents / pipecat-ai

pipecat-ai

JSON →
library1.8.1pypypi✓ verified 21d ago

PipeCat AI is an open-source framework designed for building real-time voice and multimodal AI assistants. It provides a modular pipeline architecture for integrating various services like Speech-to-Text (STT), Large Language Models (LLM), Text-to-Speech (TTS), and real-time transports (e.g., Daily.co). It's currently in pre-1.0 development, with frequent updates introducing new features and services.

pip install pipecat-ai
INSTALL
IMPORT
SIG · PIPECAT-AI
P
pipecat-ai
llm-agentspythonv1.8.1
Install
24.9s avg
Import
1573ms
Disk
498MB
Pass rate
6/ 10
Env Coverage6 / 10
glibc
3.93.13
musl
3.93.13
Install & Compatibility
Where this runs
tested against v0.0.108 · pip install
no network on importno background threads
Install × environment matrix
Each cell = how many times install + import succeeded across repeated harness runs. Partial = flaky.
glibc = Debian/Ubuntu slim · musl = Alpine Linux
musl
glibc
py 3.10
✕ build_error
✓ 38.2s
py 3.11
✕ build_error
✓ 24.2s
py 3.12
✕ build_error
✓ 23.8s
py 3.13
✕ build_error
✓ 24.6s
py 3.9
✓ —
✓ 13.9s
498MB installed
● package 498MB
Code
Verified usage

Verified import paths — ran on the pinned version, not inferred.

Pipeline
from pipecat.pipeline.pipeline import Pipeline
PipelineRunner
from pipecat.pipeline.runner import PipelineRunner
LLMService
from pipecat.services.llm import LLMService
TTSService
from pipecat.services.tts import TTSService
VADService
from pipecat.services.vad import VADService
DailyTransport
from pipecat.transports.services.daily import DailyTransport
DailyParams
from pipecat.transports.services.daily import DailyParams
DailyTransportOptions
from pipecat.transports.services.daily import DailyTransportOptions
AudioFrame
from pipecat.frames.frames import AudioFrame
TextFrame
from pipecat.frames.frames import TextFrame

This quickstart sets up a basic voice AI assistant using Daily.co for real-time communication, OpenAI's GPT-4o for language understanding, and OpenAI's TTS-1 for speech synthesis. It demonstrates the core pipeline concept: user speech input is processed by an LLM, the LLM's text response is converted to speech, and then output to the user.

import asyncio import os from pipecat.frames.frames import AudioFrame, TextFrame from pipecat.pipeline.pipeline import Pipeline from pipecat.pipeline.runner import PipelineRunner from pipecat.services.vad import VADService from pipecat.transports.services.daily import DailyParams, DailyTransport, DailyTransportOptions from pipecat.services.llm import LLMService from pipecat.services.tts import TTSService async def main(): # Make sure to set environment variables for DAILY_URL and OPENAI_API_KEY # e.g., export DAILY_URL="https://example.daily.co/YOUR_ROOM" # export OPENAI_API_KEY="sk-proj-..." daily_url = os.environ.get("DAILY_URL", "") openai_api_key = os.environ.get("OPENAI_API_KEY", "") if not daily_url or not openai_api_key: print("Please set DAILY_URL and OPENAI_API_KEY environment variables.") return # Setup your services (Daily, VAD, LLM, TTS) transport = DailyTransport( daily_url, DailyTransportOptions( lang="en", vad_enabled=True, mic_enabled=True, speaker_enabled=True, vad_service=VADService(), ), ) llm = LLMService( api_key=openai_api_key, model="gpt-4o", ) tts = TTSService( api_key=openai_api_key, model="tts-1", voice="alloy", ) # Define your pipeline: User audio -> LLM text -> TTS audio -> Bot audio pipeline = Pipeline([ transport.input(), # User input (audio) from Daily llm, # LLM processes user text tts, # TTS generates audio from LLM text transport.output(), # Bot output (audio) to Daily ]) runner = PipelineRunner() print("Starting PipeCat AI assistant. Join the Daily room specified by DAILY_URL.") await runner.run(pipeline) if __name__ == "__main__": asyncio.run(main())
Debug
Known issues
gotchaAs a pre-1.0 library (version 0.0.x), PipeCat AI's API is subject to frequent and potentially breaking changes without strict semantic versioning. Always review release notes when upgrading.
fix
Always pin exact versions (`pipecat-ai==0.0.x`) and thoroughly test when upgrading to a new minor version (e.g., 0.0.100 to 0.0.101).
affects: 0.0.x
gotchaBeginning with v0.0.104, PipeCat AI introduced support for strongly-typed objects instead of plain dictionaries for updating service settings at runtime (e.g., `STTUpdateSettingsFrame`). While dictionaries might still work for some settings, the new typed objects are the recommended and future-proof approach.
fix
Migrate any runtime service setting updates from dictionary-based structures to the new strongly-typed objects (e.g., `LLMUpdateSettingsFrame(model='gpt-4')` instead of `LLMUpdateSettingsFrame(settings={'model': 'gpt-4'})`).
affects: >=0.0.104
gotchaIn v0.0.107, the default behavior of `SyncParallelPipeline` for output frame ordering changed. It now defaults to arrival order. If your application relies on the order in which pipelines were defined, you must explicitly set `frame_order=FrameOrder.PIPELINE`.
fix
If using `SyncParallelPipeline` and requiring output frames to follow the pipeline definition order, explicitly pass `frame_order=FrameOrder.PIPELINE` during initialization.
affects: >=0.0.107
gotchaPipeCat AI is an orchestration framework; it does not provide built-in LLM, TTS, or STT services. Users must bring their own cloud service API keys (e.g., OpenAI, Azure, Deepgram, Google) and configure the respective PipeCat service wrappers.
fix
Ensure you have valid API keys for all external AI services your pipeline utilizes and set them as environment variables or pass them directly to the service constructors (e.g., `LLMService(api_key=...)`).
affects: All versions
Errors
Common errors & fixes
ModuleNotFoundError: No module named 'pipecat.audio'
This error typically occurs when an example or application code relies on a module, such as `pipecat.audio`, that is not present in the installed `pipecat-ai` version or if required optional dependencies (extras) like `silero` were not installed.
fix
Ensure your installed `pipecat-ai` package is up-to-date with the code you are running, and install any necessary optional dependencies. For instance, to use `SileroVADAnalyzer`, you might need to run: `pip install 'pipecat-ai[silero]'` or `uv add 'pipecat-ai[silero]'`.
ERROR: Cannot install pipecat-ai[daily] == due to conflicting dependencies.
This indicates a dependency conflict, specifically when installing the `daily` extra for `pipecat-ai`, where `daily-python` or other sub-dependencies have incompatible version requirements, or when attempting to install on an unsupported operating system like Windows.
fix
Try loosening package version constraints in your `requirements.txt` or `pyproject.toml` to allow the package manager to find compatible versions. If on Windows, note that `daily-python` does not officially support it; consider using WSL2 or a Linux environment for `daily` transport functionality.
AttributeError: 'LLMUserResponseAggregator' object has no attribute '_FrameProcessor__process_queue'
This `AttributeError` suggests an internal state or initialization issue within Pipecat's `FrameProcessor` hierarchy, often a bug where a processor (like `LLMUserResponseAggregator`) attempts to access an attribute that hasn't been properly initialized due to a race condition or a change in the framework's internal lifecycle.
fix
This was a known bug in certain versions of `pipecat-ai` (e.g., v0.0.86 or related to commit a5ea6e1); upgrading `pipecat-ai` to the latest version should resolve this issue as fixes have been implemented.
ImportError: cannot import name 'OutputImageRawFrame' from 'pipecat.frames.frames'
This `ImportError` typically arises when your application code or an example is written for a newer version of `pipecat-ai` where modules, classes, or their locations have been refactored or renamed, but an older version of the library is currently installed.
fix
Update your `pipecat-ai` installation to the latest version using `pip install --upgrade pipecat-ai` or `uv update pipecat-ai`. Alternatively, if you need to stick to an older version, modify your code to match the imports and API of your installed `pipecat-ai` version.
'NoneType' object has no attribute 'tool_calls'
This error occurs when an expected object (e.g., an LLM response object containing `tool_calls`) is `None`, indicating that the external AI service (like Gemini or OpenAI) either did not return the expected data, experienced an internal error, or returned an empty/malformed response.
fix
Verify your API keys, check the status of the integrated external AI service, ensure the request payload is correct, and implement robust error handling or fallback logic for potentially `None` responses from external service integrations.
Upgrade
Version history
1.8.1latest on PyPI · released Aug 27, 2026
Audit
Dependencies
PythonrequiredRequires Python 3.10 or newer for async/await and other features.
Agent activity
23 hits · last 30 days
node
20
Amazon
1
OpenAI (training)
1
Resources
pipecat-ai — pip install pipecat-ai · libregistry