Community-maintained integration. This service is built and maintained by Floe Labs. Pipecat does not test or officially support it. Please report issues and request changes on the source repository. Learn more about community integrations.
Overview
FloeBudgetGuardProcessor is a floe-guard
budget processor for Pipecat. Drop one processor after your LLM service and it
enforces a spend ceiling one turn at a time — it reserves before a turn,
settles on the real usage the pipeline reports, and hard-stops a turn that would
cross your budget (so a runaway agent dies at /sec), LLM (/1k chars), and
telephony ($/min) — from a cost map bundled with the package, so you get a
per-call receipt with no account, no API key, and no network calls.
Want the hosted counterpart — a unified server-side ledger, enforced spend
caps, and per-call cost receipts on a Floe account (BYOK or keyless)? That’s the
pipecat-floe services, documented under
LLM,
STT, and
TTS. floe-guard here is the free,
local, no-account guardrail; pipecat-floe is its metered, hosted counterpart.
Source Repository
Source code, examples, and issues for floe-guard
PyPI Package
The
floe-guard package on PyPIRunnable demo
A no-network, no-key example that prints a per-leg call receipt
Documentation
floe-guard’s Pipecat setup notes
Installation
This is a community-maintained package distributed separately frompipecat-ai:
Prerequisites
None. floe-guard runs entirely in your process — no account, no API key, no environment variables, and no network calls. Prices come from a cost map that ships with the package.Configuration
FloeBudgetGuardProcessor takes a BudgetGuard (your ceiling) and, optionally,
the voice-map vendor for each leg so STT / TTS / telephony are priced
automatically:
A leg with no vendor and no per-unit override is left un-metered; an unpriceable
vendor fails closed rather than metering at a silent $0. Pass a per-unit
override for a negotiated rate.
Usage
Place the processor directly after the LLM service, and create thePipelineWorker with usage metrics enabled (Pipecat only emits usage frames when
they are on):
budget.meter_telephony(1.5)
for a 1.5-minute call). A blocked turn pushes a fatal ErrorFrame by default, or
invokes your on_budget_exceeded callback. See the
runnable example
— it runs with no API key and no network and prints a per-leg receipt.
Compatibility
Tested with Pipecat 1.x.floe-guard[pipecat] requires pipecat-ai>=1.0.