MIRA
March 21, 2026 · View on GitHub
Prerequisites
- macOS 14.2+ (ScreenCaptureKit process tap support)
- Rust stable (edition 2021)
- Node.js 18+ and npm
- Python 3.10+ (for sidecar build only)
- Xcode Command Line Tools
Build Instructions
1. Bootstrap (sidecar + resources)
A single script builds the pyannote diarization sidecar, fetches SQLite
extensions, and downloads/converts the ONNX models. Everything that needs
Python shares one venv (sidecar-src/.venv).
./scripts/bootstrap.sh
This handles:
- Pyannote sidecar — PyInstaller-bundled diarization binary (requires
pyannote.audio,torch,PyInstaller). A HuggingFace token with access topyannote/speaker-diarization-3.1is required at runtime, not build time. vec0.dylib— sqlite-vec extensionsilero_vad.onnx— Silero VAD v5 modelyolo26n.onnx— YOLO26n face detector, converted from.ptviaultralytics(installed automatically in the venv)
To fetch only resources without building the sidecar:
./scripts/bootstrap.sh --skip-sidecar
2. Install frontend dependencies
npm install
3. Build and run
npx tauri dev # Development mode
npx tauri build # Production build
Runtime Configuration
Set API keys in application settings:
- OpenRouter API key — required for all LLM intelligence
- HuggingFace token — required for pyannote diarization models
macOS Permissions
The app requires Screen Recording and Microphone permissions. Grant these in System Settings → Privacy & Security on first launch.
Known Limitations / Deferred Features
- Voice Activity Detection (Silero VAD): Full Silero VAD is integrated; falls back to RMS energy gating if the ONNX model is unavailable
- Incremental JSON streaming: SSE transport is implemented but observations are delivered atomically, not field-by-field
- Face embedding re-identification (MobileFaceNet): Identity relies on IoU tracking + OCR + TalkNet; MobileFaceNet would add cross-session re-ID
- OCR bounding boxes: Uses index-based position approximation; full CGRect
extraction requires
objc2-core-graphicsbindings not in the dependency graph