The voice edge for Genesis. It gives a Genesis install ears and a spoken voice through a Home Assistant Voice PE device — running entirely on hardware you control, with the cloud touched only for the conversational model you opt into.
Three capabilities ship here, independent of each other:
- Conversational (
bridges/s2s_bridge): wake-word, full-duplex spoken conversation backed by OpenAI's Realtime speech-to-speech model. Production-ready. - Ambient (
bridges/ambient_bridge): always-on passive listening that transcribes locally (no cloud STT). Stage 1 — capture only. It writes to its own isolated, short-lived database and never contacts Genesis. The path from ambient transcripts to Genesis memory is deliberately not built yet (see the design notes); this is the sensory substrate, not a finished feature. - OMI wearable (
bridges/omi_bridge): a mic-only ambient wearable — a portable peer of the Voice PE. Receives OMI's real-time transcript webhook and writes into the same isolatedambient.db(source=omi-<uid>). Stage 1 — capture only, never contacts Genesis. Two ambient devices, one substrate.
Voice is not part of Genesis. It runs as a separate edge so the always-on audio path stays isolated from the cognitive core. Each box can be a VM or a container.
- Home Assistant + Voice PE (required hardware). HA runs the device and the ESPHome
add-on that builds and flashes the firmware in
firmware/. - Voice Edge (a dedicated VM or container — not HAOS, not the Genesis box). Runs the bridges. This is where audio is handled — and where the OMI webhook receiver accepts OMI's cloud transcript push (the one authenticated public ingress).
- Genesis (the cognitive core). Receives only the conversational tool/prompt traffic today; ambient stays on the edge.
The device-to-edge wire protocol and the edge-to-Genesis surfaces are specified in
CONTRACTS.md.
firmware/ ESPHome custom component + device config + wake word ("hey genesis")
bridges/
s2s_bridge/ conversational bridge (OpenAI Realtime); edge/ holds the VM deploy
ambient_bridge/ ambient capture service (VAD -> local STT -> isolated ambient.db)
omi_bridge/ OMI wearable webhook receiver (real-time transcript -> shared ambient.db)
deploy/ install scaffold + systemd units
docs/ setup guide + architecture diagram
CONTRACTS.md device->edge WS protocol, edge->Genesis surfaces
See docs/SETUP.md for the full walkthrough: flash the firmware, stand
up the edge box, deploy the bridges, and point the device at the edge. Every
install-specific value (network, model paths, tokens) lives in your own .env and
secrets files — the code is generic.
s2s_bridge— in active use.ambient_bridge— Stage 1 (local capture verified end-to-end). Diarization, the filtering/attention tiers, and any graduation of signal into Genesis are future work and intentionally absent here.omi_bridge— Stage 1 (capture only). Real-time transcript webhook → sharedambient.db. The attention engine and any graduation of signal into Genesis are future work; the same firehose-quarantine and graduation boundary apply.
MIT. See LICENSE. bridges/s2s_bridge derives from an upstream pipecat
example; its original notice is preserved in bridges/s2s_bridge/LICENSE.upstream. The
firmware derives from the Home Assistant Voice PE ESPHome firmware.
