Ora is a local-first voice assistant for macOS that puts your privacy first. By default, speech recognition, reasoning, and speech synthesis run on your Mac.
Ora can also use optional cloud providers (for example OpenAI or Anthropic) if you explicitly enable them in Preferences > Providers.
Voice → Parakeet ASR → MLX + Qwen 3 → Kokoro TTS → Voice/UI
↘ (Optional) Cloud LLM ↗
https://github.com/benedict2310/ora/assets/demo.mp4
Note: Video shows Ora managing calendar events via voice commands
- 🔒 Local-First — On-device inference by default using Apple Silicon acceleration
- 🎤 Push-to-Talk — Hotkey activation (⌥Space) with menu bar control
- ⚡ Streaming Pipeline — Live transcription, streaming LLM tokens, early TTS start
- 🤖 Agentic Tools — Calendar, Reminders, Contacts, and System integrations
- 📝 Audit Trail — Every action logged for transparency
- ☁️ Optional Cloud Providers — OpenAI (API key or Codex OAuth) and Anthropic (API key)
- 🔄 Auto-Updates — Seamless updates via Sparkle
Latest Release: Ora (Releases)
- Download
Ora-{version}.dmgfrom Releases - Open the DMG and drag Ora.app to Applications
- Launch Ora and grant requested permissions
- Press ⌥Space to activate
Note: Sparkle auto-updates are intended for the signed release build installed in
/Applications. Developer builds disable update checks.
| Requirement | Minimum | Recommended |
|---|---|---|
| macOS | 26.0 (Tahoe) | Latest |
| Chip | Apple Silicon (M1) | M2 Pro or better |
| RAM | 16GB | 32GB |
- Download from Releases
- Install and launch
- On first run, Ora downloads required on-device models (ASR + LLM + TTS)
- Grant permissions when prompted:
- Microphone — Voice input
- Calendar — Event management
- Reminders — Task management
- Contacts — Contact lookup
- Accessibility — Global hotkey
- Press ⌥Space and start talking!
To use a cloud provider, open Preferences > Providers and connect OpenAI/Anthropic.
# Install dependencies
brew install xcodegen
# Clone repository
git clone https://github.com/benedict2310/ora.git
cd ora
# Build and run
./build.sh runBuild Commands:
| Command | Description |
|---|---|
./build.sh |
Build only |
./build.sh run |
Build and launch |
./build.sh test-onboarding |
Reset local state and launch first-run onboarding flow |
./build.sh test-onboarding --keep-models |
Reset onboarding flow but reuse already-downloaded local models |
./build.sh test |
Run tests |
./build.sh clean |
Clean build artifacts |
./build.sh reset-perms |
Reset macOS permissions |
Ora uses a streaming pipeline architecture for maximum responsiveness:
- Audio Capture → Real-time microphone input via AVAudioEngine
- ASR → FluidAudio Parakeet for streaming speech-to-text
- LLM → MLX Swift with Qwen 3 (on-device), or optional cloud providers (OpenAI/Anthropic)
- Tools → Native macOS integrations (EventKit, Contacts)
- TTS → Kokoro MLX for natural speech synthesis
Tech Stack:
- Language: Swift 6.0 with strict concurrency
- Frameworks: AppKit, SwiftUI, EventKit, Contacts
- ML Runtime: MLX Swift for on-device inference
- Build System: XcodeGen for project generation
See docs/ for architecture docs and implementation stories.
Ora/
├── Ora/ # Main app source
│ ├── Audio/ # Audio capture and VAD
│ ├── ASR/ # Speech recognition (Parakeet)
│ ├── LLM/ # Language model (Qwen 3)
│ ├── Tools/ # Calendar, Reminders, Contacts
│ ├── TTS/ # Text-to-speech (Kokoro)
│ ├── UI/ # AppKit + SwiftUI interface
│ └── Orchestration/ # Core app logic
├── OraTests/ # Unit tests
├── docs/ # Documentation
│ └── stories/ # Implementation stories
├── scripts/ # Build and release scripts
├── project.yml # XcodeGen configuration
└── build.sh # Build helper script
./build.sh testView live logs:
./build.sh logsView specific category:
./build.sh logs --category llmIf permissions stop working after rebuild:
./build.sh reset-permsmacOS TCC tracks permissions by bundle ID + code hash. Every rebuild changes the hash, so you need to reset and re-grant permissions.
Contributions are welcome! Please read our Contributing Guidelines first.
Areas where we'd love help:
- 🐛 Bug fixes and performance improvements
- 📝 Documentation and examples
- 🌍 Internationalization and localization
- 🎨 UI/UX improvements
- 🧪 Additional test coverage
- Fork the repository
- Create a feature branch:
git checkout -b feat/amazing-feature - Make your changes
- Run tests:
./build.sh test - Commit:
git commit -m "feat: add amazing feature" - Push:
git push origin feat/amazing-feature - Open a Pull Request
Ora is source available — you can read and audit the code, but redistribution and commercial use require explicit written permission. See LICENSE for full terms.
© 2026 Benedict Evert / Futurelab Studio. All rights reserved. Contact: benedict.bleimschein@gmail.com
Built with these amazing open-source projects:
- MLX Swift — Apple Silicon ML framework
- FluidAudio — Streaming ASR
- Sparkle — Auto-update framework
- Qwen 3 — Language model
- Kokoro TTS — Text-to-speech
⭐ Star this repo if you find it useful!