claude-agent-sdk==0.2.110 kokoro-onnx==0.5.0 mlx==0.31.2 mlx-audio==0.4.4 mlx-lm==0.31.3 mlx-metal==0.31.2 mlx-whisper==0.4.3 numpy==2.4.6 parakeet-mlx==0.5.2 pysilero_vad==2.1.0 sounddevice==0.5.5 # hands/gesture tracking (voice/hands.py; also serves gaze_detector). # opencv-contrib-python provides cv2 — do NOT add opencv-python beside it. mediapipe==0.10.35 opencv-contrib-python==5.0.0.93 # --- ported from the `windows` branch (2026-07-08), cross-platform --- # Expressive / cloned voice — Chatterbox (voice/tts_chatterbox.py). On the RTX # box it runs on CUDA; on Ahmed's M4 it runs on MPS (torch already present, # mps verified). Pulls torch+torchaudio+perth+safetensors. Chatterbox 0.1.7 can # try to pin an older torch — install with --no-deps if it wants to downgrade # the working torch 2.12, then add torchaudio/perth manually. Falls back to # Kokoro cleanly if it can't load, so the assistant is never left mute. chatterbox-tts==0.1.7 torchaudio # required by chatterbox; match the installed torch build # Mac voice — Pocket TTS (voice/tts_pocket.py): 100M CALM model, cloned + # streaming, ~7x realtime on 2 CPU cores of the M4 Air (~40ms first chunk). # Voice-cloning weights are HF-gated: accept terms at # huggingface.co/kyutai/pocket-tts then `hf auth login`; a catalog voice # (POCKET_VOICE, default george) is used until then. Dark on Windows unless # VOICE_ENGINE=pocket. pocket-tts==2.1.0 # Semantic intent router (voice/intent.py) — static embeddings, ~1ms on CPU; # without it reflexes fall back to regex only. model2vec==0.8.2 # Google Calendar / Meet (voice/gcal_control.py) — desktop OAuth, no API keys. # One-time consent writes google_token.json (path via GOOGLE_TOKEN_JSON); # needs a desktop OAuth client json at google_oauth.json (GOOGLE_OAUTH_JSON). google-api-python-client==2.198.0 google-auth-oauthlib==1.4.0 google-auth-httplib2==0.4.0 # Email (voice/email_control.py) uses only the stdlib (imaplib/smtplib) — no # new package; set the mailbox creds in .env (IMAP/SMTP host + app password). # Work/business Gmail (voice/gmail_control.py) — REUSES the Google client libs # above (no new package). Multi-account: same google_oauth.json client, a # separate google_gmail_