A sleek menu bar utility that uses Ollama's AI models to proofread and correct text anywhere on your Mac with a global keyboard shortcut.
- ✨ Global Keyboard Shortcut - Proofread text anywhere (default:
⌘+.). Uses native macOS Carbon HotKeys for zero-latency, beep-free operation. - 🚀 Ollama Integration - Works with any Ollama model (Gemma, Llama, Mistral, etc.)
- 🎯 Menu Bar Utility - Lightweight, always accessible from your menu bar
- ⚡ Real-time Processing - Instant proofreading with streaming output and visual feedback
- 🎨 macOS Native - Built with SwiftUI following Apple's HIG
- 🔧 Customizable - Change models, prompts, and keyboard shortcuts
- 📊 Usage Statistics - Track corrections, time saved, and session history
- 🔌 Connection Health Monitoring - Auto-reconnect and real-time status indicators
- 🎓 Guided Onboarding - Interactive setup wizard for first-time users
- 📋 Multiple Input Methods - Proofread selected text or clipboard content
- 🌿 Resource Efficient - Automatically stops Ollama models when you quit to save RAM
- macOS 14.0 or later (Sonoma and newer)
- [Ollama](
brew install ollama) installed and running - At least one Ollama model pulled (e.g.,
ollama pull gemma3:1b)
- Select text anywhere on your Mac
- Press
⌘+.(or your custom shortcut) - Wait for processing - the menu bar icon shows progress
- Review results - corrected text appears in a dialog
- Copy and close - clicking "Copy Corrected" automatically copies to clipboard and closes the dialog
- Copy Corrected: Copies the proofread text to clipboard and closes the dialog
- Show Differences: Toggle to view side-by-side comparison of original vs corrected text
- Done: Close the dialog without copying
- Ollama URL:
http://127.0.0.1:11434(default) - Model Selection: Choose from available Ollama models
- Keyboard Shortcut: Customize the global hotkey
- Test Connection: Verify Ollama connectivity
You are a text proofreader. Your task is to correct typos and grammar errors in the provided text while strictly preserving the original meaning, formatting, and style.
- Xcode 14.0 or later
- Swift 5.9 or later
- Ollama running locally
# Clone and build
git clone https://github.com/genequ/Proofreader.git
cd Proofreader
# Build release version
./build-app.sh
# The app will be created as Proofreader.appProofreader/
├── Sources/
│ ├── AppState.swift # Main state management
│ ├── ProofreaderApp.swift # App entry point
│ ├── OllamaService.swift # Ollama API integration
│ ├── SettingsView.swift # Configuration UI
│ ├── ProofreadingDialog.swift # Results display
│ ├── OnboardingView.swift # First-run setup wizard
│ ├── OllamaStatusView.swift # Connection status indicator
│ ├── StatisticsView.swift # Usage analytics display
│ ├── UsageStatistics.swift # Statistics tracking
│ ├── ConnectionHealthMonitor.swift # Connection health management
│ ├── ShortcutManager.swift # Keyboard shortcut handling
│ ├── ClipboardManager.swift # Clipboard operations
│ └── ... other views
├── Resources/
│ └── AppIcon.icns # Application icon
├── Package.swift # Swift package configuration
└── build-app.sh # Build script
"No models available"
- Ensure Ollama is running:
ollama serve - Pull at least one model:
ollama pull gemma3:1b
Connection errors
- Check Ollama URL in Settings (default:
http://127.0.0.1:11434) - Verify Ollama is accessible:
curl http://127.0.0.1:11434/api/tags
Keyboard shortcut not working
- The app uses native Carbon HotKeys, which are very robust.
- If it still fails, check
System Settings → Privacy & Security → Accessibilityand ensure Proofreader is enabled.
On first run, macOS may require:
- Accessibility Access: For global keyboard shortcuts
- Input Monitoring: To detect key presses
- Automation: For clipboard access
Grant these in: System Settings → Privacy & Security → Accessibility
- Click menu bar icon → "Change Prompt"
- Edit the instructions as needed
- Click "OK" to save
- Pull the model:
ollama pull <model-name> - Restart Proofreader or click "Refresh" in model selection
- Select the new model from Settings
Supported formats:
command+.(default)control+shift+poption+spacef1throughf12
Contributions are welcome! Please feel free to submit a Pull Request.
- Fork the repository
- Create a feature branch:
git checkout -b feature/amazing-feature - Commit changes:
git commit -m 'Add amazing feature' - Push to branch:
git push origin feature/amazing-feature - Open a Pull Request
This project is licensed under the MIT License - see the LICENSE file for details.
- Built with SwiftUI
- Uses native URLSession for HTTP requests (no external dependencies)
- Inspired by the need for quick, AI-powered proofreading
- Icons from SF Symbols
If you encounter any issues or have questions:
- Check the Troubleshooting section
- Search existing issues
- Create a new issue with details
⭐ Star this repo if you find Proofreader useful!