Agent or a plain Pipecat pipeline. You add only what you need.
On this page:
- Quickstart - one tool on a plain agent
- What works where - each piece, and its page
- What still needs UnmuteAgent or UnmuteFlows - the short list
- Where to go next
Quickstart
agent.py
examples/minimal/livekit/ and examples/minimal/pipecat/:
What works where
Each row links to the page that holds the recipe.
On Pipecat, pass
transport= to attach_call or open_call, so the transport’s hang-up makes the call’s end read caller_hung_up. Pass call= to max_duration, idle_nudges, IdleNudgeObserver, SipLine, end_call_tool, voicemail_tool and dial_out so the end reads the right reason. See Why the call ended.
max_duration and the call info builders (sip_call_info, telephony_call_info) also work on a plain agent. See LiveKit and Pipecat.
A handoff on a plain agent
On Pipecat,UnmuteFlows works without tasks. Give each agent a spec with only its prompt. The next agent runs on the same CallState:
Agent hands off the LiveKit way, by returning a new agent from a tool. Build it with Agent(chat_ctx=shape_chat_ctx(self.chat_ctx, HandoffContext(...))) to keep the library’s history rules. See Handoffs.
What still needs UnmuteAgent or UnmuteFlows
- Tasks and groups on LiveKit need
UnmuteAgent. It runs each step as its own agent. - Tasks and groups on Pipecat need
UnmuteFlows, with the plan in the spec’stasks. - A full handoff on LiveKit (announce line, model and voice switch, summary) needs
UnmuteAgent.hand_off. The history rules work on a plain agent throughshape_chat_ctx. - Model hooks run only where the library sends the model request. A plain agent keeps them by calling
filled_llmortraced_llmin itsllm_nodeon LiveKit, or by passingllm=toattach_callon Pipecat. Without that, the adapter logs one warning. See Hooks. - A held save at the end of a call is settled by
call.end, or byUnmuteAgenton LiveKit andflows.settle()on Pipecat.
Where to go next
LiveKit
The full agent on LiveKit.
Pipecat
The full flow on Pipecat.
Tools
The tool registry that both frameworks share.
Turn taking
Turn pace, interruption and idle nudges.