# 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.io/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.io/docs/quickstart) guide, then explore the [Control plane API](https://app.voicethere.io/docs/control-plane-api) OpenAPI reference for projects, builds, deploy, and promote.

## Highlights

- [On-worker speech (STT & TTS)](https://app.voicethere.io/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.io/docs/advanced-voice-settings).
- [Realtime multiplayer](https://app.voicethere.io/docs/showcase): The same WebRTC session can carry voice plus a data channel for live positional / world state. Build shared-world and game-style apps where the agent mixes audio by relative location. Start from the Shared world demo or the [game-sync agent template](https://app.voicethere.io/docs/agent-templates).
- [Project Redis](https://app.voicethere.io/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.io/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.io/api/v1): Projects, builds, deploy, promote, and rollback — same contract as @voicethere/cli.
- [OpenAPI specification](https://app.voicethere.io/openapi/openapi.yaml): Machine-readable VoiceThere control plane API (OpenAPI 3.1).
- [Sessions API](https://sessions.voicethere.io/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.io/login): Sign in to manage projects, builds, deploy, and settings.
- [Developer documentation](https://app.voicethere.io/docs): Guides for agents, clients, voice, sessions, and project settings.
- [Service status](https://status.voicethere.io/status/production): Public uptime and incident history.
- [LLM discovery (full index)](https://app.voicethere.io/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.io/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.io/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.io/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
- [Account signup](https://app.voicethere.io/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.io/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.io/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.io/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.io/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
- [Agent templates](https://app.voicethere.io/docs/agent-templates): Dashboard starter templates — blank, voice-starter, echo, voice-showcase, game-sync — seed bundles from @voicethere/agent and local build/upload/deploy. — Sections: Where to configure, Template catalog, Create-time options, Build, verify, upload, deploy
- [Agent environment & secrets](https://app.voicethere.io/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.io/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.io/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.io/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, Agent recording controls
- [Runner settings](https://app.voicethere.io/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.io/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.io/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)
- [Agent crash policy](https://app.voicethere.io/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.io/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.io/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.io/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.io/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.io/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.io/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.io/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.io/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)
