# Installation

> Add pipedog to a Bun, Node, Deno or Cloudflare Workers project.

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



pipedog is split into packages, like Pipecat's optional extras. They are published on npm under
the `@pipedog` scope and released together at one version: upgrade them together.

| Package                                                                                                                                                                                                                      | What                                                                                                                                                                                                                                      |
| ---------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | ----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- |
| `@pipedog/asyncio`                                                                                                                                                                                                           | asyncio semantics for JavaScript: tasks, cooperative cancellation, queues, events                                                                                                                                                         |
| `@pipedog/core`                                                                                                                                                                                                              | frames, processors, pipelines, workers, bus, observers, RTVI, base services, transports and serializers                                                                                                                                   |
| `@pipedog/tracing`                                                                                                                                                                                                           | OpenTelemetry setup (`setupTracing()`, OTLP and console exporters), like `pipecat-ai[tracing]`                                                                                                                                            |
| `@pipedog/sentry`                                                                                                                                                                                                            | [Sentry metrics](https://polvallverdu.github.io/pipedog/docs/concepts/sentry-metrics.md): `SentryMetrics` reports TTFB and processing time as Sentry transactions, with the Sentry SDK of your runtime                                                                             |
| `@pipedog/audio-silero`, `@pipedog/audio-smart-turn`, `@pipedog/onnx`                                                                                                                                                        | Silero VAD and Smart Turn (local v3, and an HTTP analyzer for a remote endpoint), and the ONNX backend they run on                                                                                                                        |
| `@pipedog/audio-ten-vad`                                                                                                                                                                                                     | [TEN VAD](https://polvallverdu.github.io/pipedog/docs/audio/ten-vad.md), an opt-in alternative to Silero on TEN's WebAssembly build, which you obtain from TEN (under TEN's license) and pass in                                                                                   |
| `@pipedog/audio-rnnoise-filter`, `@pipedog/audio-soundfile-mixer`, `@pipedog/audio-ducking`                                                                                                                                  | RNNoise noise suppression (WebAssembly), background sound from WAV files mixed into the bot's audio, and ducking (the bot's voice drops while the user talks over it)                                                                     |
| `@pipedog/openai`, `@pipedog/google`, `@pipedog/anthropic`, `@pipedog/azure`, `@pipedog/aws`                                                                                                                                 | LLM, speech, realtime and image services                                                                                                                                                                                                  |
| `@pipedog/deepgram`, `@pipedog/cartesia`, `@pipedog/elevenlabs`, `@pipedog/inworld`                                                                                                                                          | speech-to-text and text-to-speech (Inworld also realtime)                                                                                                                                                                                 |
| `@pipedog/cloudflare`                                                                                                                                                                                                        | [Cloudflare Workers AI](https://polvallverdu.github.io/pipedog/docs/deployment/cloudflare-workers-ai.md): Flux, Nova-3 and Whisper speech-to-text, Aura and MeloTTS text-to-speech, LLMs and Smart Turn v2, over the `AI` binding or the REST API                                  |
| `@pipedog/whisper`, `@pipedog/moonshine`, `@pipedog/funasr`                                                                                                                                                                  | local speech-to-text on ONNX Runtime, no API key: [Whisper](https://polvallverdu.github.io/pipedog/docs/services/stt/whisper.md) (also the base for Whisper-compatible APIs), [Moonshine](https://polvallverdu.github.io/pipedog/docs/services/stt/moonshine.md), [FunASR SenseVoice](https://polvallverdu.github.io/pipedog/docs/services/stt/funasr.md)            |
| `@pipedog/kokoro`, `@pipedog/piper`, `@pipedog/pocket-tts`, `@pipedog/espeak-ng`                                                                                                                                             | local text-to-speech on ONNX Runtime, no API key: [Kokoro](https://polvallverdu.github.io/pipedog/docs/services/tts/kokoro.md), [Piper](https://polvallverdu.github.io/pipedog/docs/services/tts/piper.md) (also over HTTP), [Pocket TTS](https://polvallverdu.github.io/pipedog/docs/services/tts/pocket-tts.md), and the eSpeak NG phonemizer Kokoro and Piper use |
| `@pipedog/rime`, `@pipedog/fish`, `@pipedog/hume`                                                                                                                                                                            | text-to-speech                                                                                                                                                                                                                            |
| `@pipedog/assemblyai`, `@pipedog/speechmatics`, `@pipedog/gladia`, `@pipedog/soniox`, `@pipedog/zoom-ai`                                                                                                                     | speech-to-text (AssemblyAI, Speechmatics and Soniox also text-to-speech)                                                                                                                                                                  |
| `@pipedog/neuphonic`, `@pipedog/speechify`, `@pipedog/minimax`, `@pipedog/resembleai`, `@pipedog/camb`, `@pipedog/asyncai`, `@pipedog/bland`                                                                                 | text-to-speech, one package per provider                                                                                                                                                                                                  |
| `@pipedog/ultravox`                                                                                                                                                                                                          | Ultravox realtime speech-to-speech                                                                                                                                                                                                        |
| `@pipedog/groq`, `@pipedog/mistral`, `@pipedog/together`, `@pipedog/xai`                                                                                                                                                     | OpenAI-compatible LLMs with the provider's STT and TTS (xAI also realtime); `@pipedog/grok` is the deprecated alias of `@pipedog/xai`                                                                                                     |
| `@pipedog/baseten`, `@pipedog/cerebras`, `@pipedog/crusoe`, `@pipedog/deepseek`, `@pipedog/fireworks`, `@pipedog/nebius`, `@pipedog/novita`, `@pipedog/ollama`, `@pipedog/openrouter`, `@pipedog/qwen`, `@pipedog/sambanova` | OpenAI-compatible LLMs, one package per provider                                                                                                                                                                                          |
| `@pipedog/sarvam`, `@pipedog/smallest`, `@pipedog/gradium`, `@pipedog/meta`, `@pipedog/inception`                                                                                                                            | Sarvam (LLM, STT, TTS), Smallest AI (LLM, STT, TTS), Gradium (STT, TTS), Meta (STT) and Inception (LLM)                                                                                                                                   |
| `@pipedog/nvidia`                                                                                                                                                                                                            | [NVIDIA](https://polvallverdu.github.io/pipedog/docs/services/llm/nvidia.md) NIM LLMs, and Nemotron Omni, an LLM that hears the user's speech                                                                                                                                      |
| `@pipedog/tone`                                                                                                                                                                                                              | the models for [Pipecat Tone](https://polvallverdu.github.io/pipedog/docs/concepts/tone.md)'s reader and tagger processors (expressive conversation, alpha)                                                                                                                        |
| `@pipedog/perplexity`                                                                                                                                                                                                        | [Perplexity](https://polvallverdu.github.io/pipedog/docs/services/llm/perplexity.md)'s Agent API: web-search answers over the OpenAI Responses protocol                                                                                                                            |
| `@pipedog/langchain`                                                                                                                                                                                                         | the LangChain processor                                                                                                                                                                                                                   |
| `@pipedog/ai-sdk`                                                                                                                                                                                                            | [Vercel AI SDK](https://polvallverdu.github.io/pipedog/docs/services/llm/ai-sdk.md): any AI SDK language model as the LLM service                                                                                                                                                  |
| `@pipedog/flows`                                                                                                                                                                                                             | [Flows](https://polvallverdu.github.io/pipedog/docs/flows.md): structured conversations from nodes, functions and actions                                                                                                                                                          |
| `@pipedog/transport-websocket`, `@pipedog/transport-smallwebrtc`                                                                                                                                                             | transports                                                                                                                                                                                                                                |
| `@pipedog/transport-cloudflare-realtime`                                                                                                                                                                                     | [Cloudflare Realtime](https://polvallverdu.github.io/pipedog/docs/transports/cloudflare-realtime.md): WebRTC users through the Realtime SFU, for bots in Workers and Durable Objects                                                                                               |
| `@pipedog/transport-livekit`                                                                                                                                                                                                 | [LiveKit](https://polvallverdu.github.io/pipedog/docs/transports/livekit.md) rooms (needs `@livekit/rtc-node`)                                                                                                                                                                     |
| `@pipedog/transport-whatsapp`                                                                                                                                                                                                | [WhatsApp](https://polvallverdu.github.io/pipedog/docs/transports/whatsapp.md) Business voice calls, on SmallWebRTC                                                                                                                                                                |
| `@pipedog/transport-local`                                                                                                                                                                                                   | [local audio](https://polvallverdu.github.io/pipedog/docs/transports/local-audio.md): microphone and speakers through sox or ffmpeg                                                                                                                                                |
| `@pipedog/heygen`, `@pipedog/transport-heygen`                                                                                                                                                                               | [HeyGen](https://polvallverdu.github.io/pipedog/docs/services/video/heygen.md) avatars, as a video service and as a transport                                                                                                                                                      |
| `@pipedog/serializer-protobuf`, `@pipedog/serializer-rtvi-client`                                                                                                                                                            | serializers for Pipecat clients                                                                                                                                                                                                           |
| `@pipedog/serializer-twilio`, `@pipedog/serializer-telnyx`, `@pipedog/serializer-plivo`, `@pipedog/serializer-exotel`, `@pipedog/serializer-vonage`, `@pipedog/serializer-genesys`                                           | telephony serializers (see [Telephony](https://polvallverdu.github.io/pipedog/docs/telephony.md))                                                                                                                                                                                  |
| `@pipedog/runner`                                                                                                                                                                                                            | the [development runner](https://polvallverdu.github.io/pipedog/docs/runner.md): `main()`, `createTransport()`, the prebuilt client                                                                                                                                                |
| `@pipedog/extensions`                                                                                                                                                                                                        | [telephony extensions](https://polvallverdu.github.io/pipedog/docs/telephony/extensions.md): `IVRNavigator` for phone menus and `VoicemailDetector` for outbound calls                                                                                                             |
| `@pipedog/evals`                                                                                                                                                                                                             | [evals](https://polvallverdu.github.io/pipedog/docs/evals.md): end-to-end tests of a bot with scripted or simulated users and an LLM judge, and the `pipedog-eval` CLI                                                                                                             |
| `@pipedog/cli`                                                                                                                                                                                                               | the [`pipedog` command](https://polvallverdu.github.io/pipedog/docs/cli.md): `pipedog init` scaffolds a bot project and sets up coding agents, `pipedog eval` runs evals                                                                                                           |
| `@pipedog/resampler-wasm`, `@pipedog/sentencex-wasm`                                                                                                                                                                         | high-quality resampling and sentence segmentation, compiled to WebAssembly                                                                                                                                                                |
| `@pipedog/effect`                                                                                                                                                                                                            | the [Effect adapter](https://polvallverdu.github.io/pipedog/docs/guides/effect.md): run a pipeline as a scoped Effect, frames in and out as `Stream`s, processors as Effect functions                                                                                              |
| `@pipedog/mcp-client`                                                                                                                                                                                                        | the [MCP client](https://polvallverdu.github.io/pipedog/docs/services/mcp-client.md): `MCPClient` connects to an MCP server over stdio, SSE or streamable HTTP and gives its tools to an LLM service                                                                               |
| `@pipedog/mcp`                                                                                                                                                                                                               | the docs as a local MCP server for coding agents (see [Docs for AI tools](https://polvallverdu.github.io/pipedog/docs/guides/llms/#mcp-server))                                                                                                                                  |

To start a project from a template instead, run `bunx @pipedog/cli init` (see [CLI](https://polvallverdu.github.io/pipedog/docs/cli.md)): it
writes a bot with the packages below already in its `package.json`.

Where Python installs `pipecat-ai[deepgram,openai]`, you add `@pipedog/core` plus
`@pipedog/deepgram` and `@pipedog/openai`. [Services](https://polvallverdu.github.io/pipedog/docs/services.md) lists every provider and its
package, and [Transports](https://polvallverdu.github.io/pipedog/docs/transports.md) the transports.

## Package managers [#package-managers]

<Tabs items="[&#x22;bun&#x22;, &#x22;npm&#x22;, &#x22;pnpm&#x22;, &#x22;deno&#x22;]">
  <Tab value="bun">
    ```bash
    bun add @pipedog/core @pipedog/asyncio
    ```
  </Tab>

  <Tab value="npm">
    ```bash
    npm install @pipedog/core @pipedog/asyncio
    ```
  </Tab>

  <Tab value="pnpm">
    ```bash
    pnpm add @pipedog/core @pipedog/asyncio
    ```
  </Tab>

  <Tab value="deno">
    ```bash
    deno add npm:@pipedog/core npm:@pipedog/asyncio
    ```
  </Tab>
</Tabs>

## Requirements [#requirements]

* **Bun**, **Node.js** 22 or later, **Deno**, or **Cloudflare Workers** (with the
  `nodejs_compat` compatibility flag, which provides `AsyncLocalStorage`).
* The npm packages ship compiled JavaScript (ES modules) with `.d.ts` types, so every runtime and
  bundler loads them as they are.
* From source, the packages are TypeScript written with erasable syntax only (no `enum`,
  `namespace` or parameter properties), so Bun and Deno run them directly and Node runs them with
  its built-in type stripping. If you type-check against the sources with `tsc`, use
  `"moduleResolution": "Bundler"` (or `"NodeNext"`) and `"allowImportingTsExtensions": true`.

## Imports [#imports]

Modules are imported by their upstream path, so a Pipecat import translates directly:

```python
from pipecat.pipeline.pipeline import Pipeline
from pipecat.pipeline.worker import PipelineParams, PipelineWorker
from pipecat.workers.runner import WorkerRunner
```

```ts
import { Pipeline } from "@pipedog/core/pipeline/pipeline";
import { PipelineParams, PipelineWorker } from "@pipedog/core/pipeline/worker";
import { WorkerRunner } from "@pipedog/core/workers/runner";
```

## From source [#from-source]

To work on pipedog itself, or to run unreleased changes: pipedog is a Bun monorepo. Clone it,
install, and add your app as a workspace (for example under `examples/`), depending on the packages
with `workspace:*`:

```bash
bun install
bun test            # the ported upstream test suite
bun run typecheck   # tsc over every package
```

```json title="examples/my-bot/package.json"
{
  "name": "my-bot",
  "private": true,
  "type": "module",
  "dependencies": {
    "@pipedog/asyncio": "workspace:*",
    "@pipedog/core": "workspace:*"
  }
}
```

Then continue with the [Quickstart](https://polvallverdu.github.io/pipedog/docs/quickstart.md).
