Full Observability for custom voice stacks
Attach observers to the pipeline you already built. Your loop stays untouched, it just becomes measurable.
$ pip install tuner-core “tuner-stt-observer[deepgram]” “tuner-tts-observer[cartesia]” tuner-langchain
session = TunerSession(config=TunerConfig.from_env(), call_id=call_id)
session.attach(DeepgramAdapter(connection=dg_connection))
graph = session.attach(wrap_graph(your_graph))
tts = session.attach(CartesiaAdapter())
await session.flush()
Works with your providers

Deepgram

Cartesia

LangGraph

LangChain

Speechmatics

elevenlabs
Setup
Integrate in under two minutes
Add a few lines to the voice agent you already have. Your audio and agent code stay the same.
01
Install
Pick the packages for your providers. You only install what you need.
02
Attach
Attach them to your existing STT, TTS, and LLM connections.
03
Run
Run the call like you always do. Tuner only records.
04
Flush
Call flush() at the end to send the timeline to Tuner.
Works with pieces you already chose
Each observer ships separately, install only what you use.
STT

Deepgram

Speechmatics

AssemblyAI
Coming soon
LLM / Orchestration

LangChain

LangGraph
TTS

Cartesia
OpenAI TTS
Coming soon

ElevenLabs
Coming soon
Why Tuner
See what's happening in production
Voice agents fail quietly, and at a scale no team can review by hand. Tuner turns every production call into structured data you can search, debug, evaluate, alert on, and test against.
Everything you need to run your own custom voice agents in production
Turn production from a black box into something you can actually monitor, measure, and improve.
Catch failures early
Automatically flag hallucinations, broken flows, dead air, early hangups, and other failure conditions before they show up in your churn data.
See where latency comes from
Break out STT, TTS, and LLM latency at p50 and p90, so you can see exactly which part of the voice stack is slowing conversations down.
Get alerted when something breaks
Get notified when red flags, failed evals, or other conditions appear in production — while there’s still time to fix them.
Simulate calls before you ship
Stress-test your agent over SIP before launch and after every change, using the same evals that monitor your live traffic.
LangGraph & LangChain capture
Record LangGraph and LangChain node transitions, tool calls, and timing alongside session data, so you can see what your logic layer was doing during the call.
Track cost on every call
Attach a cost calculator and track LLM, TTS, and STT spend on every session — no separate billing pipeline required.
FAQ
Frequently asked questions
Common questions about connecting Tuner to your Pipecat agents.
Read the docs
Does attaching Tuner change how my pipeline runs?
Do I have to be on a particular framework?
Which providers are supported today?
What if I use a provider you don't list?
Do I have to install every observer package?
Does flush() block my call or add latency?
Can I capture LangGraph node transitions, not just the final output?
What if I built my own STT or TTS in-house?
Do custom stacks get the same evals, alerts, and simulation as platform integrations?
How is Tuner priced?
Is my call data private and secure?
