Dependencies Reference¶
Runtime dependencies¶
| Package | Version | Purpose |
|---|---|---|
faster-whisper |
>=1.2.1, <2.0 | Speech-to-text via CTranslate2 (Whisper engine) |
piper-tts |
>=1.4.2, <2.0 | Local neural text-to-speech |
pyyaml |
>=6.0, <7.0 | Parses policy.yaml (tool permission rules) |
sounddevice |
>=0.5.5, <1.0 | Audio I/O — microphone capture and speaker playback |
numpy |
>=2.4.6, <3.0 | Numerical operations for audio processing |
The HTTP/SSE server uses only the Python standard library (http.server) — no web framework dependency.
Optional dependencies¶
| Package | Version | Purpose |
|---|---|---|
scipy |
>=1.17.1 | High-quality polyphase resampling for Whisper downsampling. Falls back to a boxcar filter if not installed. |
Install with: pip install -e ".[quality]"
Development dependencies¶
| Package | Version | Purpose |
|---|---|---|
pytest |
>=9.0.3 | Test framework |
ruff |
>=0.15.13 | Linting and formatting |
Install with: pip install -e ".[dev]"
System dependencies¶
| Package | Purpose | Required |
|---|---|---|
| PortAudio | Audio backend for sounddevice | Yes (pre-installed on most Linux desktops) |
| CUDA 12 drivers | GPU acceleration for Whisper | Yes for GPU mode |
nvidia-cublas-cu12 |
CUDA 12 BLAS library (via pip) | Yes for GPU mode |
nvidia-cudnn-cu12 |
CUDA 12 DNN library (via pip) | Yes for GPU mode |
notify-send |
Desktop notifications (libnotify) | Optional |
xdg-open |
Open URLs in default browser | Optional (for conversation viewer) |
External dependencies (not in pyproject.toml)¶
| Component | Purpose | Installation |
|---|---|---|
| OpenCode CLI | LLM backend | Installed by install.py or manually |
| Piper voice models | TTS voice data | Downloaded by install.py from Hugging Face |
| Whisper model weights | STT model data | Downloaded automatically by faster-whisper on first use |
CUDA library path¶
CTranslate2 (used by faster-whisper) requires CUDA 12 runtime libraries. These are installed via pip inside the venv's site-packages, not in the system library path. The run_daemon.sh script adds them to LD_LIBRARY_PATH:
This is why you must use run_daemon.sh (or set LD_LIBRARY_PATH in your service file) instead of running python -m mirach directly for GPU mode.