halley

Tring

Write a voice agent once in YAML and run it on any speech architecture

Area
Voice
Language
Python
License
MIT
Latest
v0.4.1
Plate
No. 01 of 14
Fig. 01Tring
Move your pointer over it

What came back

  1. $0

    per-minute cost on the default local pipeline.source

  2. 3 runtimes

    from one YAML spec: cascade, speech-to-speech or hybrid, switched by config.source

Tring is an open-source voice agent stack built from lessons learned across more than a million production telephony calls. One YAML agent contract runs on cascade, speech-to-speech or hybrid runtimes with the same tools, analytics and cost attribution, so changing architecture is a config change. The default pipeline runs entirely on local open models, and four latency primitives make dead air during tool calls structurally impossible.

How it works

  1. 01

    An AgentSpec in YAML declares the persona, tools, language policy and runtime routing, and a RuntimeAdapter runs it on the chosen architecture.

  2. 02

    The model answers in a speak-then-tool-call envelope, and a character-level parser streams the speech to TTS while the tool call is still being generated.

  3. 03

    Every runtime emits the same SessionEvent stream, so cost metering, analytics and transports subscribe to it without knowing which runtime is underneath.

What it does

  • One agent contract runs on cascade (STT, LLM, TTS), speech-to-speech or hybrid runtimes
  • Tool calls must declare what the caller hears while they run, so there is no dead air
  • Playback ledger tracks heard versus unheard text, so the model never cites words a caller interrupted
  • Per-language routing of STT, TTS and LLM for callers who code-switch
  • Cost meter with exact versus estimated flags and a cost-per-outcome report; Studio for building, testing and replaying calls in the browser