v1.14.0

59 minutes 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

  1. 0:00Pipecat 1.14.0
  2. 0:18Websocket sends time out
  3. 0:39Speech-to-text keeps the turn
  4. 1:05Text transforms on LLMTextProcessor
  5. 1:22New services
  6. 1:46Rime V1 needs a model
  7. 2:05Defaults that moved
  8. 2:30Deprecations
  9. 2:50Security
  10. 3:12Upgrade
Show transcript

Pipecat 1.14.0

Pipecat
Release · v1.14.0

Pipecat 1.14.0

A stuck connection fails fast now, and the bot keeps talking

Transportwebsocket sends
Daily callbacks
STTDeepgram Flux
Cartesia · Sarvam
LLMPerplexity · Omni
Smallest
TTSRime · Deepgram
Inworld

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.

Websocket sends time out

Pipecat
Fixed · WebsocketService

A websocket send now gives up after 5 seconds

Before

Waits on a full write buffer until TCP gives up: many minutes, with every processor after it stuck

1.14.0

Drops the connection, raises ConnectionClosedError, and the service reconnects

Change the bound with ws_send_timeout on WebsocketService, or set it to None

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.

Speech-to-text keeps the turn

Pipecat
Fixed · streaming STT

When the connection drops mid-turn, speech-to-text keeps what the user said

Deepgram FluxCartesia TurnsSarvam Realtime
Ends the turn with the transcript so far✓✓✓
Reconnects in the background✓✓–
Retries an unconfirmed connection, gives up after 3✓✓✓
Rejected settings name the provider's reason✓✓✓

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.

Text transforms on LLMTextProcessor

Pipecat
Added · LLMTextProcessor

One text transform now rewrites what the bot says, remembers and shows

LLM
LLMTextProcessortext_transforms
TTSthe voice
Contextwhat the LLM sees next turn
Clientthe app
llm_text_processor = LLMTextProcessor(text_transforms=[("*", strip_emoji)])

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.

New services

Pipecat
Added · services

Perplexity's Agent API, Nemotron Omni, Zoom Scribe and Electron plug in

Perplexity AgentPerplexityAgentHttpLLMService

Answers with web search, supports function calling

NVIDIA Nemotron OmniNvidiaOmniLLMService

Hears the user directly and replaces the STT service

Zoom Scribe LiveZoomAISTTService

Streaming speech-to-text, pipecat-ai[zoom-ai]

Smallest ElectronSmallestLLMService

OpenAI-compatible Waves API; pipecat init offers it

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.

Rime V1 needs a model

Pipecat
Changed · RimeV1TTSService

Action required

RimeV1TTSService now needs an explicit model

1.13

RimeV1TTSService(
    api_key=os.environ["RIME_API_KEY"],
    settings=RimeV1TTSService.Settings(

        voice="astra",
    ),
)

1.14.0

RimeV1TTSService(
    api_key=os.environ["RIME_API_KEY"],
    settings=RimeV1TTSService.Settings(
        model="coda",  # or "mistv3"
        voice="astra",
    ),
)

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.

Defaults that moved

Pipecat
Changed · defaults

Three default models moved, and strip_markdown drops link URLs

ServiceNew defaultTo keep the old one, set
Google Vertexgemini-3.8-flashmodel="gemini-3.6-flash"
retired by Vertex AI on 2026-11-19
NVIDIAnemotron-3.5-super-
vl-120b-a12b
model="nvidia/nemotron-3-
super-120b-a12b"
Speechify HTTPsimba-3.5model="simba-3.2"
strip_markdownlink → its label onlyStripMarkdown(strip_urls=False)

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.

Deprecations

Pipecat
Deprecated

Do now

Move off PerplexityLLMService, and upgrade bus workers together

Perplexity has ended support for the Sonar API it uses. Workers on a shared bus send tool schemas under a new module path.

Still works until 2.0.0

text_filters → text_transforms
MarkdownTextFilter → strip_markdown
pipecat.adapters.schemas
→ pipecat.adapters.llm.schemas
RTVI text_type → output_type

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.

Security

Pipecat
Security

redact_secrets no longer misses a credential after an error prefix

Left unmasked in 1.13, masked in 1.14.0

Unknown error occurred: api_key: abc123
ValueError: Authorization: Bearer abc123

pyproject.toml

"aiohttp>=3.14.0,<4",
"aiohttp>=3.14.4,<4",

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.

Upgrade

Pipecat
Upgrade · v1.14.0

One limit

Audio that arrives while a speech-to-text connection is down still isn't transcribed

Before you upgrade

Set model on every RimeV1TTSService
Move Perplexity to the Agent service
Upgrade bus workers together
$ uv add "pipecat-ai==1.14.0"

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.

What happened in AI today, in your inbox

One short email each evening. Read it and you’re caught up.

Built in New York with ❤️