macOS Native Installation¶
Native macOS setup with full Metal GPU acceleration for optimal performance.
π Recommended for macOS This setup provides ~10x better performance than Docker by utilizing Metal GPU acceleration.
Prerequisites¶
- macOS 12 Monterey or later
- 8GB+ RAM (16GB+ recommended)
- 10GB free disk space
- Homebrew installed
Quick Start¶
- Run the setup script:
- Start all services:
- Install agent-cli:
- Test the setup:
What the Setup Does¶
The setup-macos.sh script:
- β Checks for Homebrew
- β
Installs
uvif needed - β Installs/checks Ollama (native macOS app)
- β Installs Zellij for session management
- β Prepares Wyoming service runners
Services Overview¶
| Service | Implementation | Port | GPU Support |
|---|---|---|---|
| Ollama | Native macOS app | 11434 | β Metal GPU |
| Whisper | Wyoming MLX Whisper | 10300 | β Apple Silicon MLX |
| Piper | Wyoming Piper (via uv) | 10200 | N/A |
| OpenWakeWord | Wyoming OpenWakeWord | 10400 | N/A |
Note: Whisper uses wyoming-mlx-whisper with
whisper-large-v3-turbofor near real-time transcription on Apple Silicon.
Session Management with Zellij¶
The setup uses Zellij for managing all services in one session:
Starting Services¶
Zellij Commands¶
Ctrl-O d- Detach (services keep running)zellij attach agent-cli- Reattach to sessionzellij list-sessions- List all sessionszellij kill-session agent-cli- Stop all servicesAlt + arrow keys- Navigate between panesCtrl-Q- Quit (stops all services)
Manual Service Management¶
If you prefer running services individually:
# Terminal 1: Ollama (native GPU acceleration)
ollama serve
# Terminal 2: Whisper (CPU optimized)
scripts/run-whisper.sh
# Terminal 3: Piper (Apple Silicon compatible)
scripts/run-piper.sh
# Terminal 4: OpenWakeWord (macOS compatible fork)
scripts/run-openwakeword.sh
Why Native Setup?¶
- 10x faster than Docker - Full Metal GPU acceleration
- Better resource usage - Native integration with macOS
- Automatic model management - Services handle downloads
Troubleshooting¶
Terminal-notifier Popup Issues¶
- Ensure Settings > Notifications > terminal-notifier > Allow Notifications is enabled.
- For a persistent βListeningβ¦β badge, set the Alert style to Persistent (or choose Alerts on macOS versions that still offer Alert/Banner). This keeps the recording indicator visible while other notifications still auto-dismiss automatically.
Ollama Issues¶
# Check if Ollama is running
ollama list
# Pull a model manually
ollama pull gemma3:4b
# Check Ollama logs
tail -f ~/.ollama/logs/server.log
Service Port Conflicts¶
uv/Python Issues¶
Zellij Issues¶
# Kill stuck sessions
zellij kill-all-sessions
# Check session status
zellij list-sessions
# Start without Zellij (manual)
# Run each script in separate terminals
Memory/Performance Issues¶
- Close other apps to free RAM
- Check Activity Monitor for high CPU/Memory usage
- Services will automatically download required models
Alternative: Docker¶
If you prefer Docker despite performance limitations:
- Docker Setup Guide
- Note: ~10x slower due to no GPU acceleration