stimm
Optimistic VUI runtime

Voice agents that answer before they finish thinking.

Stimm is an Optimistic VUI runtime on top of LiveKit Agents. A low-latency VoiceAgent holds the live turn while a high-capability Supervisor reasons, plans and calls tools in parallel.

$pip install stimm
Quick start →
MIT · open sourcePython + TypeScript supervisorsWebRTC via LiveKit
time to first audioillustrative trace
classic voice pipeline
STT
LLM + tools
TTS
1 900 ms of silence
stimm · optimistic turn
supervisor keeps reasoning →
first word at 320 msacknowledge → speak → steer
faster acknowledgement
2
cooperating agents
4
buffering levels
Timings shown are illustrative — measure your own stack.
01 — the idea

Optimistic VUI is optimistic UI, for speech.

Instead of making the user wait for the entire reasoning chain to complete, the system starts behaving usefully as soon as it has enough confidence to move the conversation forward.

01
Acknowledge early

The turn is claimed the moment intent is clear — no dead air while tools resolve.

02
Speak early, progressively

Tokens stream to TTS under a buffering policy you choose: none, word, 4-words, punctuation.

03
Keep reasoning in parallel

The supervisor plans, calls tools and safely steers the next turn — never blocking this one.

02 — the runtime

Two cooperating agents, one typed protocol.

VoiceAgent

Optimized for low-latency spoken interaction. Owns the live conversational loop.

VADSTTfast LLMTTS
stimm protocol
typed messages over
LiveKit data channels
Supervisor

Optimized for deeper reasoning, planning and tool orchestration. Python or TypeScript.

planningtool callscontext + memorysafe steering
NONE
send tokens immediately
LOW
buffer until word completion
MEDIUM default
buffer until 4 words or punctuation
HIGH
buffer until punctuation
03 — the difference

Classic voice agent vs. stimm

Time to first word
single-agent pipeline
Gated by the full reasoning chain
stimm
Spoken as soon as confidence allows
Deep reasoning
single-agent pipeline
Traded away for latency
stimm
Runs in parallel on the supervisor
Tool calls
single-agent pipeline
Block the turn
stimm
Resolve behind an early acknowledgement
Control surface
single-agent pipeline
Prompt strings
stimm
Typed protocol messages
Providers
single-agent pipeline
Hand-wired per vendor
stimm
Runtime-safe contract + generated catalog
04 — where it fits

Built for speech-first products

support
Triage that never stalls

Confirm the caller instantly while the supervisor looks up the account and the order history.

field
Hands-busy copilots

Technicians and drivers get an answer in the first breath, refined as data arrives.

telephony
Concierge and booking

Natural back-and-forth on the phone, with real availability checks happening underneath.

agents
Supervised autonomy

Keep a strict policy layer in the supervisor while the voice stays conversational.

Discover providers first.
Install extras second.

The wizard-first onboarding walks you through the generated provider catalog, then installs only the extras your stack needs.

agent.py
from stimm import VoiceAgent, Supervisor, Buffering

voice = VoiceAgent(
    stt="deepgram",
    llm="gpt-4o-mini",
    tts="cartesia",
    buffering=Buffering.MEDIUM,
)

supervisor = Supervisor(
    llm="claude-sonnet",
    tools=[lookup_order, refund],
)

await voice.run(supervisor=supervisor)