# Jarvis v2 - Always-Listening Assistant (CPU) Designed for Intel iMac Ubuntu 26.04, 15GB RAM, CPU-only. ## Architecture ``` Mic 16kHz -> VAD (silero) -> Wakeword (openWakeWord TFLite) -> STT (faster-whisper int8) -> SpeakerID (ECAPA) + FaceID (OpenCV) -> LLM (ollama/gemini_cli/hermes) -> TTS (piper) -> Speaker ``` ## Quick start on iMac ```bash cd ~/Projects/jarvis-v2 # install uv if not present curl -LsSf https://astral.sh/uv/install.sh | sh export PATH=$HOME/.local/bin:$PATH uv venv .venv --python 3.14 source .venv/bin/activate uv pip install -e . # for audio libs you may need (if sudo works, otherwise pip wheels should work) # sudo apt install portaudio19-dev libasound2-dev espeak # configure cp jarvis.yaml.example jarvis.yaml # edit jarvis.yaml # Test components python scripts/test_mic.py python scripts/test_wakeword.py python scripts/test_stt.py # Enroll family voices (3 samples each) python scripts/enroll_speaker.py --name Adolfo --mic python scripts/enroll_speaker.py --name Grace --mic python scripts/enroll_speaker.py --name Elias --mic # Enroll faces python scripts/enroll_face.py --name Adolfo python scripts/enroll_face.py --name Grace # Run jarvis run # or python -m jarvis.cli run --config jarvis.yaml # Install as systemd user service (always-on) ./scripts/install_service.sh ``` ## Config See jarvis.yaml.example - covers audio, VAD, wakeword, STT, speaker, vision, LLM, TTS. ## LLM Providers - ollama: local qwen2.5:3b (install ollama then `ollama pull qwen2.5:3b`) - gemini_cli: uses existing gemini CLI + soul.md - hermes_api: points to Hermes API - echo: placeholder ## Future - voice trigger via small LLM gate (qwen0.5B decides if addressed) - Face corroboration on wake - Home Assistant / MCP tools