One shortcut. One diff. Zero cloud middlemen.
Rewrite selected text wherever you type — privately, in place, on Mac or Windows.
Website · Latest release · Issues
Most writing assistants make you leave the app, paste text into a cloud editor, and trust an invisible replacement. Polishly keeps the useful part and removes the ceremony:
Select text → press one hotkey → review the diff → Accept or Copy
Polishly is a free, open-source companion that sits in the menu bar on Mac or the system tray on Windows. It only reads the selection after you invoke it, sends the text directly to the AI provider you choose, and shows exactly what will change before anything is replaced.
- In-place rewrites. Work in Notes, Mail, Slack, Teams, browsers, and other accessible text fields.
- Review before replace. Polishly computes a word-level diff locally so you can see the edit before accepting it.
- Bring your own key. Use OpenAI, Anthropic, Groq, Cerebras, or the offline demo flow.
- No Polishly cloud. There is no Polishly rewrite backend, account, subscription, or text warehouse in the middle.
- Explicit by design. Nothing is read or sent until you press the shortcut.
- Native companions. SwiftUI + AppKit on Mac; a Windows tray companion with UI Automation, guarded clipboard fallback, and Credential Manager storage.
Instruction: make it clearer
Before: i have sent the mail let see what he will tell
After: I've sent the email — let's see how he responds.
Instruction: translate to Spanish
Before: I think we should move the meeting to next week.
After: Creo que deberíamos posponer la reunión para la próxima semana.
The important part is not a particular tone. It is the small loop: invoke, inspect, decide.
| Platform | Status | Shortcut | Download / build |
|---|---|---|---|
| macOS 14+ | Release build | ⌃⌥Space |
Download the latest DMG |
| Windows 10+ | Preview companion | Ctrl + Shift + P |
Download source ZIP · Build instructions |
The Mac release is signed and notarized. The Windows companion is available as a source preview while the signed Windows installer package is being prepared.
- Download the latest
.dmgfrom Releases. - Drag
Polishly.appinto/Applicationsand open it. - Grant Accessibility access in System Settings → Privacy & Security → Accessibility.
- Open Settings, choose a provider, and paste your API key — or stay in Demo mode.
- Select text anywhere and press
⌃⌥Space.
The Windows companion is a native tray app. It stores keys in Windows Credential Manager and uses UI Automation with a guarded clipboard fallback where needed.
git clone https://github.com/kiranreddi/polishly.git
cd polishly
dotnet build windows/Polishly.Windows.sln
dotnet run --project windows/src/Polishly.App/Polishly.App.csprojOn Windows, open Settings, choose your provider, paste the key, and press Save settings. Select text in a supported field and press Ctrl + Shift + P to review a rewrite.
The app is free. You bring the provider key and pay only the provider if you choose a paid plan.
| Provider | Good starting point | Key |
|---|---|---|
| Groq | Fast free-tier experiments; no card is required for signup | Starts with gsk_ |
| Cerebras | Very fast inference and generous trial access | Provider console |
| OpenAI | OpenAI models | Provider console |
| Anthropic | Claude models | Provider console |
| Demo mode | Try capture → diff → accept without a network request | No key |
- Open console.groq.com/keys and create an account.
- Select Create API Key, name it
polishly, and copy it immediately. - In Polishly, open Settings → AI Provider, choose Groq, and paste the key.
- Save the settings, select text, and invoke the shortcut.
Provider free tiers have their own rate limits and policies. Check the provider console for current limits; Polishly never bills you.
Requires macOS 14+, Xcode, and XcodeGen.
brew install xcodegen
git clone https://github.com/kiranreddi/polishly.git
cd polishly
xcodegen generate
xcodebuild -project Polishly.xcodeproj -scheme Polishly -configuration Debug buildFor a distributable Mac build:
./scripts/package-release.shThis creates dist/Polishly.app and dist/Polishly-1.0.0.dmg.
Requires the .NET 10 SDK. The solution and companion projects are under windows/.
dotnet build windows/Polishly.Windows.sln
dotnet run --project windows/src/Polishly.App/Polishly.App.csproj -- --demo-rewrite --text "a rough sentence to improve"The demo command exercises the headless rewrite path without an API key. The full tray, hotkey, and UI Automation experience needs a real Windows host.
Mac tests:
xcodegen generate
xcodebuild -project Polishly.xcodeproj -scheme Polishly -configuration Debug testWindows tests use the repository's lightweight runners:
dotnet run --project windows/tests/Polishly.Core.Tests/Polishly.Core.Tests.csproj
dotnet run --project windows/tests/Polishly.Platform.Tests/Polishly.Platform.Tests.csproj
dotnet run --project windows/tests/Polishly.AppCompatibility.Tests/Polishly.AppCompatibility.Tests.csprojThe Windows CI workflow runs the Release build, all three test assemblies, and the demo rewrite path on windows-latest.
- Capture — Accessibility on Mac or UI Automation on Windows reads the selected text only after the hotkey.
- Rewrite — The configured provider streams a response directly to the app.
- Diff — Polishly computes a local word-level diff.
- Replace — Accept writes the approved result back into the active field; Copy leaves the original untouched.
Sensitive apps and password fields are guarded. API keys stay in macOS Keychain or Windows Credential Manager rather than plaintext preferences.
Sources/ macOS app, providers, diff engine, state machine
windows/src/ Windows companion, core, providers, platform adapters
windows/tests/ Windows unit and compatibility runners
website/ Product site and platform download page
docs/ Screenshots, demo media, and planning notes
Polishly has no rewrite server. When you invoke a rewrite, the selected text goes from your device directly to the provider configured in Settings using your key. Nothing is sent before invocation, and the source is MIT licensed so you can inspect the workflow yourself.
Issues, product feedback, screenshots, and pull requests are welcome. If you find a platform-specific problem, include:
- operating system and version;
- Polishly version or commit;
- the host app where it happened;
- whether the issue occurred during capture, streaming, diff review, or replacement.
Please do not paste API keys or private text into issues.
