Architecture
This page goes a level deeper than the overview: the major services, the data they own, and how a typical request flows end to end. It is aimed at technical readers evaluating or integrating with the platform.
Component map
The control plane
The control plane is a single API server that every client talks to. It exposes:
- a REST API under
/api/v1/..., - a gRPC endpoint for the Vehicle HAL (VHAL) pass-through, and
- health and metadata endpoints under
/-/..., including a live OpenAPI schema at/-/openapi/schema.
It owns the platform's relational state and consults a dedicated authorization service for every access decision. Authorization is a hard dependency: the control plane will not serve traffic without it, which guarantees that no request is ever handled without an access check in place.
What the control plane manages
| Domain | Examples |
|---|---|
| Emulators | deploy from snapshot, list, status, logs, restart, ADB proxy, snapshot swap, delete |
| Snapshots | list, detail, tree, storage capacity, delete, promote-to-root |
| Backups / Restores | tenant-scoped volume backup and restore |
| Tenancy | tenants, groups, members, grants, global admins |
| Identity | users, VCS providers, account linking, permissions |
| Fleet model | target types, targets, endpoints, applications |
| Onboarding | tenant setup and provisioning operations |
Request lifecycle
Here is what happens when you launch an emulator. The same shape applies to most write operations.
Provisioning is asynchronous: the control plane records the request and
returns immediately, then does the heavy lifting (snapshot clone, scheduling,
boot) in the background. Clients poll the status endpoint, and the portal and
nullctl do this for you.
Real-time channels
Beyond plain REST, the platform carries several live streams:
- Device video and input: your browser connects to the emulator over WebRTC, relayed through a secure media relay so it works from anywhere.
- ADB: a WebSocket proxy bridges your local
adb(or the in-browser ADB panel) to the device's debug bridge. - Logs: emulator logs stream over Server-Sent Events (SSE).
- VHAL: vehicle properties stream over gRPC, forwarded to the in-device vehicle HAL server.
Background services
Two capabilities run behind the scenes:
- Snapshot management handles volume snapshots for ephemeral CI volumes: restoring the latest matching snapshot when a job starts, capturing a new one when it finishes, and handling retention and storage health. This is what makes builds start warm and emulators boot fast. See Snapshots.
- Tenant provisioning manages isolation at the infrastructure level, deploying the platform's services into dedicated, isolated environments per tenant. See Multi-Tenancy.
Infrastructure foundation
The platform runs on elastic cloud infrastructure across major cloud providers, provisioned as code. Customers benefit from:
- a managed gateway with automated TLS on every public hostname,
- single sign-on and federated identity,
- a high-performance storage tier for fast snapshots and emulator disks,
- a secure media relay for browser-to-emulator streaming, and
- elastic compute, including on-demand pools for builds and virtualization-capable nodes for emulators.
See Security for how these pieces are hardened.