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

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.

PackageWhat
@pipedog/asyncioasyncio semantics for JavaScript: tasks, cooperative cancellation, queues, events
@pipedog/coreframes, processors, pipelines, workers, bus, observers, RTVI, base services, transports and serializers
@pipedog/tracingOpenTelemetry setup (setupTracing(), OTLP and console exporters), like pipecat-ai[tracing]
@pipedog/sentrySentry 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/onnxSilero VAD and Smart Turn (local v3, and an HTTP analyzer for a remote endpoint), and the ONNX backend they run on
@pipedog/audio-ten-vadTEN 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-duckingRNNoise 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/awsLLM, speech, realtime and image services
@pipedog/deepgram, @pipedog/cartesia, @pipedog/elevenlabs, @pipedog/inworldspeech-to-text and text-to-speech (Inworld also realtime)
@pipedog/cloudflareCloudflare 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/funasrlocal 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-nglocal 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/humetext-to-speech
@pipedog/assemblyai, @pipedog/speechmatics, @pipedog/gladia, @pipedog/soniox, @pipedog/zoom-aispeech-to-text (AssemblyAI, Speechmatics and Soniox also text-to-speech)
@pipedog/neuphonic, @pipedog/speechify, @pipedog/minimax, @pipedog/resembleai, @pipedog/camb, @pipedog/asyncai, @pipedog/blandtext-to-speech, one package per provider
@pipedog/ultravoxUltravox realtime speech-to-speech
@pipedog/groq, @pipedog/mistral, @pipedog/together, @pipedog/xaiOpenAI-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/sambanovaOpenAI-compatible LLMs, one package per provider
@pipedog/sarvam, @pipedog/smallest, @pipedog/gradium, @pipedog/meta, @pipedog/inceptionSarvam (LLM, STT, TTS), Smallest AI (LLM, STT, TTS), Gradium (STT, TTS), Meta (STT) and Inception (LLM)
@pipedog/nvidiaNVIDIA NIM LLMs, and Nemotron Omni, an LLM that hears the user's speech
@pipedog/tonethe models for Pipecat Tone's reader and tagger processors (expressive conversation, alpha)
@pipedog/perplexityPerplexity's Agent API: web-search answers over the OpenAI Responses protocol
@pipedog/langchainthe LangChain processor
@pipedog/ai-sdkVercel AI SDK: any AI SDK language model as the LLM service
@pipedog/flowsFlows: structured conversations from nodes, functions and actions
@pipedog/transport-websocket, @pipedog/transport-smallwebrtctransports
@pipedog/transport-cloudflare-realtimeCloudflare Realtime: WebRTC users through the Realtime SFU, for bots in Workers and Durable Objects
@pipedog/transport-livekitLiveKit rooms (needs @livekit/rtc-node)
@pipedog/transport-whatsappWhatsApp Business voice calls, on SmallWebRTC
@pipedog/transport-locallocal audio: microphone and speakers through sox or ffmpeg
@pipedog/heygen, @pipedog/transport-heygenHeyGen avatars, as a video service and as a transport
@pipedog/serializer-protobuf, @pipedog/serializer-rtvi-clientserializers for Pipecat clients
@pipedog/serializer-twilio, @pipedog/serializer-telnyx, @pipedog/serializer-plivo, @pipedog/serializer-exotel, @pipedog/serializer-vonage, @pipedog/serializer-genesystelephony serializers (see Telephony)
@pipedog/runnerthe development runner: main(), createTransport(), the prebuilt client
@pipedog/extensionstelephony extensions: IVRNavigator for phone menus and VoicemailDetector for outbound calls
@pipedog/evalsevals: end-to-end tests of a bot with scripted or simulated users and an LLM judge, and the pipedog-eval CLI
@pipedog/clithe pipedog command: pipedog init scaffolds a bot project and sets up coding agents, pipedog eval runs evals
@pipedog/resampler-wasm, @pipedog/sentencex-wasmhigh-quality resampling and sentence segmentation, compiled to WebAssembly
@pipedog/effectthe Effect adapter: run a pipeline as a scoped Effect, frames in and out as Streams, processors as Effect functions
@pipedog/mcp-clientthe MCP client: MCPClient connects to an MCP server over stdio, SSE or streamable HTTP and gives its tools to an LLM service
@pipedog/mcpthe 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/asyncio

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

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 WorkerRunner
import { 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
examples/my-bot/package.json
{
  "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).

On this page