# Desktop UI PySide6>=6.6 # Audio I/O (mic capture + speaker playback) — cross-platform via PortAudio. # On Linux you may also need the system package: sudo apt install libportaudio2 sounddevice>=0.4.6 numpy>=1.24 # HTTP client to the Bolt desk API requests>=2.31 # Wake-word detection (local, offline after first run) — runs the # custom-trained thunderbolt.onnx model shipped in this repo, same runtime # as the main repo's desk_client/bolt_desk.py (bolt.onnx). First use # downloads openwakeword's feature-extraction sub-models (~few MB, cached # under the package's own resources/ dir afterward) — needs internet once. openwakeword # Offline TTS fallback if ElevenLabs isn't configured or a request fails. # Uses SAPI5 on Windows, NSSpeechSynthesizer on macOS, espeak on Linux # (Linux also needs: sudo apt install espeak-ng). pyttsx3>=2.90 # Global push-to-talk hotkey (PUSH_TO_TALK_HOTKEY). Optional: the pet # degrades to wake-word + tray + click if it's missing or if the session # won't allow a global key hook (most Wayland setups; macOS needs # Accessibility permission). pynput>=1.7 # Optional — only needed for scripts/slice_spritesheet.py (converting a # grid sprite sheet into the per-frame-PNG convention sprite.py expects). # Not imported by the app itself. Pillow>=10.0 # Test runner (tests/ — pure logic, no audio hardware or display needed; # run with QT_QPA_PLATFORM=offscreen). pytest>=8.0