1. Run with Docker Compose
From the repository 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:
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
- Open Agent Studio.
- Create an agent identity with a name and description.
- Open Configuration and review the default pipeline.
- Open Browser Test.
- Click Connect.
- Click Start mic and speak.
- Stop speaking and wait for the assistant text and audio chunks.
/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:.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
- Platform architecture explains the whole repo and runtime boundary.
- Configuration explains the Sandwich stage controls and Speech-to-speech browser/device settings.
- Database inspection shows how to inspect PostgreSQL rows with Drizzle Studio.
- Authentication covers local email/password auth and Supabase Auth.
- Render deployment covers hosted preview deployment.