# voice-assistant β Jervis Voice Assistant
A fully-local, private voice assistant. Say **"Hey Jervis"** and make a request; it answers,
controls your house, manages your shopping list, and speaks back through your speakers β
driven by a single LLM "brain" that calls tools.
## System map

```mermaid
flowchart LR
ESP32[ESP32-S3
wake word] -->|audio| WHISPER[Whisper STT]
WHISPER -->|text| AGENT[Jervis Agent
:8501]
AGENT --> HA[Home Assistant
control Β· todo Β· timers]
AGENT --> OMNI[OmniRoute
LLM gateway]
AGENT --> MOPIDY[Mopidy / Spotify
music]
AGENT --> APPRISE[Apprise
notifications]
AGENT --> TTS[Piper TTS]
TTS --> SNAP[Snapcast
multi-room]
SNAP --> SPK[House Speakers]
style AGENT fill:#bbf,stroke:#333,stroke-width:2px
```
> πΊοΈ **Interactive version** (pan/zoom/search, dark/light, export): [voice-assistant-map.html](https://maps.lab.audasmedia.com.au/homeassistant/docs/voice-assistant-map.html) β hosted on `maps.lab.audasmedia.com.au`. Mermaid source: [`docs/voice-assistant.mmd`](docs/voice-assistant.mmd).
## Docs
- **[`docs/overview.md`](docs/overview.md)** β the whole architecture in one page (diagram, hosts/IPs/ports, component map).
- **[`docs/agent-api.md`](docs/agent-api.md)** β the command contract: send text, get a spoken reply. Use from any AI model, script, N8N, ESP32, or web app.
- **[`docs/clients.md`](docs/clients.md)** β type-it, web page, and Android gateways.
## Quick use
```bash
# speak a command (reply is spoken through speakers too)
curl -X POST http://192.168.20.13:8501/voice \
-H "Content-Type: application/json" \
-d '{"text":"add chicken to the shopping list"}'
```
## Related repos
- `sam/voice_assistant` β ESP32 firmware (wake word, mic)
- `sam/voice_bridge` β STT bridge + whisper
- `sam/speech_piper` β TTS β Snapcast
- `sam/voice-assistant` β **this** overview + API + clients
> Secrets live in `.env` (gitignored) β never commit them.