unmute_core.pipecat puts the library’s tools, tasks, model call and telemetry in a Pipecat pipeline. Its main class, UnmuteFlows, runs the tasks of one call. You keep your transport, your speech and your model.
Install the library and the plugins the quickstart uses:
Quickstart
agent.py
- The
AgentSpecsays what the agent is, the same way on Pipecat and LiveKit. See AgentSpec. UnmuteFlowsadds the call’s state, hooks and telemetry.install()puts its tools on the context, andmain_instruction()is the prompt the LLM starts with.- The library builds no part of the pipeline. Here speech runs on SLNG: Soniox hears the caller and Fish Audio speaks. See SLNG.
telemetry= and a TelemetryObserver, as Telemetry shows. For OpenAI’s realtime or live service, see Realtime.
Use your own model call
A native Pipecat LLM service gets its prompts filled byUnmuteFlows. To send each request through a ModelCall, like the SLNG Context Router, use ModelCallLLMService as the LLM:
- The service gets the prompts unfilled, with the prompt site of each request. The
ModelCalldecides who fills them. - A model error after the reply began does not fail the call. The reply ends as it stands.
- The service closes each model call it was given when the pipeline ends.
Open and end the call
open_callruns thereadychecks and the prefetch, then queues the greeting. A failed check says the failure line and ends the call.transport=notes the caller hanging up, so the end readscaller_hung_up. Your ownon_client_disconnectedhandler still ends the pipeline.call.endsettles the steps’ held saves. Call it afterrunner.run()and before the telemetry closes.
GreetingHold. On a phone call, read the caller’s number with telephony_call_info. See Phone calls and The call’s life.
Add Pipecat tools, MCP and an end-call tool
native_tools are Pipecat FunctionSchemas with their own handlers. A Pipecat MCP client needs no new class:
- The main agent gets every tool you pass, like a handoff tool. A step gets only the names its task lists:
TaskSpec(native_tools=("get_customer",), ...). - The end-call tool ends the call after one model request. The goodbye rides in the reply that calls it.
- When that reply has no words, the tool says the goodbye you give it.
Before you ship
- Build one
UnmuteFlows, oneTelemetryand oneModelCallper call. A model call shared across calls is closed under the others. - With telemetry, set
PipelineParams(enable_metrics=True, enable_usage_metrics=True)and keep Pipecat’s ownenable_tracingoff. - On a phone call over a carrier line, set the pipeline’s audio in and out sample rates to 8000.
Where to go next
Pipecat adapter reference
Every argument, how a call runs inside, and every rule.
Turn taking
Turn pace, interruption and idle nudges on Pipecat.
Handoffs
Move the call between agents, each with its own model and voice.
The call's life
Call start values, events, the failure line and the end.
Add one piece to your agent
Use one piece on a plain pipeline.