Skip to content
This repository was archived by the owner on Jul 5, 2026. It is now read-only.

Deprecate standalone package: Pipecat Flows is now part of Pipecat - #290

Merged
markbackman merged 4 commits into
mainfrom
flows-now-part-of-pipecat
Jul 4, 2026
Merged

Deprecate standalone package: Pipecat Flows is now part of Pipecat#290
markbackman merged 4 commits into
mainfrom
flows-now-part-of-pipecat

Conversation

@kompfner

@kompfner kompfner commented Jun 24, 2026

Copy link
Copy Markdown
Contributor

Companion to pipecat-ai/pipecat#4882, which folds Pipecat Flows into core pipecat-ai under the pipecat.flows namespace.

This PR turns pipecat-ai-flows into its final, frozen snapshot before the repo is archived:

  • Deprecation warning — importing pipecat_flows now emits a DeprecationWarning pointing at pipecat.flows. The code is otherwise unchanged and still works.
  • Dependency pinpipecat-ai>=1.4.0,<1.5.0, the last Pipecat line without built-in Flows. This package stays the Flows provider for that era and deliberately cannot coexist with a pipecat-ai that already bundles pipecat.flows — so upgrading Pipecat past 1.4.x forces dropping this package and importing pipecat.flows. That's the migration pressure, done cleanly, and it resolves/tests against current Pipecat today.
  • README — replaced with a short redirect: before/after import, where things moved, and a pointer to the archived changelog. The standalone release history stays in CHANGELOG.md.

Why a clean break, not a pipecat_flowspipecat.flows shim

An alternative was to make this package a thin re-export shimpipecat_flows simply does from pipecat.flows import * and forwards to the in-core framework, so existing from pipecat_flows import ... code keeps working transparently. We deliberately didn't, for a few reasons:

  • A shim can't be "frozen." By construction it forwards to whatever pipecat.flows is installed, so it would keep delivering new Flows behavior indefinitely — the opposite of a final, frozen release. Stopping that would mean pinning pipecat-ai to an exact version, which is brittle.
  • A shim would require the thing it supersedes. Forwarding to pipecat.flows means depending on pipecat-ai>=1.5.0 — i.e. installing the standalone package and the built-in one side by side, exactly the redundant dual-install we're steering people away from.
  • The frozen snapshot is mutually exclusive with built-in Flows. Pinning <1.5.0 (the pre-Flows line) means this package and a pipecat.flows-bearing Pipecat can't be installed together, so upgrading Pipecat forces a clean migration to pipecat.flows rather than letting pipecat_flows imports live on forever with no nudge.
  • It avoids an open-ended compatibility commitment. A perpetual forwarding layer is something core Pipecat would implicitly have to keep working across future versions; a frozen final release tied to the 1.4.x era has a clear, bounded end.

For the one case a shim wouldn't have helped with anyway — an older pipecat-ai-flows (which allowed pipecat-ai<2) installed next to a Pipecat that already has Flows — core Pipecat now logs an error on import pipecat.flows telling the user to uninstall the standalone package (see pipecat#4882).

Sequencing

Not blocked on the 1.5.0 release (it pins to 1.4.x, which exists today), but the migration target it points users at — pipecat.flows — only exists once pipecat#4882 lands and pipecat-ai 1.5.0 ships. So:

  • Release this as the final pipecat-ai-flows around/after 1.5.0 is out, so from pipecat.flows import ... actually works for anyone following the warning.
  • After the final release, archive this repository.
  • If pipecat.flows first ships in a version other than 1.5.0, set the cap to < <that version> (the first Pipecat with built-in Flows) and update the README's "as of pipecat-ai 1.5.0" reference to match.

🤖 Generated with Claude Code

Pipecat Flows has moved into core pipecat-ai under `pipecat.flows`. Turn this
repo's package into its final, frozen snapshot:

- Importing `pipecat_flows` now emits a DeprecationWarning pointing at
  `pipecat.flows`. The code itself is unchanged and still works.
- Pin `pipecat-ai` to the 1.5 line — where `pipecat.flows` first ships — so the
  frozen package stays known-good with that era and sunsets naturally; moving to
  a newer Pipecat means importing `pipecat.flows` instead.
- Replace the README with a short redirect (before/after import, where things
  moved, pointer to the archived changelog).

This is the last release before the repo is archived. It must be cut after
pipecat-ai 1.5.0 is published — the pinned dependency won't resolve until then.
The first cut pinned `pipecat-ai>=1.5.0`, which was backwards: it forced this
standalone package to coexist with a pipecat-ai that already bundles
`pipecat.flows` (two copies of Flows), and made the package unresolvable until
1.5.0 ships.

Pin to `>=1.4.0,<1.5.0` instead — the last Pipecat line without built-in Flows.
This package stays the Flows provider for that era and cannot be installed
alongside a Pipecat that has `pipecat.flows`, so upgrading Pipecat past 1.4.x
forces migrating to `pipecat.flows`. It also resolves and tests against the
current Pipecat today.

@markbackman markbackman left a comment

Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Looks great!

Just double check links are correct before merging this PR (post Pipecat release). Thanks for migrating!

(I didn't mean to approve yet. We can do that after the Pipecat release with a final validation.)

@markbackman
markbackman self-requested a review June 24, 2026 21:47
@kompfner
kompfner force-pushed the flows-now-part-of-pipecat branch from b44cde5 to 828c2cb Compare June 25, 2026 01:47
@kompfner
kompfner marked this pull request as ready for review June 25, 2026 02:53
kompfner added 2 commits June 24, 2026 23:06
The fragment was placeholder-named while the PR didn't exist yet; now that
it's #290, rename it so towncrier links the entry to the PR.
Regenerate the lock so it matches the pipecat-ai pin tightened to
>=1.4.0,<1.5.0 (the lock records the dependency specifiers). Resolved versions
are unchanged.

@markbackman markbackman left a comment

Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

LGTM! I'm having Claude take a look, just in case.

Update: Claude agrees. No findings.

@kompfner

Copy link
Copy Markdown
Contributor Author

post Pipecat release

Agreed, we should hold off on merging this until post-Pipecat release to avoid the Pipecat Flows GitHub README awkwardly pointing people to use Flows embedded in base Pipecat, when a version of Pipecat with Flows in it hasn't been published yet.

@filipi87 filipi87 left a comment

Copy link
Copy Markdown

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

It's all in Pipecat now. Beautiful. 🙂

@markbackman
markbackman merged commit f5ef438 into main Jul 4, 2026
2 checks passed
@markbackman
markbackman deleted the flows-now-part-of-pipecat branch July 4, 2026 17:15
Sign up for free to subscribe to this conversation on GitHub. Already have an account? Sign in.

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

3 participants