Skip to content

docs: document Pipecat + LiveKit voice adapters and TS-parity position#54

Merged
achris7 merged 2 commits into
mainfrom
docs/floe-guard-voice-adapters
Jul 25, 2026
Merged

docs: document Pipecat + LiveKit voice adapters and TS-parity position#54
achris7 merged 2 commits into
mainfrom
docs/floe-guard-voice-adapters

Conversation

@achris7

@achris7 achris7 commented Jul 25, 2026

Copy link
Copy Markdown
Member

The gap

The README led with generic LLM adapters (OpenAI, Anthropic, LangChain, …) and never surfaced the two voice adapters that already ship in the Python package. A voice-AI builder running an STT → LLM → TTS pipeline couldn't tell from the README that floe-guard covers their stack — the Pipecat and LiveKit adapters were undocumented despite being shipped code with an optional extra each.

The fix (docs-only, no code touched)

  • New ### Pipecat (voice) and ### LiveKit (voice) sections with short runnable Python examples using the real import paths and public API found in source.
  • Surfaced both in the top-line "Works with" list so voice builders see them immediately.
  • Compact adapter × language matrix making the Python-only reality of the voice adapters explicit.
  • Explicit TypeScript voice-parity paragraph: there is no TS voice adapter today; the JS path is the Vercel AI SDK middleware (text-only); voice builders on Node should meter STT/TTS by hand, use the hosted Floe proxy, or use the Python adapters. Framed factually as not yet available, no committed roadmap — not a guessed roadmap.
  • Cross-link to the Floe docs "Add Floe to your existing pipeline" guide.

Verified in source

  • src/floe_guard/integrations/pipecat.pyFloeBudgetGuardProcessor (FrameProcessor placed after the LLM service; reserves on LLMFullResponseStartFrame, settles from LLMUsageMetricsData; requires enable_metrics=True, enable_usage_metrics=True). Extra: floe-guard[pipecat] (pyproject.toml).
  • src/floe_guard/integrations/livekit.pyLiveKitBudgetGuard.attach(session, agent) (reserves in llm_node, settles on metrics_collected LLMMetrics; optional stt_usd_per_second / tts_usd_per_1k_chars). Extra: floe-guard[livekit] (pyproject.toml).
  • examples/voice_turn_budget.py — runnable Pipecat voice demo (referenced from the new section).
  • pyproject.tomlpipecat = ["pipecat-ai>=1.0"], livekit = ["livekit-agents>=1.0"].
  • JS package (js/src/) — no pipecat/livekit/voice references anywhere; only middleware.ts (Vercel AI SDK, text). Confirms the Python-only / no-TS-parity claim.

All examples use import paths and APIs confirmed in the source above; nothing was invented.

Summary by CodeRabbit

  • Documentation
    • Expanded framework compatibility guidance to include Gemini.
    • Added voice pipeline documentation covering STT → LLM → TTS.
    • Documented per-turn budgeting enforcement, usage reporting behavior, and related pricing/modeling requirements.
    • Added Python-only examples for Pipecat and LiveKit voice metering/budget guarding.
    • Included an adapter matrix and clarified that there is no TypeScript voice adapter in this release, with alternatives for voice metering.

The README led with generic LLM adapters and never surfaced the two voice
adapters that ship in the Python package (Pipecat, LiveKit), so a voice-AI
builder (STT->LLM->TTS) couldn't tell floe-guard covers their stack.

- Add ### Pipecat (voice) and ### LiveKit (voice) sections with runnable
  Python examples using the real import paths
  (floe_guard.integrations.pipecat.FloeBudgetGuardProcessor and
  floe_guard.integrations.livekit.LiveKitBudgetGuard).
- Surface both in the top-line "Works with" list.
- Add a compact adapter x language matrix making the Python-only reality of
  the voice adapters explicit.
- Add an explicit TypeScript voice-parity paragraph: no TS voice adapter
  today, JS path is Vercel AI middleware (text), voice builders use the Floe
  proxy or the Python adapters; not yet available, no committed roadmap.
- Cross-link the Floe docs "Add Floe to your existing pipeline" guide.

Docs-only. No code touched.
@coderabbitai

coderabbitai Bot commented Jul 25, 2026

Copy link
Copy Markdown

Review Change Stack

📝 Walkthrough

Walkthrough

The README expands its compatibility overview and adds voice adapter documentation covering per-turn budgeting, pricing, Python integrations, adapter coverage, and TypeScript alternatives.

Changes

README documentation updates

Layer / File(s) Summary
Framework compatibility listing
README.md
The compatibility overview now includes Gemini, voice pipelines, plain check() / record() usage, and Python versus TypeScript adapter availability.
Voice adapter guidance and examples
README.md
Documents per-turn reserve, settle, and release behavior, pricing inputs, Pipecat and LiveKit integrations, adapter coverage, and TypeScript voice-metering alternatives.

Estimated code review effort: 1 (Trivial) | ~4 minutes

Suggested reviewers: shivamfloe, sandy-1711, rajbhensdadiya

Poem

I’m a rabbit with docs in my paws,
Adding Gemini without any flaws.
Voice turns reserve, settle, release,
Pipecat and LiveKit bring peace.
TypeScript paths now clearly gleam—
Hop, hop, shipped the README dream!

🚥 Pre-merge checks | ✅ 5
✅ Passed checks (5 passed)
Check name Status Explanation
Description Check ✅ Passed Check skipped - CodeRabbit’s high-level summary is enabled.
Title check ✅ Passed The title clearly reflects the documentation focus on Pipecat, LiveKit, and TypeScript voice-adapter parity.
Docstring Coverage ✅ Passed No functions found in the changed files to evaluate docstring coverage. Skipping docstring coverage check.
Linked Issues check ✅ Passed Check skipped because no linked issues were found for this pull request.
Out of Scope Changes check ✅ Passed Check skipped because no linked issues were found for this pull request.
✨ Finishing Touches
🧪 Generate unit tests (beta)
  • Create PR with unit tests
  • Commit unit tests in branch docs/floe-guard-voice-adapters

Comment @coderabbitai help to get the list of available commands.

@achris7
achris7 marked this pull request as ready for review July 25, 2026 20:33
Copilot AI review requested due to automatic review settings July 25, 2026 20:33

Copilot AI 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.

Pull request overview

This PR updates the top-level README to explicitly document the existing Python voice adapters (Pipecat and LiveKit) and to clarify current Python vs TypeScript adapter coverage, including the lack of a TypeScript voice adapter today.

Changes:

  • Adds a new “Voice adapters (STT → LLM → TTS)” section with runnable Pipecat and LiveKit examples using the public integration APIs.
  • Surfaces Pipecat/LiveKit in the top “Works with” line and adds an adapter × language matrix.
  • Adds a TypeScript voice-parity note (JS package is Vercel AI SDK middleware only; voice metering on Node is manual today) and links to the “Add Floe to your existing pipeline” guide.

💡 Add Copilot custom instructions for smarter, more guided reviews. Learn how to get started.

@coderabbitai coderabbitai Bot 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.

Actionable comments posted: 2

🤖 Prompt for all review comments with AI agents
Verify each finding against current code. Fix only still-valid issues, skip the
rest with a brief reason, keep changes minimal, and validate.

Inline comments:
In `@README.md`:
- Around line 580-601: The README examples are presented as runnable but contain
undefined placeholders. In README.md lines 580-601, either add concrete Pipecat
transport, STT, LLM, TTS, and context setup or clearly label the block as a
fragment; in README.md lines 621-634, define agent and ctx and wrap the calls in
an async entry point, or clearly label that block as a fragment.
- Around line 663-671: Update the TypeScript voice-adapter status section around
“There is no TypeScript voice adapter today” to remove time-sensitive claims
about “today” and the absence of a committed roadmap, either linking a dated
canonical issue/discussion or stating only that no TypeScript voice adapter
ships in the current release.
🪄 Autofix (Beta)

Fix all unresolved CodeRabbit comments on this PR:

  • Push a commit to this branch (recommended)
  • Create a new PR with the fixes

ℹ️ Review info
⚙️ Run configuration

Configuration used: Organization UI

Review profile: ASSERTIVE

Plan: Pro

Run ID: 28eabb05-658c-4081-9bb2-d96694579bce

📥 Commits

Reviewing files that changed from the base of the PR and between b8faa47 and 75c944e.

📒 Files selected for processing (1)
  • README.md

Comment thread README.md
Comment thread README.md Outdated
Address CodeRabbit on PR #54:
- Pipecat and LiveKit code blocks are integration-point fragments (transport,
  stt, llm, tts, session, agent, ctx are the reader's existing objects). Label
  both as fragments and point Pipecat at the runnable examples/voice_turn_budget.py
  (no API key, no network). A full inline voice agent needs a real transport +
  room creds — that belongs in examples/, not the README.
- Drop the aging 'today' / 'no committed roadmap' phrasing; state only that no
  TypeScript voice adapter ships in this release.
@achris7
achris7 merged commit d6b36e2 into main Jul 25, 2026
9 of 10 checks passed

@coderabbitai coderabbitai Bot 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.

Actionable comments posted: 1

🤖 Prompt for all review comments with AI agents
Verify each finding against current code. Fix only still-valid issues, skip the
rest with a brief reason, keep changes minimal, and validate.

Inline comments:
In `@README.md`:
- Around line 667-675: Update the README paragraph describing the Python
Pipecat/LiveKit adapters so its “whole turn” enforcement claim is conditional on
STT/TTS pricing being configured. Clarify that LLM enforcement always applies,
while STT/TTS metering is optional and depends on configured per-unit prices or
record_tool usage.
🪄 Autofix (Beta)

Fix all unresolved CodeRabbit comments on this PR:

  • Push a commit to this branch (recommended)
  • Create a new PR with the fixes

ℹ️ Review info
⚙️ Run configuration

Configuration used: Organization UI

Review profile: ASSERTIVE

Plan: Pro

Run ID: 474e6432-32c3-4e90-9e4b-a533138369db

📥 Commits

Reviewing files that changed from the base of the PR and between 75c944e and f1cd9a4.

📒 Files selected for processing (1)
  • README.md

Comment thread README.md
Comment on lines +667 to +675
**This release ships no TypeScript voice adapter.** The JS package
([`js/`](js/)) ships one surface — the Vercel AI SDK middleware — and it is
**text-only**: it guards a wrapped `LanguageModel`, not a running STT → LLM → TTS
session. A voice/telephony builder on a Node stack should either drive the LLM
turn through the Vercel AI middleware and meter STT/TTS spend by hand via
`recordTool`, or run the LLM leg through the **hosted [Floe proxy](#upgrade-to-hosted-floe)**
(un-bypassable, cross-vendor) — or use the Python Pipecat / LiveKit adapters
above, which enforce the whole turn. No native TypeScript Pipecat/LiveKit voice
adapter ships in this release.

Copy link
Copy Markdown

Choose a reason for hiding this comment

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

🎯 Functional Correctness | 🟡 Minor | ⚡ Quick win

Qualify the “whole turn” enforcement claim.

Lines 566 and 641-643 state that STT/TTS spend is metered only when per-unit prices are supplied, so “which enforce the whole turn” is too broad. Clarify that the Python adapters enforce the complete turn when STT/TTS pricing is configured, or otherwise describe LLM enforcement plus optional STT/TTS metering via record_tool.

🤖 Prompt for AI Agents
Verify each finding against current code. Fix only still-valid issues, skip the
rest with a brief reason, keep changes minimal, and validate.

In `@README.md` around lines 667 - 675, Update the README paragraph describing the
Python Pipecat/LiveKit adapters so its “whole turn” enforcement claim is
conditional on STT/TTS pricing being configured. Clarify that LLM enforcement
always applies, while STT/TTS metering is optional and depends on configured
per-unit prices or record_tool usage.

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

2 participants