Skip to main content

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.

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.

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:
cp .env.example .env
docker compose up --build
Open the console:
http://localhost:5173
Create a local email/password account, then open Agent Studio. Add 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:
corepack enable
corepack prepare pnpm@11.1.3 --activate
pnpm install
pnpm --filter ./platform run db:migrate

pnpm run api
pnpm run dev
pnpm run runtime
See the Quickstart for the full setup flow and Database inspection for Drizzle Studio.

Choose an area

AreaStart inCommon workMinimum check
Docsdocs/Guides, navigation, diagrams, troubleshootingmint broken-links and formatting
Platform UIplatform/src/pages, platform/src/App.tsxAgent Studio, Configuration, Browser Test, Dot Device, Settingspnpm run lint && pnpm run test && pnpm run build
Control APIplatform/src/server/api.tsAuth, agents, devices, settings, runtime tokensplatform checks plus migration review when data changes
Data modelplatform/src/server/db/schema.ts, platform/drizzle/PostgreSQL tables, Drizzle schema, migrationsmigration and platform build checks
Voice runtimeplatform/src/server/runtime.jsWebSocket sessions, VAD/STT/LLM/TTS flow, provider callsplatform checks and live Browser Test when possible
Firmwaredot-device/firmware/Wi-Fi, activation, WebSocket audio, display/audio board behavioridf.py build when ESP-IDF is available
Deploymentdocker-compose.yml, containers/, render.yamlLocal stack, Render Blueprint, service env contractstargeted 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 .env locally and keep .env.example safe.
For repository-wide expectations, also read the root CONTRIBUTING.md.