A stuck connection fails fast now, and the bot keeps talking
2 days ago
Pipecat 1.14.0 is mostly about connections that used to hang. A peer that stops reading or a session that drops mid-sentence could stall a bot. Now they fail fast, keep what the user said, and recover. There are new services too, and a short list of things to do before you upgrade.
Ask about this presentation
Chapters
Show transcriptHide transcript
Pipecat 1.14.0 is mostly about connections that used to hang. A peer that stops reading or a session that drops mid-sentence could stall a bot. Now they fail fast, keep what the user said, and recover. There are new services too, and a short list of things to do before you upgrade.
When a websocket peer stopped reading, a send could wait many minutes for TCP to give up while the whole pipeline behind it waited. Now each send is bounded at 5 seconds. One that runs over drops the connection, and the normal reconnect takes over. A send timeout setting on the websocket service changes the bound, and None turns it off.
Deepgram Flux, Cartesia Turns, and Sarvam Realtime share a set of fixes. If the connection ends partway through a turn, the turn now ends with the transcript received so far. Flux and Cartesia Turns reconnect in the background, so audio keeps moving. A connection that opens but is never confirmed is retried, and the service gives up after three in a row. A rejected setting names the provider's reason.
The LLM text processor now takes text transforms. In the updated example, one strips emoji right after the LLM. Because it runs before the text splits toward the voice, the context, and the client, the LLM never sees its own emoji, and stops adding more.
A new Perplexity service uses its Agent API, which answers with web search and supports function calling. NVIDIA's Nemotron Omni hears the user directly, so in audio mode it replaces your speech-to-text. Zoom Scribe Live gets a streaming speech-to-text service. And Smallest AI's Electron model connects through its OpenAI-compatible Waves API.
This is the change you have to make. RimeV1TTSService now requires a model in its settings. Set coda or mistv3, and the service connects to that model's public endpoint. A custom deployment also passes a websocket URL; the path in that URL doesn't select the model.
Some defaults change under you. Google Vertex moves to Gemini 3.8 Flash, because Vertex retires 3.6 Flash on November 19, 2026. NVIDIA moves to Nemotron 3.5 Super, and Speechify to Simba 3.5. And strip_markdown now reduces a link to its label, so the URL isn't read aloud. The right-hand column keeps the old behavior.
Two deprecations can't wait. Perplexity has ended support for the Sonar API that PerplexityLLMService uses, so move to the Agent service. And workers on a shared bus now send tool schemas under a new module path, so upgrade them together. The rest keep working until 2.0.0.
redact_secrets, which ErrorFrame uses, left a credential unmasked when its pair followed another pair, like this API key after an error prefix. Now the prefix doesn't change what gets masked. And the minimum aiohttp is now 3.14.4, the first release with fixes for several of its security advisories.
One limit: audio that arrives while a speech-to-text connection is down still isn't transcribed. Before you upgrade, set a model on any Rime V1 service, move Perplexity to the Agent service, and upgrade workers that share a bus together. Then install 1.14.0, and a stuck connection stops freezing your bot.










