Skip to main content
Four example agents show unmute-core on calls that are nothing like the salon. Each one is a real project in the repo’s examples/ folder. Each one runs on LiveKit and on Pipecat from the same code, and each one is checked with whole scripted calls on its real model. Use them when:
  • You want to see a whole agent, not one feature.
  • Your call has a shape the salon does not have: a long intake, an outbound call, a tools-only finder, two languages.
  • You want to copy a working setup for SLNG speech and Gemini in the EU.

Pick the closest one

All four follow one idea: type the agent’s path. The model reads what the caller meant and turns it into a typed tool call. Code checks it, saves it, and says the next line. Type the path explains it and how to apply it to your own agent.

What they have in common

  1. One package per agent. It holds the State, the tools, the tasks and the prompts. It imports no framework.
  2. Two small projects. livekit/agent.py and pipecat/bot.py are about 20 lines each. They import the package’s APP and run it.
  3. One voice stack. examples/voice-stack builds the framework side once: SLNG speech to text and text to speech, Gemini on Vertex AI, the turn pace, the greeting and the handoffs. Use it as a starting point for your own pipeline.
Every value can be changed in the project’s .env. The .env.example of each project lists them.

Run one

Each example’s README lists what to say on a call, and the demo data it ships with.

Check one

Every example has whole calls written as JSON in its scenarios/ folder. A scripted caller says each line, and the check reads what the agent said, the tools it called, the model requests each turn made, and the state at the end.
A scenario can also send its start values the way a real dispatch does: in the LiveKit job’s metadata, or in the Pipecat runner’s request body. A scenario with refused checks that a call with a missing or wrong start value never starts, and that the log says why. The --audio run speaks each caller line with SLNG text to speech and sends it through the real pipeline: voice detection, turn detection, speech to text, the model and text to speech.

In this section

Type the path

Spend the model on understanding, and let code do the rest.

Nosh: a tools-only finder

One agent, three tools, and one model request per caller turn.

Kestrel: a long intake

Code asks every question and reads the whole claim back.

Wasla: an outbound reminder

Verify the person first, then record a promise or a concern.

Faro: two languages

One agent per language, and a handoff to switch.