Files
pipecat/examples
Mark Backman 012ef41ff4 Redesign UserIdleController to use BotStoppedSpeakingFrame
Replace the continuous heartbeat-based timer (UserSpeakingFrame/BotSpeakingFrame
+ asyncio.Event loop) with a simple one-shot timer that starts when
BotStoppedSpeakingFrame is received and cancels on UserStartedSpeakingFrame or
BotStartedSpeakingFrame. This eliminates false idle triggers caused by gaps
between the user finishing speaking and the bot starting to speak (LLM/TTS
latency).

Guard the timer start with two conditions to prevent false triggers:
- User turn in progress: during interruptions, BotStoppedSpeaking arrives
  while the user is still speaking mid-turn.
- Function calls in progress: FunctionCallsStarted arrives before
  BotStoppedSpeaking because the bot speaks concurrently with the function
  call starting, so the timer must wait for the result and subsequent bot
  response.
2026-02-14 08:55:56 -05:00
..
2026-02-10 22:17:09 -05:00
2025-07-29 11:28:40 -04:00

Pipecat Examples

This directory contains examples to help you learn how to build with Pipecat.

Getting Started

New to Pipecat? Start here:

  • Quickstart - Get your first voice AI bot running in 5 minutes (coming soon)
  • Client/Server Web - Learn to build web applications with Pipecat's client SDKs (coming soon)
  • Phone Bot with Twilio - Connect your bot to a phone number (coming soon)

Foundational Examples

Single-file examples that introduce core Pipecat concepts one at a time. These examples:

  • Build on each other progressively
  • Focus on specific features or integrations
  • Are used for testing with every Pipecat release

See the Foundational Examples README for the complete list.

More Advanced Examples

Ready to explore complex use cases? Visit pipecat-examples for:

  • Production-ready applications
  • Multi-platform client implementations
  • Telephony integrations
  • Multimodal and creative applications
  • Deployment and monitoring examples