README.md
March 3, 2026 · View on GitHub
Poli
AI-powered writing tools that work in every app.
100% on-device. Free. Private. No API keys.
Features • Installation • Usage • Build • Contributing • License
https://github.com/user-attachments/assets/3b20d222-a9f5-49c5-ab48-9fc1b399b331
Poli is a lightweight macOS menu bar app that gives you system-wide writing tools — proofread, rewrite, summarize, translate, and more — powered entirely by Apple's on-device Foundation Models. It works in every app, including Electron apps like Slack, Teams, Discord, and WhatsApp.
Features
Fix
- Proofread & fix spelling and grammar
- Diff view showing exactly what changed
Rewrite
- Professional, Casual, Friendly, Formal, Creative, Concise
Transform
- Summarize, Expand, Key Points
Translate
- Spanish, French, German, Chinese (Simplified), Japanese, Korean
Custom Prompts
- Save up to 10 custom writing instructions for quick reuse
What makes Poli different
- Completely on-device — Uses Apple Foundation Models. Zero cost, total privacy, works offline.
- Works everywhere — Including Electron apps (Teams, Slack, Discord) via Accessibility API + paste fallback.
- Keyboard-shortcut-first — Select text, press the hotkey, pick a style. No right-click menus.
- Tone detection — Detects the tone of your text before rewriting so you can make an informed choice.
- Context-aware suggestions — Automatically detects if you're writing an email, chat message, code comment, etc. and suggests relevant styles.
- History — Browse and reuse past transformations.
- Customizable hotkey — Change the global shortcut to whatever you prefer.
Requirements
- macOS 26.0 or later
- Apple Silicon Mac
- Accessibility permission — Poli reads selected text from the frontmost app and writes the result back using the macOS Accessibility API. Without it, Poli cannot detect what you've selected or replace it. This is the same API used by password managers and text expanders. Your text never leaves your Mac.
Installation
Download
Download the latest .dmg from the Releases page.
Homebrew
brew tap luchi0208/poli
brew install --cask poli
Usage
- Grant Accessibility permission — Poli needs this to read selected text and replace it. You'll be prompted on first launch.
- Select text in any app.
- Press the hotkey (default:
Control + Option + C). - Pick a writing style from the popup.
- Review the result and click Replace (
Cmd + R) or close withEsc.
Pick a writing style — recent styles appear at the top
Review changes with word-level diff before replacing
You can also access Poli from the menu bar icon or via Services (right-click > Services).
Keyboard Shortcuts
| Shortcut | Action |
|---|---|
⌃⌥C | Trigger Poli (customizable in Settings) |
1–9 | Quick-select a style by number |
↑ ↓ | Navigate the style list |
Return | Confirm selected style |
⌘R | Replace text with result |
⌘E | Rewrite (retry with same style) |
⌘C | Copy result to clipboard |
Esc | Close picker or result window |
Building from Source
Poli uses XcodeGen to generate the Xcode project.
# Install XcodeGen if you haven't
brew install xcodegen
# Clone the repo
git clone https://github.com/luchi0208/Poli.git
cd poli
# Generate Xcode project
xcodegen generate
# Open in Xcode
open WritingAssistant.xcodeproj
Build and run the WritingAssistant scheme targeting macOS.
Note: Accessibility permission is tied to the binary path. Replacing the
.appbundle revokes it and requires re-granting in System Settings > Privacy & Security > Accessibility.
- App Sandbox disabled — required for cross-app Accessibility API access and CGEvent posting.
Contributing
Contributions are welcome! Please open an issue first to discuss what you'd like to change.
- Fork the repo
- Create your feature branch (
git checkout -b feature/my-feature) - Commit your changes
- Push to the branch (
git push origin feature/my-feature) - Open a Pull Request
License
MIT © 2026 Luan Nguyen