Skip to main content

whisker

PyPI Discord

ᓚᘏᗢ Whisker: A Pipecat Debugger

Whisker is a low-level debugger for the Pipecat voice and multimodal conversational AI framework.

Pipecat is a multi-agent systems: workers spawn sub-workers, send jobs to each other, and exchange messages on a shared bus. Whisker gives you a single view over the whole system so you can see exactly what every part is doing.

With Whisker you can:

  • 🧑‍🤝‍🧑 Browse every worker and sub-worker running in your Pipecat process
  • 🗺️ Inspect the selected worker's pipeline
  • 🧰 See every job flowing between workers
  • 🚌 Follow messages on the Pipecat bus
  • 📌 Select a processor to inspect its frames
  • 🔍 Filter frames by name and direction
  • 🧵 Trace a frame's path through the pipeline
  • 💾 Save and load previous sessions

Think of Whisker as trace logging with batteries for Pipecat applications.

Whisker

🧭 Getting started

Requirements

  • Python 3.11+
  • Pipecat installed
  • Node.js 20+ (for the UI)
  • ngrok (for connecting to the hosted UI)

Install Whisker for Python

uv pip install pipecat-ai-whisker

Add Whisker to your Pipecat pipeline

Whisker is split into two pieces: a WhiskerServer that owns the WebSocket connection to the UI (and listens on the Pipecat bus for cross-worker events), and per-worker WhiskerObservers that forward frame events to the server. Add one server to your runner and an observer to every pipeline worker you want to debug.

pipeline = Pipeline(...)
worker = PipelineWorker(pipeline, ...)

whisker = WhiskerServer()
worker.add_observer(whisker.create_observer(worker))

runner = WorkerRunner()
await runner.add_workers(whisker, worker)
await runner.run()

You can also add Whisker without touching your application code by listing a setup file in the PIPECAT_SETUP_FILES environment variable. The runner picks up setup_worker_runner (called once for the runner) and each worker picks up setup_pipeline_worker (called once per pipeline worker) — both reading from the same file, so a module-level WhiskerServer is shared between them:

whisker = WhiskerServer()

async def setup_worker_runner(runner: WorkerRunner):
    await runner.add_workers(whisker)


async def setup_pipeline_worker(worker: PipelineWorker):
    worker.add_observer(whisker.create_observer(worker))

In both cases, this starts the Whisker server that the graphical UI will connect to. By default, the Whisker server runs at:

ws://localhost:9090

🌐 Option A: Use the hosted UI (Recommended)

  1. Expose your local server with ngrok:

    ngrok http 9090
    
  2. Copy the ngrok URL (e.g., your-ngrok-url.ngrok.io)

  3. Open the hosted Whisker UI: https://whisker.pipecat.ai/

  4. Connect to your bot:

    • In the WebSocket URL field, enter: wss://your-ngrok-url.ngrok.io
    • Click connect

🏠 Option B: Run the UI locally

If you prefer to run the UI locally:

  1. Clone the repository:

    git clone https://github.com/pipecat-ai/whisker.git
    
  2. Start the UI:

    cd whisker/ui
    npm install
    npm run dev
    
  3. Connect to http://localhost:5173

The UI will automatically connect to ws://localhost:9090 by default.

💾 Saving sessions

You can save a Whisker session to a file for later replay or sharing. The on-disk format matches the live wire protocol, so any saved session loads back into the Whisker UI via Load session.

Record alongside the live server by passing file_name= to WhiskerServer:

whisker = WhiskerServer(file_name="whisker.whisk")

For a headless capture without the WebSocket server (CI jobs, scripted recordings), drop in WhiskerFile — same wiring as WhiskerServer, no port reserved:

whisker = WhiskerFile("whisker.whisk")

Custom sinks

WhiskerServer and WhiskerFile are both concrete WhiskerSinks. To stream events to a different backend (HTTP webhook, message queue, custom log format, …), subclass WhiskerSink and implement emit:

class MyCustomSink(WhiskerSink):
    async def emit(self, event: dict) -> None:
        # event is a plain dict — encode and ship it however you like.
        ...

📚 Next steps

Metadata

Release files for pipecat-ai-whisker 2.0.1

For a detailed explanation of source distributions (sdists) and built distributions (wheels), please see the package formats documentation.

Source distribution (sdist)

Source distribution for pipecat-ai-whisker 2.0.1
File Size Uploaded
pipecat_ai_whisker-2.0.1.tar.gz 229.8 kB Details

Built distribution (wheel)

Table of built distributions (wheels) for pipecat-ai-whisker 2.0.1
File Interpreter ABI Platform
pipecat_ai_whisker-2.0.1-py3-none-any.whl Python 3 none any Details

Total release size: 247.5 kB

Release files / pipecat_ai_whisker-2.0.1.tar.gz

Download URL pipecat_ai_whisker-2.0.1.tar.gz
Size 229.8 kB
Tags Source
SHA-256 checksum
How to use checksums
60449d64d37b2a5974501d9ae3eed4cab1bece34c503ef787b64bf3c80e94447
BLAKE2b-256 checksum
How to use checksums
ad771e454aecd4913e8b322ee13f4ce325f39a835ecbd66064a44235bbd57255
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
Yes
Uploaded via twine/7.0.0 CPython/3.13.14

Provenance

Provenance describes where a file came from. On PyPI, provenance is shared via attestations, which provide a verifiable record of the build or publishing details. View details, limitations and caveats.

PyPI Publish Attestation

PyPI verified that this artifact, at this checksum, originated from the publisher listed below.

Signed by GitHub Actions, verified by PyPI on Aug 19, 2026.

Transparency log

Release files / pipecat_ai_whisker-2.0.1-py3-none-any.whl

Download URL pipecat_ai_whisker-2.0.1-py3-none-any.whl
Size 17.7 kB
Tags Python 3
SHA-256 checksum
How to use checksums
ae1555294e542fe81d95c35b76c0ae7be2ef7621fead3f4a5beb031aaa221b55
BLAKE2b-256 checksum
How to use checksums
6ec4b019bac60caba652d9f04e1ee81d9d5204401e1cd4bb7b6ae0ebb2fad677
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
Yes
Uploaded via twine/7.0.0 CPython/3.13.14

Provenance

Provenance describes where a file came from. On PyPI, provenance is shared via attestations, which provide a verifiable record of the build or publishing details. View details, limitations and caveats.

PyPI Publish Attestation

PyPI verified that this artifact, at this checksum, originated from the publisher listed below.

Signed by GitHub Actions, verified by PyPI on Aug 19, 2026.

Transparency log

Release history Release notifications | RSS feed

This release

2.0.1 This release

2 release files

2.0.0

2 release files

1.0.0

2 release files

0.0.11

2 release files

0.0.9

2 release files

0.0.8

2 release files

0.0.7

2 release files

0.0.6

2 release files

0.0.5

2 release files

0.0.4

2 release files

0.0.3

2 release files

0.0.2

2 release files

0.0.1

2 release files

Anthropic, PBC Visionary sponsor Bloomberg Visionary sponsor Hudson River Trading Visionary sponsor Meta Visionary sponsor NVIDIA Visionary sponsor Microsoft Sustainability sponsor Depot Continuous Integration AWS Cloud computing and Security Sponsor Datadog Monitoring Fastly CDN Google Download Analytics Sentry Error logging StatusPage Status page