Skip to main content
This guide gets the current OpenDot platform, database, API, and local voice runtime running.

1. Run with Docker Compose

From the repository root:
Add provider keys to the root .env before testing live voice sessions. The default Sandwich Browser Test path needs both OPENAI_API_KEY and DEEPGRAM_API_KEY; Speech-to-speech Browser Test and Speech-to-speech Dot device sessions use OPENAI_API_KEY through the runtime. The rest can stay at the defaults. Create those keys from the Deepgram Console and the OpenAI platform. Open:
Create a local account on the auth page, then open Agent Studio. See Login and signup for how local credentials and Supabase Auth work. The Compose stack starts PostgreSQL, applies migrations, serves the web console, and exposes the voice runtime at http://localhost:8787. The default local run uses OpenDot email/password auth; Supabase Auth can be enabled later with SUPABASE_URL, VITE_SUPABASE_URL, VITE_SUPABASE_ANON_KEY, and a Supabase POSTGRES_URI.

2. Create and test an identity

  1. Open Agent Studio.
  2. Create an agent identity with a name and description.
  3. Open Configuration and review the default pipeline.
  4. Open Browser Test.
  5. Click Connect.
  6. Click Start mic and speak.
  7. Stop speaking and wait for the assistant text and audio chunks.
Agents default to the Sandwich architecture:
To test the current Speech-to-speech browser path, switch the active agent in Configuration before opening Browser Test. That mode asks the platform API for a realtime browser-session token, has the runtime mint an OpenAI Realtime client secret, then connects the browser to OpenAI Realtime over native WebRTC. If you bind the same Speech-to-speech agent to a Dot device, the device keeps using /ws and the runtime opens the OpenAI Realtime WebSocket bridge.

3. Optional pnpm workflow

Use this workflow when you want each service in its own terminal. From the repository root:
Start the API, web console, and runtime in separate terminals:
Open the Vite URL printed in the terminal. It is usually:
Add real provider keys to the root .env before using the runtime:

4. Optional device check

Open Dot Device to claim a spoken device code, refresh runtime availability, and bind the active identity config to the device. Bound devices follow the saved architecture. Sandwich agents use the existing Deepgram plus LLM plus TTS runtime path; Speech-to-speech agents use the runtime Realtime bridge without changing firmware. The default runtime endpoints are:

Next steps