Patter Voice SDK

A Python and TypeScript SDK for building phone AI agents with swappable voice, model, and carrier layers.

Source repo
PatterAI/Patter
Stars
★ 1.1k
Last updated
2mo ago
License
MIT
Primary language
Python

At a glance

How it runs
Library / SDKFramework
Works with
Universal · cross-platformOpenAI API · Claude API
Cost
Free software; you pay for model usage
Setup effort
Medium · a few setup steps
You'll need
Python 3.11+ or TypeScript 5+telephony carrier credentialsmodel/provider API credentialsShell / CLINetwork access
Typical use
A restaurant team building an inbound booking receptionist in Python or TypeScript can start from the Inbound Agent template.
Not a fit if
  • Teams unwilling to send call data to third-party model, voice, and carrier providers
  • Teams wanting zero-config setup with no external provider accounts

What does this agent do, and when should you use it?

Patter is an open-source SDK that connects an application’s AI agent to the phone network while handling the agent loop, speech services, realtime voice, audio processing, and carrier integration. It ships Python and TypeScript SDKs, which the README describes as having the same surface, hooks, and events. Developers select providers independently for LLMs, STT, TTS, realtime engines, telephony, and audio, then compose them in Realtime, Pipeline, or Hybrid mode. A service runs through phone.serve(); local development can use a Cloudflare quick tunnel, while production uses a static webhook_url.

An application creates phone access with Patter, such as Patter(carrier=Twilio(), phone_number="+15550001234"), then creates an agent through phone.agent() with OpenAIRealtime, a system_prompt, and a first_message. Calling await phone.serve(agent, tunnel=True) starts the agent service and, when enabled, creates a Cloudflare quick tunnel that points the number at it. Patter orchestrates a call across the carrier, speech components, and model; documented carriers are Twilio, Telnyx, and Plivo. It also emits vendor-neutral OpenTelemetry traces and includes an LLM fallback chain for provider failover during a call.

  1. A restaurant team building an inbound booking receptionist in Python or TypeScript can start from the Inbound Agent template.
  2. A business that needs outbound calls with AMD and voicemail drop can use the Outbound Calls template.
  3. A developer with a Twilio number who wants to choose among OpenAIRealtime, Gemini Live, Ultravox, or ElevenLabs ConvAI for realtime voice.
  4. An integration team that needs a phone agent to look up CRM records or create tickets through webhook tools.
  5. A voice product team combining providers such as Deepgram for STT and ElevenLabs for TTS in Pipeline mode.
  6. A developer who wants to simulate an entire call from the terminal before connecting a real phone number.

How do you install or deploy this agent?

Choose one SDK: run npm install getpatter for TypeScript, or pip install getpatter for Python. Python requires 3.11+ and TypeScript requires 5.0+. Set environment variables for the selected carrier and AI/voice providers, such as TWILIO_ACCOUNT_SID and OPENAI_API_KEY; the project documentation lists the full variable catalog.

How do you use this agent?

For a minimal Python flow, import Patter, Twilio, and OpenAIRealtime from getpatter; create phone = Patter(carrier=Twilio(), phone_number="+15550001234"); create an agent with phone.agent(engine=OpenAIRealtime(), system_prompt="You are a friendly receptionist for Acme Corp.", first_message="Hello! How can I help?"); then run await phone.serve(agent, tunnel=True). Use tunnel=True for local development; use a static webhook_url for production.

What are this agent's strengths and limitations?

Pros
  • Separates LLM, STT, TTS, realtime, telephony, and audio layers so providers can be chosen independently.
  • Offers both Python and TypeScript SDKs, with documented parity for surface area, hooks, and events.
  • Supports Twilio, Telnyx, and Plivo, with tools, call transfer, and guardrails described as carrier-consistent.
  • Provides Realtime, Pipeline, and Hybrid modes plus an LLM fallback chain for mid-call provider failover.
  • Includes local tunneling, terminal call simulation, and vendor-neutral OpenTelemetry tracing.
Limitations
  • A working deployment depends on accounts and environment-variable credentials for external model, voice, and carrier providers.
  • Local tunnel: true uses a Cloudflare quick tunnel; production requires a static webhook_url or ngrok.
  • The supplied materials do not document provider pricing, combined billing behavior, or production capacity limits.
  • Anonymous telemetry is collected by default for SDK, bucketed provider/model, and call facts, although it can be disabled.
  • Although the README states 27+ integrations, the supplied materials do not detail configuration differences or feature coverage for each integration.

How does this agent compare with similar options?

Patter positions itself as an alternative to Vapi and Retell for builders who want to own the voice-AI stack. The supplied materials do not provide feature-by-feature or pricing comparisons.

Key facts side by side with the most closely related agents.

Agent Source review Form / cost Stars Updated Language Full support on
Patter Voice SDK This agent 52 · Major gaps Library / SDKFree + model costs ★ 1.1k 2mo ago Python OpenAI API · Claude API
Bolna Voice AI Agent Platform 56 · Major gaps Self-hosted serviceFree + model costs ★ 816 today Python OpenAI API
Voice AI Learning Path 63 · Some gaps Library / SDKFree ★ 338 8d ago Astro —
Android Voice AI SDK (MVVM) 47 · Major gaps Library / SDKFree + model costs ★ 2.6k 5mo ago Kotlin Claude API

How does FollowAgents rate this agent?

FollowAgents source review · FARS-2.1
Major gaps
52/ 100 5-point scale 2.6 / 5
Trust 11/29
Reliability 8/14
Adaptability 12/18
Convention 9/18
Effectiveness 9/13
Verifiability 3/8
Why each dimension lost points
Trust11 / 29 · 1.9/5

Evidence shows: README clearly states telemetry is opt-out and does not collect sensitive content; dependency audit workflows exist but are warn-only; external effects (e.g., phone calls) require user-provided credentials and configuration. Deductions: no explicit least-privilege principle, user confirmation mechanism not clear, sensitive data handling details insufficient, rollback mechanism absent, source attribution only based on repository metadata.

Reliability8 / 14 · 2.9/5

Evidence shows: README and code examples are consistent, dependency declarations exist, but specific failure message content is not shown in provided files. Deductions: failure messages lack detail and actionability.

Adaptability12 / 18 · 3.3/5

Evidence shows: README provides multiple use cases (inbound, outbound, tool calling, etc.), capability boundaries are clear via modes (Realtime/Pipeline/Hybrid) and provider choices, trigger conditions (e.g., webhooks) have examples, environment fit (local tunnel, production webhook) is documented. Deductions: some boundaries (e.g., concurrency limits) not specified.

Convention9 / 18 · 2.5/5

Evidence shows: README structure is clear, install instructions are explicit, naming is consistent (getpatter), examples are abundant, MIT license is clear. Deductions: versioning/changelog not provided, known limitations not explicitly listed, maintenance responsibility not clear.

Effectiveness9 / 13 · 3.5/5

Evidence shows: output usability is high (Python/TypeScript SDKs and templates), marginal value is clear (alternative to Vapi/Retell), cost-benefit is reasonable (open-source free). Deductions: no performance benchmarks or cost comparison data.

Verifiability3 / 8 · 1.9/5

Evidence shows: claims in README (e.g., 27+ integrations) are not verified in provided files, cross-source corroboration is insufficient, facts and inferences are not clearly separated. Deductions: lack of verifiable details.

Risks and how to mitigate them
  • Not found in source: rollback or recovery pathBack up first, or work on a git branch or snapshot, so its changes can be undone.
  • Telemetry is opt-out but enabled by default; consider privacy compliance.
  • Dependency audits are warn-only and may not block known vulnerabilities.
  • No rollback mechanism provided; recovery after upgrade issues may be difficult.
  • Versioning/changelog missing, making it hard to track breaking changes.
Evidence confidence: Low Reviewed Aug 09, 2026 Reviewed revision 1feec82c4086 New commits since this review; the score may not cover them
See the full review method →

Recent releases

Latest entries from the project's GitHub Releases. Notes are quoted from upstream as written, not rewritten or tested by FollowAgents.

  1. v0.7.0 v0.7.0 — Inworld integration, security hardening, pipeline barge-in fix
    Release notes excerpt
    Minor release — new backward-compatible public API since 0.6.9. Highlights ✨ Inworld integration completed (#199) - TTS pricing corrected & completed (both SDKs): inworld-tts-2 $0.025, inworld-tts-1.5-max $0.035, and the new inworld-tts-1.5-mini $0.015 (per 1k chars, On-Demand list rates). - providers.inworld() TTS config helper; the TTSConfig(provider="inworld") path now builds the adapter. - InworldLLM — OpenAI-compatible preset for the Inworld Realtime Router (https://api.inworld.ai/v1, INWORLD_API_KEY), unlocking 220+ models behind one key. …
    View on GitHub ↗
  2. v0.6.8
    Release notes excerpt
    Release 0.6.8 of both SDKs — Python getpatter (PyPI) and TypeScript getpatter (npm). Rolled up from PR #179. Contents (since v0.6.7): - Multi-agent handoff, local recording, preemptive generation, semantic EOU + review-wave fixes across both SDKs (#169) - Parity & bug-fix wave on 0.6.6/0.6.7 — EvalSession TS port, explicit-kwarg precedence, env-key path, telemetry chain guard (#172) - Telemetry: relay-cap batch chunking, XDG state-dir compliance, visible Python disclosure (#173) - Telemetry: hermes/openclaw CLI usage now visible — schema v6 (#175) …
    View on GitHub ↗
  3. v0.6.5
    Release notes excerpt
    0.6.5 Patter as a voice shell in front of an OpenAI-compatible agent runtime. Added - OpenAICompatibleLLM / HermesLLM / OpenClawLLM pipeline-mode LLM providers (Python + TypeScript) — drive a phone call where each turn is answered by an external agent runtime at POST {base_url}/chat/completions (Hermes, OpenClaw, Ollama, vLLM, LM Studio). - Opt-in session continuity: Hermes X-Hermes-Session-Id (per call) + optional X-Hermes-Session-Key (long-term memory scope); OpenClaw user + x-openclaw-session-key. …
    View on GitHub ↗

FAQ

Is Patter locked to one model provider or carrier?
No. The README lists multiple LLM, STT, TTS, realtime, and carrier choices, including Twilio, Telnyx, and Plivo for telephony.
What is required before I can run it?
You need Python 3.11+ or TypeScript 5.0+, plus environment-variable credentials for the carrier and AI or speech providers you choose.
Do I need a public deployment for local development?
Not necessarily. tunnel=True creates a Cloudflare quick tunnel and directs the number to the local service; the README also says a whole call can be simulated from the terminal.
What happens if a model provider fails during a call?
Patter includes an automatic LLM fallback chain, described as provider failover during a call.
Does telemetry include call content?
The README says telemetry excludes call content, prompts, phone numbers, keys, and free text. It can be disabled with telemetry=False, getpatter telemetry disable, PATTER_TELEMETRY_DISABLED=1, or DO_NOT_TRACK=1.
View on GitHub ↗ Install ↓

Compare agents like this one

The same FARS review applied across the shortlist this agent qualifies for.

Related agents