--- config: layout: dagre flowchart: htmlLabels: true --- flowchart TB User(["User
Person interacting with system"]) -- audio stream --> UI@{ label: "UI Layer
Gradio/Console" } UI -- audio stream --> OpenAI@{ label: "gpt-realtime API
Audio+Tool Calls+Vision" } OpenAI -- audio stream --> Motion@{ label: "Motion Control
Audio Sync + Tracking" } OpenAI -- tool calls --> Handlers@{ label: "Tool Handlers
move_head, camera, head_tracking,
dance, play_emotion, do_nothing
" } Handlers -- movement requests --> Motion Handlers -- camera frames, face tracking --> Camera@{ label: "Camera Worker
Frame Buffer + Face Tracking" } Handlers -. image for analysis .-> OpenAI Camera -- face tracking --> Motion Camera -. frames .-> Vision@{ label: "Vision Processor
Local VLM (optional)" } Vision -. description .-> Handlers Robot@{ label: "reachy_mini
Robot Control Library" } -- camera frames --> Camera Motion -- commands --> Robot Handlers -- results --> OpenAI User:::userStyle UI:::uiStyle OpenAI:::aiStyle Motion:::coreStyle Handlers:::toolStyle Camera:::coreStyle Vision:::aiStyle 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