OpenDot is built around one loop: build a voice agent, tune the VAD/STT/LLM/TTS pipeline, bind it to a real device, run a session, and inspect what happened. Good contributions usually make one part of that loop easier to understand, operate, debug, or extend. Use this page as the contributor starting point, then jump into the architecture and repo map when you need a deeper boundary check.Documentation Index
Fetch the complete documentation index at: https://docs.opendot.ai/llms.txt
Use this file to discover all available pages before exploring further.
Platform architecture
See how the console, API, database, runtime, providers, and firmware work together.
Repo map
Find the files and checks that match the part of OpenDot you want to change.
Local setup
For the fastest full-stack run, use Docker Compose:DEEPGRAM_API_KEY and OPENAI_API_KEY to .env before testing real voice
turns.
For process-by-process development, install the workspace and run the API,
frontend, and runtime separately:
Choose an area
| Area | Start in | Common work | Minimum check |
|---|---|---|---|
| Docs | docs/ | Guides, navigation, diagrams, troubleshooting | mint broken-links and formatting |
| Platform UI | platform/src/pages, platform/src/App.tsx | Agent Studio, Configuration, Browser Test, Dot Device, Settings | pnpm run lint && pnpm run test && pnpm run build |
| Control API | platform/src/server/api.ts | Auth, agents, devices, settings, runtime tokens | platform checks plus migration review when data changes |
| Data model | platform/src/server/db/schema.ts, platform/drizzle/ | PostgreSQL tables, Drizzle schema, migrations | migration and platform build checks |
| Voice runtime | platform/src/server/runtime.js | WebSocket sessions, VAD/STT/LLM/TTS flow, provider calls | platform checks and live Browser Test when possible |
| Firmware | dot-device/firmware/ | Wi-Fi, activation, WebSocket audio, display/audio board behavior | idf.py build when ESP-IDF is available |
| Deployment | docker-compose.yml, containers/, render.yaml | Local stack, Render Blueprint, service env contracts | targeted Compose or Render config review |
Before opening a pull request
- Keep the pull request focused on one problem or feature.
- Update docs when setup, runtime behavior, configuration, device flow, or architecture changes.
- Include screenshots or short recordings for visible UI changes.
- Describe browser, runtime, or device testing when touching audio, WebSocket, firmware, activation, or provisioning behavior.
- Keep secrets out of commits. Use
.envlocally and keep.env.examplesafe.
CONTRIBUTING.md.