---
config:
layout: dagre
flowchart:
htmlLabels: true
---
flowchart TB
User(["User
Person interacting with system"])
-- audio stream -->
UI@{ label: "UI Layer
Web UI / Console" }
UI -- audio stream -->
Backend@{ label: "Realtime Backend
Audio + Tool Calls + Vision" }
Backend -- audio stream -->
Motion@{ label: "Motion Control
Audio Sync" }
Backend -- tool calls -->
Handlers@{ label: "Tool Layer
Built-in + external tools
+ MCP Tool Spaces" }
Profiles@{ label: "Selected Profile
profile.md
+ instance-local tool access" }
Profiles -- defines enabled tools --> Handlers
Handlers -- movement
requests --> Motion
Handlers -. image for
analysis .-> Backend
Robot@{ label: "reachy_mini
Robot Control Library" }
-- camera
frames --> Handlers
Motion -- commands --> Robot
Handlers -- results --> Backend
User:::userStyle
UI:::uiStyle
Backend:::aiStyle
Motion:::coreStyle
Profiles:::toolStyle
Handlers:::toolStyle
Robot:::hardwareStyle
classDef userStyle fill:#e1f5fe,stroke:#01579b,stroke-width:3px
classDef uiStyle fill:#b3e5fc,stroke:#0277bd,stroke-width:2px
classDef aiStyle fill:#e1bee7,stroke:#7b1fa2,stroke-width:3px
classDef coreStyle fill:#fff9c4,stroke:#f57f17,stroke-width:2px
classDef hardwareStyle fill:#ef9a9a,stroke:#c62828,stroke-width:3px
classDef toolStyle fill:#fffde7,stroke:#f9a825,stroke-width:1px