Installation
Add pipedog to a Bun, Node, Deno or Cloudflare Workers project.
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: 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, 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: 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 (also the base for Whisper-compatible APIs), Moonshine, FunASR SenseVoice |
@pipedog/kokoro, @pipedog/piper, @pipedog/pocket-tts, @pipedog/espeak-ng | local text-to-speech on ONNX Runtime, no API key: Kokoro, Piper (also over HTTP), Pocket TTS, 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 NIM LLMs, and Nemotron Omni, an LLM that hears the user's speech |
@pipedog/tone | the models for Pipecat Tone's reader and tagger processors (expressive conversation, alpha) |
@pipedog/perplexity | Perplexity's Agent API: web-search answers over the OpenAI Responses protocol |
@pipedog/langchain | the LangChain processor |
@pipedog/ai-sdk | Vercel AI SDK: any AI SDK language model as the LLM service |
@pipedog/flows | Flows: structured conversations from nodes, functions and actions |
@pipedog/transport-websocket, @pipedog/transport-smallwebrtc | transports |
@pipedog/transport-cloudflare-realtime | Cloudflare Realtime: WebRTC users through the Realtime SFU, for bots in Workers and Durable Objects |
@pipedog/transport-livekit | LiveKit rooms (needs @livekit/rtc-node) |
@pipedog/transport-whatsapp | WhatsApp Business voice calls, on SmallWebRTC |
@pipedog/transport-local | local audio: microphone and speakers through sox or ffmpeg |
@pipedog/heygen, @pipedog/transport-heygen | HeyGen 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) |
@pipedog/runner | the development runner: main(), createTransport(), the prebuilt client |
@pipedog/extensions | telephony extensions: IVRNavigator for phone menus and VoicemailDetector for outbound calls |
@pipedog/evals | evals: 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: 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: run a pipeline as a scoped Effect, frames in and out as Streams, processors as Effect functions |
@pipedog/mcp-client | the MCP client: 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) |
To start a project from a template instead, run bunx @pipedog/cli init (see CLI): 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 lists every provider and its
package, and Transports the transports.
Package managers
bun add @pipedog/core @pipedog/asyncioRequirements
- Bun, Node.js 22 or later, Deno, or Cloudflare Workers (with the
nodejs_compatcompatibility flag, which providesAsyncLocalStorage). - The npm packages ship compiled JavaScript (ES modules) with
.d.tstypes, so every runtime and bundler loads them as they are. - From source, the packages are TypeScript written with erasable syntax only (no
enum,namespaceor 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 withtsc, use"moduleResolution": "Bundler"(or"NodeNext") and"allowImportingTsExtensions": true.
Imports
Modules are imported by their upstream path, so a Pipecat import translates directly:
from pipecat.pipeline.pipeline import Pipeline
from pipecat.pipeline.worker import PipelineParams, PipelineWorker
from pipecat.workers.runner import WorkerRunnerimport { Pipeline } from "@pipedog/core/pipeline/pipeline";
import { PipelineParams, PipelineWorker } from "@pipedog/core/pipeline/worker";
import { WorkerRunner } from "@pipedog/core/workers/runner";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:*:
bun install
bun test # the ported upstream test suite
bun run typecheck # tsc over every package{
"name": "my-bot",
"private": true,
"type": "module",
"dependencies": {
"@pipedog/asyncio": "workspace:*",
"@pipedog/core": "workspace:*"
}
}Then continue with the Quickstart.
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).