Skip to content

Software Stack

Zlatko Lakisic edited this page Aug 3, 2026 · 1 revision

Software Stack

Software stack layers


Layer table

Layer Choice Rationale
Client SDK ao_reach (Dart ^3.5) Session overlays + reverse MCP tunnel, native to AO
Client shell Dart bridge + Chromium kiosk Bridge speaks REACH; kiosk renders; local WS between them
Avatar (Phase 1) Live SVG starburst in Chromium State, mic level, speech amplitude; no WebGL required
Avatar (planned) TalkingHead.js + GLB Lip-sync path reserved; GLB UAT still open
Vision CodeProject.AI Server (:32168) Already deployed, CUDA-backed
Wake word openWakeWord Free, local, custom words from synthetic audio
VAD Energy VAD (Silero optional) End-of-speech with hysteresis
STT AO speech sidecar or local faster-whisper Prefer Ada when hello.speech
TTS AO speech sidecar or local Piper/sherpa OpenAI-compatible /v1/audio/speech
Orchestration agentic-orchestration ≥ v1.28 for speech advertise Planner, agents, MCP, KB

Key design choices (summary)

# Decision Chosen Rejected
1 Vision CodeProject.AI face-api.js, MediaPipe, custom InsightFace
2 Transport to AO AO Reach Plain REST /voice/query
3 Client shell Dart + Chromium Pure Flutter / Electron
4 Inference split Ada for AO/CPAI/speech; Pi for I/O All-on-Pi forever
5 Wake word openWakeWord Porcupine, Precise
6 Duplex Half (Phase 1) Full duplex + AEC
7 Identity Face → session headers Prompt-prefixed context
8 Voice MCP set Fast MCPs only All MCPs (search/arxiv blow 15s)

Long-form: ADR Index.


Runtime versions (bring-up)

See Baselines for pinned observations (CPAI 2.9.x, AO 1.27.4 verified, speech path targeting 1.28+, Chromium on Pi, Python 3.11/3.12 for STT venv).


Related pages

Clone this wiki locally