Voice agents and realtime apps in TypeScript.We run the WebRTC.

Build on @voicethere/agent, deploy from the CLI, and connect browsers or Node clients. A session carries voice, data channels or both, so the same platform runs a voice support agent, a multiplayer game or a shared whiteboard. We run signaling, sessions, speech and scaling.

or try a live demo

npm i @voicethere/agent
Speech To TextText To SpeechBrowserAgent

Measured in load tests

45

conversations at once in one load test

1,725 of 1,725

caller turns understood correctly

231 ms

median time from transcript to the agent's first word (667 ms p95)

Measured in our voice load test on October 8, 2026, on the Advanced plan. Full results

What you get

VoiceThere runs the WebRTC stack, voice workers, and control plane so you can focus on product logic. Deploy with the CLI, connect browsers and Node clients, tune speech on the worker for faster roundtrips, and trace sessions from the dashboard without operating signaling yourself.

Voice sessions & WebRTC

WebRTC media for browser and Node clients with voice agents ready for barge in. Connect, speak, and stream without running your own signaling stack.

Quickstart →

Local STT & TTS on workers

Optional speech recognition and synthesis on the worker. Fewer network hops for faster voice roundtrips, and speech stays in one system instead of bolting on separate cloud STT and TTS.

Voice settings →

CLI for deploy & releases

Automate upload, promote, and rollout with @voicethere/cli, the same deploy workflow the dashboard uses, scriptable in CI or from your laptop.

CLI login →

Agent logs & session diagnostics

Structured agent logs and session error diagnostics so you can trace voice and data sessions without SSHing into workers.

Agent logs →

Multiplayer & data channels

Low latency WebRTC data channels for interactive apps, plus optional project Redis for shared session state across clients and agents.

Browser client →

Dashboard & control plane

Create projects, inspect build history, promote or roll back releases, and tune runner and voice settings from the dashboard or the REST API at /api/v1.

API reference →

See the full product roadmap →

How it works

  1. 01

    Client joins

    A browser or Node client connects with a session token.

  2. 02

    Audio and speech to text

    Voice travels over WebRTC. Speech is recognized on the worker.

  3. 03

    Your agent runs

    TypeScript in defineAgent handles the transcript and decides what to say.

  4. 04

    Text to speech returns

    Speech plays back to the caller. Callers can barge in when they talk.

Voice
import { defineAgent, speak } from "@voicethere/agent";

export default defineAgent({
  async onUserSpeechFinal({ sessionId, text }) {
    speak(sessionId, `You said: ${text}`);
  },
});
See full documentation

Live voice demo

Open the chat launcher in the corner to connect to a live voice agent, or browse all demos on the showcase page.

Developer packages

Install in your agent repo. Build with @voicethere/agent, ship with @voicethere/cli, and connect browsers with @voicethere/client.

@voicethere/agent

Build and verify sandboxed agent bundles. defineAgent, speak, and speech events. Use before every upload.

@voicethere/cli

voicethere login, projects, build upload, promote, and deploy --wait against the VoiceThere API.

@voicethere/client

Browser and Node client for local dev and cloud voice sessions. Connect, chat, and binary sync over WebRTC.

Built on open source

VoiceThere extends the node-webrtc-rust stack. Develop locally, then deploy the same agent bundle to our cloud.

@node-webrtc-rust/sdk

Develop voice agents locally with Rust native media, VAD, and optional Sherpa STT and TTS. Peer dependency of @voicethere/agent.

node-webrtc-rust

Full library source, examples, and Sherpa roundtrip demos. The media stack behind VoiceThere.

Put your voice agent or realtime app in front of users

Write it in TypeScript, run voicethere deploy, and connect from a browser or a Node client.

npm i -g @voicethere/cli