# os-vector/wire-os architecture

> Architecture diagram of the GitHub repository os-vector/wire-os, generated by GitDiagram from its file tree, README and a sample of source files (last updated 2026-09-28). It is an AI-made overview: check details against the source.

- Interactive diagram: https://gitdiagram.com/os-vector/wire-os
- Repository: https://github.com/os-vector/wire-os

## Overview

WireOS is custom firmware for the Anki Vector robot: its principal user workflow is to select a dev or OSKR build, obtain the OTA, and install it on an unlocked robot through recovery. The README describes the resulting OS base, Qualcomm kernel, and Vector software, plus robot capabilities such as wake-word configuration and a web server. The supplied tree is only a partial view and does not include the main Yocto layers, OTA builder, or most Vector application code; paths below are limited to listed files or directories, and the capability branches rely on README descriptions.

Main entry points: [`kernel/msm-4.9`](https://github.com/os-vector/wire-os/tree/main/kernel/msm-4.9) (Qualcomm kernel), [`android_compat`](https://github.com/os-vector/wire-os/tree/main/android_compat) (Android compatibility), [`android_compat/device/qcom/common/init`](https://github.com/os-vector/wire-os/tree/main/android_compat/device/qcom/common/init) (Qualcomm init), [`anki/anki-ble/ankibluetoothd`](https://github.com/os-vector/wire-os/tree/main/anki/anki-ble/ankibluetoothd) (Bluetooth daemon)

## Diagram (Mermaid)

```mermaid
flowchart TD

subgraph group_delivery["Firmware delivery"]
  node_recovery["Recovery mode"]
  node_ota["WireOS OTA"]
end

subgraph group_platform["OS platform"]
  node_yocto["Yocto OS base"]
  node_compat["Android compatibility"]
  node_qcominit["Qualcomm init"]
end

subgraph group_robot["Robot software"]
  node_bluetooth["Bluetooth daemon"]
  node_wakeword["Wake-word engine"]
  node_face["Face recognition"]
  node_webconfig["Configuration webserver"]
  node_update["C++ update engine"]
end

subgraph group_kernel["Kernel services"]
  node_kernel["Qualcomm kernel<br/>[msm-4.9]"]
  node_pd["USB PD policy<br/>[policy_engine.c]"]
  node_dma["DMA engine<br/>[dmaengine.c]"]
  node_crypto["Crypto engine<br/>[crypto_engine.c]"]
  node_massstorage["USB mass storage<br/>[f_mass_storage.c]"]
end

node_owner(("Vector owner"))
node_device(("Vector robot"))
node_ota_site["OTA distribution"]

node_owner -->|"enters"| node_recovery
node_owner -->|"selects firmware"| node_ota_site
node_ota_site -->|"provides"| node_ota
node_recovery -->|"installs OTA"| node_device
node_yocto -->|"produces OS image"| node_ota
node_compat -->|"supports platform"| node_yocto
node_qcominit -->|"initializes platform"| node_device
node_kernel -->|"runs on"| node_device
node_pd -->|"manages USB power"| node_kernel
node_dma -->|"provides transfers"| node_kernel
node_crypto -->|"provides crypto"| node_kernel
node_massstorage -->|"provides USB storage"| node_kernel
node_bluetooth -->|"provides BLE"| node_device
node_wakeword -->|"recognizes wake words"| node_device
node_webconfig -->|"configures"| node_wakeword
node_webconfig -->|"configures options"| node_device
node_face -->|"detects faces"| node_device
node_update -->|"updates firmware"| node_device

click node_compat "https://github.com/os-vector/wire-os/tree/main/android_compat"
click node_qcominit "https://github.com/os-vector/wire-os/tree/main/android_compat/device/qcom/common/init"
click node_kernel "https://github.com/os-vector/wire-os/tree/main/kernel/msm-4.9"
click node_pd "https://github.com/os-vector/wire-os/blob/main/kernel/msm-4.9/drivers/usb/pd/policy_engine.c"
click node_dma "https://github.com/os-vector/wire-os/blob/main/kernel/msm-4.9/drivers/dma/dmaengine.c"
click node_crypto "https://github.com/os-vector/wire-os/blob/main/kernel/msm-4.9/crypto/crypto_engine.c"
click node_massstorage "https://github.com/os-vector/wire-os/blob/main/kernel/msm-4.9/drivers/usb/gadget/function/f_mass_storage.c"
click node_bluetooth "https://github.com/os-vector/wire-os/tree/main/anki/anki-ble/ankibluetoothd"

classDef toneNeutral fill:#f8fafc,stroke:#334155,stroke-width:1.5px,color:#0f172a
classDef toneBlue fill:#dbeafe,stroke:#2563eb,stroke-width:1.5px,color:#172554
classDef toneAmber fill:#fef3c7,stroke:#d97706,stroke-width:1.5px,color:#78350f
classDef toneMint fill:#dcfce7,stroke:#16a34a,stroke-width:1.5px,color:#14532d
classDef toneRose fill:#ffe4e6,stroke:#e11d48,stroke-width:1.5px,color:#881337
classDef toneIndigo fill:#e0e7ff,stroke:#4f46e5,stroke-width:1.5px,color:#312e81
classDef toneTeal fill:#ccfbf1,stroke:#0f766e,stroke-width:1.5px,color:#134e4a
class node_recovery,node_ota toneBlue
class node_yocto,node_compat,node_qcominit toneAmber
class node_bluetooth,node_wakeword,node_face,node_webconfig,node_update toneMint
class node_kernel,node_pd,node_dma,node_crypto,node_massstorage toneRose
class node_owner,node_device,node_ota_site toneIndigo
```

## Components

### Firmware delivery

- **Recovery mode**
- **WireOS OTA**

### OS platform

- **Yocto OS base**
- [Android compatibility](https://github.com/os-vector/wire-os/tree/main/android_compat): `android_compat`
- [Qualcomm init](https://github.com/os-vector/wire-os/tree/main/android_compat/device/qcom/common/init): `android_compat/device/qcom/common/init`

### Robot software

- [Bluetooth daemon](https://github.com/os-vector/wire-os/tree/main/anki/anki-ble/ankibluetoothd): `anki/anki-ble/ankibluetoothd`
- **Wake-word engine**
- **Face recognition**
- **Configuration webserver**
- **C++ update engine**

### Kernel services

- [Qualcomm kernel](https://github.com/os-vector/wire-os/tree/main/kernel/msm-4.9): `kernel/msm-4.9`
- [USB PD policy](https://github.com/os-vector/wire-os/blob/main/kernel/msm-4.9/drivers/usb/pd/policy_engine.c): `kernel/msm-4.9/drivers/usb/pd/policy_engine.c`
- [DMA engine](https://github.com/os-vector/wire-os/blob/main/kernel/msm-4.9/drivers/dma/dmaengine.c): `kernel/msm-4.9/drivers/dma/dmaengine.c`
- [Crypto engine](https://github.com/os-vector/wire-os/blob/main/kernel/msm-4.9/crypto/crypto_engine.c): `kernel/msm-4.9/crypto/crypto_engine.c`
- [USB mass storage](https://github.com/os-vector/wire-os/blob/main/kernel/msm-4.9/drivers/usb/gadget/function/f_mass_storage.c): `kernel/msm-4.9/drivers/usb/gadget/function/f_mass_storage.c`

### Other components

- **Vector owner**
- **Vector robot**
- **OTA distribution**

## Connections

- Vector owner → Recovery mode: enters
- Vector owner → OTA distribution: selects firmware
- OTA distribution → WireOS OTA: provides
- Recovery mode → Vector robot: installs OTA
- Yocto OS base → WireOS OTA: produces OS image
- Android compatibility → Yocto OS base: supports platform
- Qualcomm init → Vector robot: initializes platform
- Qualcomm kernel → Vector robot: runs on
- USB PD policy → Qualcomm kernel: manages USB power
- DMA engine → Qualcomm kernel: provides transfers
- Crypto engine → Qualcomm kernel: provides crypto
- USB mass storage → Qualcomm kernel: provides USB storage
- Bluetooth daemon → Vector robot: provides BLE
- Wake-word engine → Vector robot: recognizes wake words
- Configuration webserver → Wake-word engine: configures
- Configuration webserver → Vector robot: configures options
- Face recognition → Vector robot: detects faces
- C++ update engine → Vector robot: updates firmware
