Olive is a minimal floating dictation assistant for macOS that provides seamless voice-to-text transcription with global hotkey support.
- Floating Widget: A minimal, always-on-top floating widget for easy access.
- Voice-to-Text: High-quality voice transcription.
- Global Hotkeys: Control recording from anywhere on your system.
- Model Management: Download and manage transcription models.
- Light & Dark Mode: Adapts to your system's theme.
- Frontend: React, TypeScript, Vite, Tailwind CSS
- Backend: Rust, Tauri
- Audio: CPAL for audio input
- Package Manager: npm
Before you begin, ensure you have the following installed:
-
Clone the repository:
git clone https://github.com/your-username/olive.git cd olive -
Install frontend dependencies:
npm install
-
Run the application in development mode: This will start the Vite development server and the Tauri application.
npm run tauri:dev
To create a production build of the application, run the following command:
npm run tauri:buildThis will generate a .app bundle in the src-tauri/target/release/bundle/macos directory.
To create a .dmg installer, run:
npm run package:dmgThe DMG will be located in src-tauri/target/universal-apple-darwin/release/bundle/dmg/.
.
├── src/ # Frontend source code (React + TypeScript)
│ ├── components/ # React components
│ ├── hooks/ # Custom React hooks
│ ├── services/ # Application services
│ └── main.tsx # Main entry point for the frontend
├── src-tauri/ # Backend source code (Rust + Tauri)
│ ├── src/ # Rust source code
│ │ ├── audio/ # Audio handling logic
│ │ ├── models/ # Transcription model management
│ │ ├── system/ # System-level operations (permissions, shortcuts)
│ │ └── main.rs # Main entry point for the backend
│ └── tauri.conf.json # Tauri configuration
├── public/ # Static assets
└── package.json # Project dependencies and scripts
Contributions are welcome! Please feel free to submit a pull request.
This project is licensed under the MIT License.