Current state — July 29: the core voice product is built and working. Reachy hears through local MLX Whisper, talks through a realtime Grok-to-ElevenLabs pipeline, remembers through a durable fail-closed Honcho outbox, sees people and dogs, tracks multiple subjects, greets deterministically, and can nap without killing its conversation app. Voice-originated side effects remain disabled.

A Reachy Mini Wireless (Pollen Robotics / Hugging Face, $499 DIY kit) is the body. Milo is the mind. Same identity as desktop Hermes Milo — not a separate chatbot bolted onto a cute shell.

Core voice liveLocal STT, realtime reasoning, streaming speech
Memory durableFail-closed writeback and redacted operator health
Embodiment liveVision context, multi-gaze, greeting, nap/wake
Authority boundedNo email, deploy, purchase, or act-from-voice
Fully assembled Reachy Mini standing on the floor
Assembled. Somewhere between Baymax and a mars lander.

Architecture

Stock path keeps the body. Custom path is everything that makes it Milo.

Current Reachy Milo voice architecture: the robot renders approved intents, the M4 owns voice and policy, and external services have no body authority
Current architecture, July 29. The public diagram intentionally omits private addresses, credentials, paths, and household identity data.
LayerStock (HF / Pollen)Custom (J&M)
Body / IODaemon, motors, media, conversation appHeadless startup and recovery, single-owner frame broker, uploader, head tracker, and volume lock
BrainOptional hosted realtime rollbackLocal far-field STT → realtime language response → streaming speech synthesis
MemoryLayered recall + hard relationship facts + durable schema-v2 writeback outbox
EyesBody camera and media stackPeople/dog identity context; single-owner camera broker; continuous multi-subject gaze
KnowledgePhrase-gated read-only research with spoken filler; no side-effect tools

What's live

CapabilityState
Headless applianceLive. Conversation app, local services, motor wake, health and recovery are automated.
Voice loopLive. Far-field VAD; local large-v3-turbo STT on Metal; realtime language response; streaming speech.
MemoryHardened. Layered recall plus serialized schema-v2 durable writeback; ambiguous delivery stops rather than replaying.
Voice authorityHardened. Literal speech control is loopback-only, authenticated, idle-gated, and fenced against cancellation races.
Read-only researchLive. Only the explicit “ask Big Milo” phrase opens the research path; spoken filler prevents dead air.
Vision and gazeLive. People/dog context, fresh camera frames, and continuous multi-subject head tracking.
Proactive greetingP0 live. Deterministic text, quiet hours, cooldowns, unknown-person silence, and decision logs.
Sleep and wakeImplemented. Nap lowers the body without killing the conversation app; wake restores it.
Act-from-voiceOff by design. No email, deployment, purchases, or privileged action path.

Development status at a glance

Reachy voice development split into live, next, and deliberately parked work
The core product is live. The next serious work is stabilization and failure-mode proof—not expanding voice authority.

How the camera stack actually works

One lesson took a while: the camera needs a single owner. Two LOCAL media clients on the Pi both fight the sensor; the second gets empty frames. Stock daemon face-tracking only works when nothing else holds the camera.

PieceJob
frame_brokerOnly process that opens the camera. Publishes fresh local JPEG frames for other components.
frame_uploaderSends a frame to M4 vision every ~2s for ID
head_trackerReads broker frames; tracks faces (+ dog boxes from M4); continuous head goto
M4 vision_serviceNames people and dogs. Does not drive the neck anymore
Camera toolPulls a fresh broker JPEG when asked “what do you see?”

Early look-at was a LAN hack: M4 bbox every 2s → short head pulse → snap center when the face dropped. It felt like a tick. That loop was the wrong rate for motor control. Tracking lives next to the camera now.

STT: the mic was fine

Far-field VAD needed real tuning (silence thresholds, no live-transcript race). But the “Hey mama / Big Mile / Chirri” class of failures was not the array.

BeforeAfter
faster-whisper tiny.en, greedymlx-audio whisper-large-v3-turbo on M4 Metal
No vocabulary biasPrivate household and lab vocabulary prompt
Speculative reopen 3s1.5s (fewer doubled sentences)

Same room, same distance sometimes transcribed clean long sentences under tiny.en — and sometimes invented fluent wrong English. That is a small model + greedy decode, not a dead mic.

First cutover of large-v3-turbo briefly made him “deaf”: a s2s rename_args bug turned gen_kwargs into nested kwargs={} and every STT call crashed. Fixed the same night. Mic and VAD never stopped hearing — the decoder was throwing.

Reliability

Reviewers (Opus / Sonnet / Opus 5): good homebrew; make power-on boring before more toys. That sprint landed.

ItemStatus
Cold boot and watchdogPassed / live. Robot-off health is soft so an unplugged body does not cause a restart loop.
Realtime protocol and cancellationHardened. Stale output and post-cancel token races fail closed.
Honcho writebackHardened. Private SQLite outbox, shared lock, strict permissions, retention, reconciliation hold, and content-redacted health.
Local operator statusCurrent. Human-readable deterministic text is available while JSON remains the automation default.
Provider fallbackNot yet proven end to end. This is the largest remaining appliance-grade reliability gap.
Current integrated verification708 tests passed, plus focused lint and format gates; the existing framework deprecation warning remains.

Operational rule: health checks expose content-redacted counts and alert codes only. Ambiguous memory writes stop for human reconciliation rather than being silently replayed.

Knowledge contract

TierAllowedNot allowed
0 BodyTalk, motion tools, camera describe, standing facts
1 Read-onlyLookup / Hermes web on ask big MiloSide effects
2 ActNot wired from voice (email, deploy, purchases…)

Deep research is still first-person Milo thinking harder — not “I asked another agent.”

Build notes worth keeping

First frame from the robot camera: living room and chocolate puppy
First good frame after the ribbon reseat. Recognition target, volunteer.

Assembly (short)

One evening + morning, ~50 steps, complete kit. Stewart-platform neck is the party trick.

Inner boxes with printed part blueprints
Blueprint boxes.
Assembled Stewart platform neck
Six rods, six motors, 6-DOF head.

Next

Voice note: any private voice clone stays private / on our hardware if used. Cloud TTS today is a stand-in.

Separate architecture track: Reachy is the first adapter target for a shared voice runtime. The reviewed contract spine has continued to grow, but it still has no live provider, audio, robot driver, persistent listener, or production cutover. The working Reachy stack remains the rollback baseline. See One Milo, Many Bodies.