# VoiceThere

> VoiceThere is the Node.js platform for conversational voice and low-latency multiplayer — WebRTC, signaling, and sessions managed for you, with optional on-worker STT/TTS for faster roundtrips and fewer vendors. Fetch this file (`/llms.txt` or `/llms-full.txt`) for curated links to docs, APIs, npm packages, and public endpoints. Machine-readable OpenAPI lives at `https://app.voicethere.dev/openapi/openapi.yaml`.

Authenticate control-plane and dashboard API calls with a Bearer API key (`vth_live_*` or `vth_dev_*`). Each key is bound to **one** project. Browser CORS allowlists apply to the authenticated project only — never use a client-declared project id header to select a tenant.

Start with the [Quickstart](https://app.voicethere.dev/docs/quickstart) guide, then explore the [Control plane API](https://app.voicethere.dev/docs/control-plane-api) OpenAPI reference for projects, builds, deploy, and promote.

## Highlights

- [On-worker speech (STT & TTS)](https://app.voicethere.dev/docs/voice-vendors): Speech-to-text and text-to-speech run **on VoiceThere** by default (Sherpa). Call audio stays in VoiceThere instead of a third-party speech API, which also cuts round-trip latency. Optional cloud vendors are available when you want them. See also [Advanced voice settings](https://app.voicethere.dev/docs/advanced-voice-settings).
- [Spoken language identification](https://app.voicethere.dev/docs/spoken-language): Detect the caller's language on VoiceThere and handle `user_language` events in the agent (switch prompts, TTS voice, or session language).
- [Realtime multiplayer](https://app.voicethere.dev/docs/showcase): The same WebRTC session can carry voice plus a data channel for live world state. Build shared-world and game-style apps. Start from the Shared world demo or the [game-sync agent template](https://app.voicethere.dev/docs/agent-templates).
- [Positional mix](https://app.voicethere.dev/docs/positional-mix): Mix groups, orbiting TTS, and equal-power stereo panning with distance attenuation so listeners hear other clients and the agent by relative 3D pose (Y-up, look −Z).
- [Clip playback](https://app.voicethere.dev/docs/clip-playback): Play HTTPS audio clips or small inline bytes to one client or everyone — play-id status, stop control, mixed with TTS and microphones. Agent API in @voicethere/agent.
- [Dashboard code editor & compile](https://app.voicethere.dev/docs/dashboard-code-editor): Edit agent TypeScript in the dashboard Code tab (file tree, Save), typecheck, compile a cloud build, and deploy (promote + rollout) without a local CLI upload for every change.
- [Project Redis](https://app.voicethere.dev/docs/project-redis): Private Redis for shared agent state across concurrent sessions — connect with ioredis via `AGENT_REDIS_URL` in `onAgentStart`.
- [Inbound webhooks](https://app.voicethere.dev/docs/webhooks): POST HTTPS events to your project; VoiceThere delivers them to your deployed agent (`onWebhook`) so the worker can react without polling. Combine with Project Redis when sessions need shared state.

## Services

- [Control plane REST API](https://app.voicethere.dev/api/v1): Projects, builds, deploy, promote, and rollback — same contract as @voicethere/cli.
- [OpenAPI specification](https://app.voicethere.dev/openapi/openapi.yaml): Machine-readable VoiceThere control plane API (OpenAPI 3.1).
- [Sessions API](https://sessions.voicethere.dev/v1): Start voice sessions; join tokens and signaling for browser WebRTC clients.
- [Inbound webhooks](https://webhooks.voicethere.io/): HTTPS callbacks per project at `https://webhooks.voicethere.io/{projectId}` — configure allowed domains on the project.
- [Widget CDN](https://cdn.voicethere.io/widgets/): Public embed appearance JSON (`config.json`) — no client API keys in published config.
- [Dashboard](https://app.voicethere.dev/login): Sign in to manage projects, builds, deploy, and settings.
- [Developer documentation](https://app.voicethere.dev/docs): Guides for agents, clients, voice, sessions, and project settings.
- [Service status](https://status.voicethere.dev/status/staging): Public uptime and incident history.
- [LLM discovery (full index)](https://app.voicethere.dev/llms-full.txt): Extended docs index with section headings.

## Packages

- [@voicethere/agent](https://www.npmjs.com/package/@voicethere/agent): Build and verify sandboxed agent bundles. defineAgent, speak, and speech events. Use before every upload.
- [@voicethere/cli](https://www.npmjs.com/package/@voicethere/cli): voicethere login, projects, build upload, promote, and deploy --wait against the VoiceThere API.
- [@voicethere/client](https://www.npmjs.com/package/@voicethere/client): Browser and Node client for local dev and cloud voice sessions. Connect, chat, and binary sync over WebRTC.
- [@node-webrtc-rust/sdk](https://www.npmjs.com/package/@node-webrtc-rust/sdk): Open WebRTC SDK for Node.js — source at [node-webrtc-rust](https://github.com/akirilyuk/node-webrtc-rust).

## Docs

- [LLM agent discovery](https://app.voicethere.dev/docs/llms-txt): How LLM agents discover VoiceThere — /llms.txt, /llms-full.txt, OpenAPI, sessions API, webhooks, widget CDN, and npm packages. — Sections: Standout capabilities, What agents receive, Services and packages, Authentication rules for agents, Try it
- [Quickstart](https://app.voicethere.dev/docs/quickstart): End-to-end path — login, create a project, build and upload an agent, deploy to cloud, and connect a browser client. — Sections: Install packages, Log in, Create and link a project, Write and build the agent, Validate, upload, deploy, Connect a browser client
- [Live showcase demos](https://app.voicethere.dev/docs/showcase): Try voice and multiplayer demos on the marketing site — landing chat, showcase catalog, shared world, and how operators configure demo projects with client keys. — Sections: Try the live demos, Landing chat, Shared world, Landing chat (voice-showcase), How demos are configured, Client key + project
- [Spatial audio showcases](https://app.voicethere.dev/docs/showcase-spatial-audio): Orbiting voice, spatial soundboard, and proximity room — live demos, spatial-showcase template, DataChannel join protocol, and browser master volume. — Sections: Try the live demos, What each demo exercises, Run it yourself, DataChannel protocol, Two volume layers, Sourcing showcase sounds
- [Account signup](https://app.voicethere.dev/docs/account-signup): Create a VoiceThere dashboard account — public signup, operator kill switch, and optional email allowlists. — Sections: End-user flow, Operator controls, Historical waitlist
- [npm packages](https://app.voicethere.dev/docs/npm-packages): Install matrix for @voicethere/agent, @voicethere/cli, and @voicethere/client — plus links to the open WebRTC SDK. — Sections: Core packages, Client entry points, Open WebRTC SDK (library), Typical project install
- [CLI login](https://app.voicethere.dev/docs/cli-login): Sign in to VoiceThere from the CLI — browser device approval, personal API keys, and CI-friendly manual login. — Sections: Browser login (default), Skip when already logged in, Manual API key login, Environment overrides
- [Browser client](https://app.voicethere.dev/docs/browser-client): @voicethere/client — connectVoiceSession for local dev vs cloud, chat, embed widget, iframe mic/autoplay. — Sections: Install, Local mode (developer runner), Cloud mode (hosted VoiceThere), Browser imports, Embed widget, Nested iframes and permissions, Microphone denied but session connected, Autoplay and sound, Voice vs data-only, Session errors, Node / headless
- [Browser CORS origins](https://app.voicethere.dev/docs/browser-cors-origins): Allow your production and staging sites to call the VoiceThere sessions API from the browser with a client key. — Sections: Always allowed (platform defaults), Add your site origins, Example
- [Embed widget designer](https://app.voicethere.dev/docs/embed-widget): Dashboard Widget tab — presets, brand colors, Deploy publishes appearance JSON on the VoiceThere CDN (no client API key in public config). — Sections: Dashboard: Widget tab, Public config (no client API key), Embed on your site, CORS for your site
- [Agent templates](https://app.voicethere.dev/docs/agent-templates): Dashboard starter templates — blank, voice-starter, echo, voice-showcase, game-sync, recording-consent, positional-tts, spatial-showcase — seed agent.js bundles and root package.json from @voicethere/agent for local npm scripts. — Sections: Where to configure, Template catalog, Seeded package.json, Create-time options, Build, verify, upload, deploy
- [Dashboard code editor](https://app.voicethere.dev/docs/dashboard-code-editor): Edit agent TypeScript in the dashboard Code tab — file tree, Save, seeded or Add package.json with npm scripts, typecheck and compile (stores a build), deploy (promote if needed then rollout), public npm semver dependencies, and per-plan source and typings pack limits. — Sections: Dashboard Code tab, Root package.json, File tree and Save, Editor IntelliSense, Typecheck and compile, Publish and deploy, npm dependencies, Source size limits, Typings pack limits, Subscriptions comparison, CLI for local builds
- [Agent environment & secrets](https://app.voicethere.dev/docs/agent-environment-and-secrets): How AGENT_* environment variables and encrypted secrets are stored, named, and injected into your deployed voice agent. — Sections: Naming: use the AGENT_ prefix for both, Environment variables (plain), Secrets (encrypted), Rules and reserved keys
- [Session idle timeout](https://app.voicethere.dev/docs/session-idle-timeout): Auto-disconnect idle WebRTC peers, voice vs data-only timers, voice-activity and data-channel reset rules, and billing impact. — Sections: Where to configure, idle_timeout_enabled, Voice vs data-only timeouts, What resets the idle timer, Billing warning
- [Conversation history](https://app.voicethere.dev/docs/conversation-history): Store final user speech and agent TTS text for the dashboard Conversation tab — STT/TTS only, not DataChannel chat. — Sections: Where to configure, What is stored, Dashboard: Conversation tab, Storage caps & overage billing
- [Conversation recording](https://app.voicethere.dev/docs/conversation-recording): Opt-in voice-session audio recording with dashboard playback, included minutes per plan, rollover bank or metered overage, and agent recording controls. — Sections: Where to configure, Included minutes & overage, Dashboard playback, Delete a recording, Agent recording controls, Example: recording-consent template, Multi-tenant isolation, CLI examples
- [Runner settings](https://app.voicethere.dev/docs/runner-settings): Runner mode, warm pool, shared agent child, idle scale-down, and IPC debug — configure pool behavior and redeploy to apply. — Sections: Where to configure, Runner mode, Warm pool, Shared agent child, Idle scale-down
- [Advanced voice settings](https://app.voicethere.dev/docs/advanced-voice-settings): Tune VAD, barge-in, TTS speed, STT lifecycle, and speech event delivery for cloud voice agents. — Sections: Where to configure, Pipeline overview, Setting reference, Example scenarios
- [STT & TTS vendors](https://app.voicethere.dev/docs/voice-vendors): Speech-to-text and text-to-speech providers on VoiceThere cloud runners, including on-cluster Sherpa models and third-party API vendors. — Sections: Where to configure, STT providers, TTS providers, Sherpa STT models (on-cluster), Sherpa TTS models (on-cluster)
- [Spoken language identification](https://app.voicethere.dev/docs/spoken-language): Detect the caller’s spoken language with Sherpa Whisper tiny and handle user_language events in your agent. — Sections: How it works, Agent handler, Cloud runners, Local development
- [Positional mix & orbiting TTS](https://app.voicethere.dev/docs/positional-mix): Voice+Data mix groups, live client poses, and per-client TTS speaker poses — equal-power stereo with inverse-square distance. — Sections: Voice+Data only, Mix groups, Client poses, Per-client TTS pose, Orbit around a listener, Live showcases, Template
- [Clip playback](https://app.voicethere.dev/docs/clip-playback): Play HTTPS audio clips or small inline bytes from your agent — target one or all voice clients, poll play status, and mix with TTS and microphones. — Sections: Where to try it, Agent API, Target one client or all, Play to all listeners, Placement and pose, HTTPS clips and small bytes, Supported encodings, AAC progressive playback, Volume (0–1), Where to get clips, Mixing with speech
- [Agent crash policy](https://app.voicethere.dev/docs/agent-crash-policy): disconnect_all vs restart_child: what happens when an agent child crashes, session isolation, and message buffering limits. — Sections: Where to configure, Values, Message buffering during restart, Client expectations
- [Project Redis](https://app.voicethere.dev/docs/project-redis): Private Redis for shared agent state across concurrent sessions — enable on Advanced & Ultimate, connect with ioredis via AGENT_REDIS_URL in onAgentStart. — Sections: Enable Project Redis, Runtime: AGENT_REDIS_URL, Bundle ioredis, redis-sync template
- [Voice metrics](https://app.voicethere.dev/docs/voice-metrics): Project-scoped STT/TTS latency (p50, p95, p99), utterance volume, barge-in rate, and VAD transitions — Usage Voice tab and GET voice-metrics API. — Sections: Dashboard: Usage → Voice, Empty range vs Voice unavailable, Barge-in and VAD charts, API
- [Inbound webhooks](https://app.voicethere.dev/docs/webhooks): POST HTTPS webhooks to your VoiceThere project — fan-out to every ready session worker, verify in your agent, Advanced & Ultimate plans. — Sections: Webhook URL, Enable inbound webhooks, Rate limits and size, HTTP responses, Routing cache (up to 60 seconds), No platform HMAC — verify in your agent, Warm pool, Project Redis is not required, Agent templates, Agent logs, CLI examples
- [Billing & usage credits](https://app.voicethere.dev/docs/billing): How VoiceThere measures usage, subscription included credits, credit packs, burn order, and organization budgets. — Sections: How usage is measured, Subscriptions & included credits, Credit packs, Burn order, Organization & project budgets, Invoices & usage statements
- [Agent logs & session errors](https://app.voicethere.dev/docs/agent-logs): Structured agent logs and session errors in the VoiceThere dashboard and CLI — agentLog, persisted failures, search, soft rollover, and plan limits. — Sections: Emitting logs from your agent, Log levels, Dashboard, Plan limits & soft rollover, Overage billing & usage credits, CLI, API, Error code catalog
- [Session errors](https://app.voicethere.dev/docs/session-errors): Session errors are now browsed in Agent logs. Data-channel session_error events and onSessionError are unchanged. — Sections: Data channel contract (unchanged)
- [Control plane API](https://app.voicethere.dev/docs/control-plane-api): Interactive OpenAPI reference for the VoiceThere REST API — projects, builds, deploy, promote, and rollback.
- [Terms of Service acceptance](https://app.voicethere.dev/docs/terms-of-service): How VoiceThere Terms of Service acceptance works for the dashboard, CLI, and API — including how long authentication cache can delay a refreshed acceptance. — Sections: How to accept, What happens when Terms are not accepted, When Terms are updated, Authentication cache and propagation (important)
