# Introduction

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

Source: https://polvallverdu.github.io/pipedog/docs/



pipedog is an **unofficial** TypeScript port of [Pipecat](https://github.com/pipecat-ai/pipecat),
the open source Python framework (by [Daily](https://www.daily.co), 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**.

<Callout type="warn" title="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](https://polvallverdu.github.io/pipedog/docs/roadmap.md).
</Callout>

<Cards>
  <Card title="Quickstart" href="/docs/quickstart">
    Run a pipeline with a custom frame processor in a few lines.
  </Card>

  <Card title="Coming from Pipecat (Python)" href="/docs/guides/coming-from-pipecat">
    How Pipecat's Python API maps to pipedog.
  </Card>

  <Card title="Core concepts" href="/docs/concepts/frames">
    Frames, frame processors, pipelines, workers and cancellation.
  </Card>

  <Card title="Runtimes & compatibility" href="/docs/guides/runtimes">
    What runs where: Bun, Node, Deno, Cloudflare Workers.
  </Card>

  <Card title="Services" href="/docs/services">
    LLM, speech-to-text, text-to-speech and realtime providers, one page each.
  </Card>

  <Card title="Frameworks" href="/docs/frameworks">
    Mount a voice agent in SvelteKit, Hono, Bun, Next.js, TanStack Start and more.
  </Card>

  <Card title="Development runner" href="/docs/runner">
    Pipecat's `main()` runner: the prebuilt client, WebRTC and phone calls.
  </Card>

  <Card title="Telephony" href="/docs/telephony">
    Phone bots on Twilio, Telnyx, Plivo, Exotel, Vonage and Genesys.
  </Card>
</Cards>

## How it works [#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 [#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`](https://polvallverdu.github.io/pipedog/docs/concepts/interruptions-and-cancellation.md).
* **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) [#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 [#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](https://polvallverdu.github.io/pipedog/docs/runner.md). Pipecat Flows, evals, the
[`pipedog` CLI](https://polvallverdu.github.io/pipedog/docs/cli.md), the RNNoise filter, the soundfile mixer, HTTP Smart Turn, the
[MCP client](https://polvallverdu.github.io/pipedog/docs/services/mcp-client.md) 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](https://polvallverdu.github.io/pipedog/docs/services.md) lists every provider, ported or coming soon, and the
[roadmap](https://polvallverdu.github.io/pipedog/docs/roadmap.md) says what isn't ported yet. The generated
[porting status](https://polvallverdu.github.io/pipedog/docs/contributing/status.md) (`porting/STATUS.md`) lists every package, how much of
it is ported, and which runtimes it is verified on.

## License [#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](https://github.com/pipecat-ai/docs) (Copyright (c) 2024–2025 Daily,
BSD-2-Clause), with every Python example rewritten in TypeScript against the pipedog API.
