> ## 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.

# Overview

> OpenDot is the open platform for voice agents on real devices.

<p align="center">
  <img src="https://mintcdn.com/opendotinc/7gRihQq3ldTnVvJO/images/opendot-banner.svg?fit=max&auto=format&n=7gRihQq3ldTnVvJO&q=85&s=abfabd0d871ff3afc4b66fb63964aa7f" alt="OpenDot" width="760" height="220" data-path="images/opendot-banner.svg" />
</p>

OpenDot is the open platform for voice agents on real devices.

Build and tune the voice pipeline, configure agents with knowledge and models, bind them to hardware, and operate sessions in the cloud, local network, or on-device.

OpenDot brings the control plane, voice runtime, and device layer into one workflow, so you can shape the full voice loop without treating the pipeline as a black box. Start with a browser console, tune each stage, test live turns against the runtime, then bind the selected voice configuration to a Dot device.

## Core flow

<CardGroup cols={2}>
  <Card title="Quickstart" icon="rocket" href="/quickstart">
    Start the web console, run the local voice runtime, and test your first agent.
  </Card>

  <Card title="Platform architecture" icon="network" href="/architecture">
    Understand how the console, API, database, runtime, providers, and firmware fit
    together.
  </Card>

  <Card title="Dot device" icon="cpu" href="/device-firmware-hardware">
    Understand the firmware, current Waveshare reference hardware, and future open
    hardware direction.
  </Card>

  <Card title="Login and signup" icon="shield-check" href="/login-signup">
    See how local credentials and Supabase Auth enter the console.
  </Card>

  <Card title="Agent Studio" icon="bot" href="/agent-studio">
    Create, edit, and select the agent identity that anchors the rest of the workflow.
  </Card>

  <Card title="Configuration" icon="settings-2" href="/configuration">
    Tune the default Sandwich pipeline or configure Speech-to-speech for browser and Dot
    device Realtime testing.
  </Card>

  <Card title="Browser Test" icon="audio-lines" href="/browser-test">
    Connect the runtime, stream microphone audio, inspect transcripts, and replay spoken
    responses.
  </Card>

  <Card title="Dot Device console" icon="cpu" href="/dot-device">
    Pair Dot devices, check runtime availability, and bind voice configs.
  </Card>
</CardGroup>

## Start contributing

OpenDot needs contributors across the voice pipeline, agents, platform control
plane, backend/data, media transport, device communication, hardware, firmware,
docs, and tooling. The docs map those areas to the current implementation and
future roadmap.

<CardGroup cols={2}>
  <Card title="Contribution areas" icon="git-pull-request" href="/contribution-areas">
    Choose a track, see current maturity, and pick small, medium, or large project briefs.
  </Card>

  <Card title="Roadmap" icon="map" href="/roadmap">
    See the current, next, and later priorities across the platform and device stack.
  </Card>
</CardGroup>

## When you need more

Reference pages move deeper into the docs so the first path stays clear:

* [Runtime configuration](/runtime-configuration) for environment variables and service URLs.
* [Authentication](/authentication) for local auth and Supabase Auth.
* [Database inspection](/database-inspection) for Drizzle Studio and schema inspection.
* [Render deployment](/render-deployment) for hosted preview deployment.
* [Contributing](/contributing) for contribution workflow and checks.
* [Contribution areas](/contribution-areas) for the canonical contributor map.

## Starter pipeline

```text theme={null}
Deepgram VAD -> Deepgram STT -> OpenAI-compatible LLM -> Deepgram TTS
```

Agents default to the Sandwich architecture shown above. Configuration can also
switch an agent to Speech-to-speech for Browser Test, where the browser uses
native WebRTC with an OpenAI Realtime client secret minted through the runtime.
Dot devices keep the runtime `/ws` firmware path; when the bound agent is
Speech-to-speech, the runtime bridges device Opus audio to OpenAI Realtime with
its own `OPENAI_API_KEY`.

The starter pipeline uses hosted Deepgram and OpenAI-compatible stages while
keeping the runtime organized around replaceable components. That shape is
intentional: the same workflow should be able to move toward local models,
self-hosted inference, cloud sessions, local-network operation, and on-device
deployments without changing how agents are managed.

## Local services

OpenDot can run as one Docker Compose stack or as separate local pnpm processes:

| Process        | Command                                  | Default URL                    |
| -------------- | ---------------------------------------- | ------------------------------ |
| Compose stack  | `docker compose up --build`              | `http://localhost:5173`        |
| Platform API   | `pnpm run api`                           | `http://localhost:8788/api`    |
| Web console    | `pnpm run dev`                           | `http://localhost:5173`        |
| Voice runtime  | `pnpm run runtime`                       | `ws://localhost:8787/voice`    |
| Drizzle Studio | `pnpm --filter ./platform run db:studio` | `https://local.drizzle.studio` |

Start with the [Quickstart](/quickstart) when setting up a fresh checkout.
