A caller reports a lost debit card. Prism finds the card, freezes it, reads the recent charges, and files a dispute.
Build a Prism agent with the SDK
Talk to Prism through your microphone with your own instructions, from Python or Node.js.
What Prism handles for you
A voice agent has to listen, know when the caller is done, answer, and stay out of the caller’s way. Prism does all of this over one connection:- It hears the caller. Prism works from the caller’s audio, while a cascade’s language model only reads a transcript.
- It knows when to speak. Prism decides when the caller has finished, and it doesn’t talk over them.
- It lets the caller cut in. When the caller talks over a reply, Prism stops and answers what they just said.
- It replaces three services. One WebSocket does the work of speech-to-text, a language model, and text-to-speech, with your instructions and tools.
- It sends text with every reply. Each spoken reply comes with its text, so you can show captions and keep logs.
Before you build
Here’s what to know first:What happens during a call
Your backend sits between the caller and Prism. It streams the caller’s audio to Prism the whole time, plays Prism’s replies, and runs your tools when Prism asks. Here’s how one exchange flows: The caller’s audio can reach your backend in three ways:- A browser or mobile app: the app streams the microphone to your backend. The SDK quickstart runs this setup on your computer.
- A phone call: your telephony provider streams the call to your backend. Convert the phone audio in both directions, as Phone audio describes.
- A LiveKit room: the LiveKit quickstart adds Prism to a LiveKit agent, and LiveKit telephony connects phone calls to it.
- Keep the API key on your backend.
- Keep the audio flowing while Prism speaks. Prism listens to it to catch interruptions.
- Send a playback report after an interruption. Prism uses it to decide how much of the interrupted reply it remembers.
- Skip the turn detector. You don’t need voice activity detection either, and How a turn ends explains why.
Connect Prism to your app
Most teams start with the Rime SDK. If you already use LiveKit Agents, start with the LiveKit quickstart instead. If your backend is in another language, use the WebSocket API directly:Make the agent yours
Prism comes with sensible defaults, so a short set of instructions is enough to start. As your agent grows, these are the controls you’ll reach for:
Prism doesn’t offer these settings:
- Text-only replies
- Sampling settings, such as temperature
- A choice of language model
- A way for your application to end the caller’s turn
Know the limits
Long calls and busy agents run into a few limits. Knowing them up front saves you a surprise in production:- Fixed settings: the turn timing stays as you set it when the call starts. You can still change the instructions, voice, and tools during the call, with the SDK or the WebSocket API. Configure a session lists which settings can change.
- Connection: one conversation runs on each connection. A dropped connection does not resume on its own. To carry on, open a new session and add the earlier conversation, as Start from an earlier conversation shows.
- Turn length: a caller’s turn ends after 55 seconds of continuous speech.
- Idle time: the conversation closes after 5 minutes idle. Silence from your backend does not keep it open.
- Context: 65,536 tokens in all: instructions, tools, history, and tool results, plus 512 tokens kept for the reply. When a conversation outgrows it, Prism leaves the oldest turns out of each reply’s prompt, so the conversation goes on.

