> ## Documentation Index
> Fetch the complete documentation index at: https://docs.unpod.ai/llms.txt
> Use this file to discover all available pages before exploring further.

# PipeCat

> Use SuperDialog as the LLM processor in a PipeCat voice pipeline.

## How it works

SuperDialog ships a `make_processor` factory that builds a PipeCat
`FrameProcessor` wrapping **any** superdialog `Agent`. Because PipeCat's
`FrameProcessor` base class shifts between releases, SuperDialog synthesises the
right subclass against whichever PipeCat version is installed.

## Install

```bash theme={null}
pip install superdialog pipecat-ai
```

## Minimal example

```python theme={null}
from superdialog import DialogMachine
from superdialog.adapters.pipecat import make_processor

agent = DialogMachine("kyc.yaml", llm="anthropic/claude-haiku-4-5")  # any format

processor = make_processor(agent)
```

<Note>
  **Legacy / advanced:**
  `make_processor(DialogMachine(Flow.load("kyc.json"), llm=..., engine="flow"))`
  or a hand-built `PlaybookAgent` - same factory, same pipeline position.
</Note>

## Full pipeline

```python theme={null}
from pipecat.pipeline.pipeline import Pipeline
from pipecat.pipeline.runner import PipelineRunner
from pipecat.pipeline.task import PipelineTask
from pipecat.services.deepgram import DeepgramSTTService
from pipecat.services.cartesia import CartesiaTTSService
from superdialog import DialogMachine
from superdialog.adapters.pipecat import make_processor

async def main():
    agent = DialogMachine("kyc.yaml", llm="anthropic/claude-haiku-4-5")

    pipeline = Pipeline([
        DeepgramSTTService(api_key="..."),   # STT
        make_processor(agent),                # SuperDialog as the LLM
        CartesiaTTSService(api_key="..."),    # TTS
    ])

    runner = PipelineRunner()
    task = PipelineTask(pipeline)
    await runner.run(task)
```

## Per-call processor

For production, create a fresh agent and processor per call:

```python theme={null}
async def handle_call():
    agent = DialogMachine("kyc.yaml", llm="anthropic/claude-haiku-4-5")
    processor = make_processor(agent)

    pipeline = Pipeline([stt, processor, tts])
    await PipelineRunner().run(PipelineTask(pipeline))
```

## When to use this adapter

* You have an existing PipeCat-based voice stack
* You want SuperDialog to replace hand-written LLM logic between STT and TTS
* Your STT and TTS are already configured in PipeCat
