# Maylo Voice Assistant

> Offline-first voice assistant stack for macOS (Wake word + VAD recording + local Whisper ASR + OpenClaw agent response + offline TTS via macOS say). Use to install, run, and troubleshoot the Maylo voice assistant web UI (cyberpunk dashboard with waveform + push-to-talk over WebSocket) and the always-on wake-word listener (e.g., 'Hey Jarvis') on a Mac mini.

- Skill: `modbender/maylo-voice-assistant` (Agent Skill, multi-file: 15 files)
- Install (CLI): `npx skillmds@latest add modbender/maylo-voice-assistant`
- Raw SKILL.md: https://api.skillmd.com/api/skills/modbender/maylo-voice-assistant/raw
- Safety review: pending (external: skill-scanner PASS, skillspector PASS)
- Works with: Claude Code, Claude.ai, OpenAI Codex
- Category: AI & ML
- Author: modbender (https://skillmd.com/u/modbender)
- Updated: 2026-09-09
- Page: https://skillmd.com/skills/modbender/maylo-voice-assistant

---


# Maylo Voice Assistant (macOS)

## What this skill ships
- A self-contained app under `assets/app/`:
  - Wake word listener (openWakeWord)
  - VAD recording (webrtcvad)
  - Local ASR (faster-whisper)
  - Responder bridge via OpenClaw (`openclaw agent --local`)
  - Offline TTS via `say -v Yelda`
  - Web UI (HTTPS + WebSocket audio streaming)

## Install / Setup (fresh machine)
1) Copy the app to a working directory (recommended):
   - `cp -R <skill>/assets/app ~/maylo-voice-assistant`
2) Create venv + install deps:
   - Run: `scripts/install.sh ~/maylo-voice-assistant`
3) Start the assistant (wake word + responder):
   - Run: `scripts/run_assistant.sh ~/maylo-voice-assistant`
4) Start the HTTPS web UI for phone mic streaming:
   - Run: `scripts/run_web_https.sh ~/maylo-voice-assistant --host 0.0.0.0 --port 8443`
   - On iPhone/Android (same Wi‑Fi): `https://<mac-ip>:8443`
   - Accept the self-signed certificate warning.

## Normal use
- Wake word: say **"Hey Jarvis"** near the Mac mini, then speak your query.
- Web UI: hold the mic button to talk; release to send.

## Troubleshooting (fast)
- Check logs:
  - `recordings/assistant.log`
  - `recordings/responder.log`
  - `recordings/web.log`
- If wake word never triggers, run the minimal tester:
  - `python jarvis_minimal_test.py`
- If the assistant responds to itself (feedback loop):
  - Set HDMI output back to Mac speakers / use headphones.
  - Increase `MAYLO_POST_SAY_INHIBIT_SEC`.

## Security / Privacy
- Do NOT package or commit:
  - OAuth client secrets, tokens, refresh tokens
  - Private certs/keys
- This skill ships **no secrets**. Any tokens/keys must be created on the target machine.

