pipedog is an unofficial community port of Pipecat, not affiliated with Daily.
pipedog

Introduction

pipedog is an unofficial TypeScript port of Pipecat, the framework for real-time voice and multimodal conversational AI.

pipedog is an unofficial TypeScript port of Pipecat, the open source Python framework (by Daily, BSD-2-Clause) for building voice and multimodal AI agents. Pipecat orchestrates AI services, network transports and audio processing for ultra-low latency conversations; pipedog brings the same architecture to Bun, Node, Deno and Cloudflare Workers.

Unofficial, 0.x

pipedog is a community port. It is not affiliated with or endorsed by Daily or the Pipecat project. The core runtime, most providers, Pipecat Flows, evals and the CLI are ported; Daily and a few providers (NVIDIA, Simli, Tavus) are not yet. Everything is tested against mocks and recorded protocol vectors, not yet against the live providers. See the roadmap.

How it works

Like Pipecat, pipedog orchestrates work in a pipeline: a series of frame processors that handle real-time audio, text and video frames. In a typical voice conversation:

  1. A transport receives audio from the user (browser, phone, ...).
  2. Speech recognition converts speech to text in real time.
  3. An LLM generates a response from the conversation context.
  4. Speech synthesis converts the response back to speech.
  5. The transport streams the audio back to the user.

A PipelineWorker runs a pipeline and a WorkerRunner runs workers: one for a simple bot, or many that talk to each other over a shared message bus for multi-agent setups.

Relation to Pipecat

pipedog tracks a pinned upstream Pipecat commit and ports it module by module, test by test. The goal is that someone who knows Pipecat can read pipedog code (and these docs) without a dictionary:

  • Same names. Classes, frames, module paths and file names are the same as upstream: src/pipecat/processors/frame_processor.py becomes @pipedog/core/processors/frame_processor.
  • Same event names. "on_pipeline_started", "on_client_ready", ... are unchanged strings.
  • camelCase members. push_frame() is pushFrame(), audio_in_sample_rate is audioInSampleRate.
  • Options objects. Python keyword arguments become one options object: new TextFrame({ text: "hi" }).
  • Seconds. Durations and timeouts stay in seconds, so upstream configs carry over.
  • asyncio semantics. Tasks, cancellation, queues and events behave like Python's asyncio, through @pipedog/asyncio.
  • Deprecated APIs are not ported. Things upstream marks as deprecated (for example the PipelineTask / PipelineRunner aliases) are left out.

The upstream test suite is ported 1:1, and is how behavioral parity is proven.

Compatibility with Pipecat clients (RTVI)

pipedog keeps Pipecat's wire protocols unchanged: RTVI messages, serializers and dict keys on the wire are byte-for-byte what Pipecat sends. A protocol is not an API, so nothing there is camelCased. That means Pipecat's client SDKs (@pipecat-ai/client-js, the React voice-ui-kit, the prebuilt UIs) can talk to a pipedog bot unchanged. PipelineWorker adds RTVI support automatically unless you pass enableRtvi: false.

Status

The core runtime (frames, processors, pipelines, workers, bus, observers, RTVI, base services and transports) is ported in full, with its upstream test suite. So are the main providers: OpenAI, Anthropic, Google, Azure, AWS (including Nova Sonic), Deepgram, Cartesia, ElevenLabs, Inworld, Ultravox, xAI, about 30 more speech providers (AssemblyAI, Speechmatics, Gladia, Soniox, Rime, Fish, Hume, Sarvam and others) and 16 OpenAI-compatible providers, with the WebSocket, SmallWebRTC, LiveKit, WhatsApp and local audio transports, HeyGen avatars, six telephony serializers (Twilio, Telnyx, Plivo, Exotel, Vonage, Genesys) and the development runner. Pipecat Flows, evals, the pipedog CLI, the RNNoise filter, the soundfile mixer, HTTP Smart Turn, the MCP client and the keyless local speech models (Whisper, Moonshine, FunASR, Kokoro, Piper, Pocket TTS) are ported too. In all, 622 of upstream's 667 modules (93%) and 305 of its 340 test files are ported, across 87 packages.

Provider services are tested against mock servers and recorded protocol vectors, and the examples run end to end against mock APIs. Testing against the real providers is the next phase, so treat pipedog as 0.x software: try it, and report what breaks.

Services lists every provider, ported or coming soon, and the roadmap says what isn't ported yet. The generated porting status (porting/STATUS.md) lists every package, how much of it is ported, and which runtimes it is verified on.

License

pipedog is BSD-2-Clause, like Pipecat. The original Pipecat code is Copyright (c) 2024–2026 Daily; the port is Copyright (c) 2026 pipedog contributors. Parts of these docs are adapted from the Pipecat documentation (Copyright (c) 2024–2025 Daily, BSD-2-Clause), with every Python example rewritten in TypeScript against the pipedog API.

pipedog is an unofficial community TypeScript port of Pipecat. It is not affiliated with or endorsed by Daily or the Pipecat project.

Portions adapted from the Pipecat documentation, Copyright (c) 2024–2025 Daily, BSD-2-Clause (see apps/docs/LICENSE-pipecat-docs).

On this page