Recast is a small macOS utility for rewriting text wherever you're typing. Press a global hotkey and a translucent panel opens over whatever app you're in, with your selected text already loaded. Pick a template, watch the rewrite stream in, and it's on your clipboard the moment it finishes — press ⌘↩ and Recast types it back into the field you were just working in.
Default hotkey: ⌥Space. Every shortcut in the app can be changed in Settings → General.

1. Select text, press the hotkey
Recast grabs whatever's selected in any app and opens right there. No selection? Just type.

2. Pick a template
Tab opens the list, then just type to search it. The ones you use most rise to the top on their own.

3. It streams in, already copied
The rewrite lands on your clipboard the instant it's done — no extra step to remember.
If a request gets rate-limited, Recast retries once on your fallback model automatically, and tells you it did with a small "via fallback" badge.
Close the panel mid-sentence and your text is waiting for you next time — unless you've selected something new, which takes priority. And you never need the mouse: arrow keys move between the top row, the input and the result actions.
11 built-in templates ship across four categories — Fix, Professional, Rework, and Fun — covering grammar fixes, business-formal rewrites, dev-speak, concise cuts, expansion, translation, and a few just for fun (Kawaii, Ancient tone, Corporate jargon).
Write your own alongside them. A custom template is instructions for how to rewrite the text, an advanced message template for the rare case you need to change how that text is sent to the model, and a temperature slider — with a live-test box right in the editor so you can see the output before you save anything.
Every template gets an icon from a searchable picker with 1,700+ Lucide icons (lucide.dev/icons), or you can drop in any emoji or short text instead. Templates export to plain JSON with one click and import through the same panel, so sharing one with a teammate is a copy-paste.
Emojicrypt is the odd one out — a reversible cipher instead of an LLM call. Run text through it once to encode, run the result through again to get the original back. Two Recast users can swap messages that look like nonsense to anyone else:
"Meet me at the usual spot at noon."
→ 🧪🍡🎈🍪📌🧩🐼🐰🧶🎯🍄🐰🔑🧩🐼🐰🦜🎁🦄🍩💎🧩🎀🌸🐠🎲🎈🦕💎🧸🦀🐰🫧🧩🐼🐰🔑🧩🐼🐰🪩🔮🐬🥑🪩🌙💎🧷🧷
A five-step wizard runs on first launch — connect a model, pick a default template, grant Accessibility, and try the real hotkey on a sample sentence before you're dropped into the app.
Three ways to connect a model:
- Free with Google — paste a free Gemini API key from AI Studio, no card required, and optionally add a free OpenRouter model as an automatic fallback for when Gemini is busy.
- Bring your own key — OpenAI, Anthropic, DeepSeek, Kimi, Qwen, GLM, MiniMax, OpenRouter, or any OpenAI/Anthropic-compatible endpoint.
- Run it on this Mac — point Recast at a local Ollama or LM Studio server for fully offline, private rewrites with no key at all. Recast probes
localhost:11434and127.0.0.1:1234and lists whatever models are already loaded.
Settings has six tabs: General (hotkeys, launch at login, whether results copy themselves, where your config lives), Templates, Model (the provider grid above, plus primary and fallback slots you can swap in one click, with a one-click connection test), Appearance, Updates, and About.
Every shortcut the panel uses is listed under General and can be changed — click one and press the keys you want. If two actions end up sharing a combination, both rows say so.
Light, dark, or auto — Recast follows your system unless you pin it. Three accent colors (Blue Pencil, Graphite, Verdigris) and a panel-translucency slider that goes from airy to dense, with a live preview.
Recast checks for updates in the background and opens this window the moment one's found — or check manually from Settings → Updates. Either way, the changelog renders as grouped Added/Fixed/Improved sections instead of a raw release-notes dump:
- API keys are stored in the macOS Keychain, never in a plain config file.
- Recast doesn't phone home. There's no telemetry, no analytics, no crash reporting.
- Everything runs locally except the actual rewrite request, which goes straight from your Mac to whichever provider you configured. Recast never sees it.
- The only other network calls are update checks — automatic in the background (toggle it off in Settings → Updates) or manual via "Check for updates" in that same tab.
- The panel's transform history (⌘Y) — your last 20 transforms — is written to a local
history.jsonin Recast's own app-config folder and never leaves your Mac. Cancelled and errored runs are never saved. Clear it anytime from Settings → General.
Download Recast for macOS — or grab it from Releases. Open the DMG and drag Recast to Applications. On first launch macOS will ask for Accessibility permission, which is what lets Recast read your selection and paste results back; the setup wizard walks you through it.
Recast keeps itself up to date after that, and you can always check by hand from the panel's menu or Settings → Updates.
npm install
npm run tauri dev # run locally
npm run tauri build # produce a signed, notarized app bundleRequires Node.js, Rust (stable), and Xcode command line tools. macOS only.
Custom templates are validated JSON objects. Export any custom template from Settings → Templates to see the exact shape, or write one by hand:
{
"id": "pirate",
"version": 1,
"name": "Pirate",
"icon": "lucide:skull",
"category": "fun",
"kind": "llm",
"system": "You are a text-rewriting engine that rewrites the input in the voice of a pirate, without adding commentary.",
"user": "{{input}}",
"params": { "temperature": 0.7 },
"author": "you"
}id must be 2–32 lowercase letters, digits, or hyphens and can't collide with
a built-in template. user must contain the {{input}} placeholder.
category is one of fix, professional, rework, fun, or custom.
icon is either lucide:<name> for any icon in
lucide.dev/icons, or a plain emoji/text string.
Paste the JSON into Settings → Templates → Import.
While the panel is open:
| Shortcut | Action |
|---|---|
⌥Space |
Open Recast with your current selection (works anywhere on macOS) |
Tab |
Take the offered text, or open the template list |
↑ ↓ |
Move between the top row, the input and the result actions |
← → |
Move along whichever row you're on |
⌘T |
Open the template list — then just type to search it |
⌘Y |
Transform history — your last 20 results |
⌘L |
Choose a target language (templates that translate) |
⌘R |
Retry the last run |
⌘+ |
Run again, longer |
⌘− |
Run again, shorter |
⌘↩ |
Paste the result back where you were |
⌘C |
Copy the result |
⌘, |
Open Settings |
Every one of these can be remapped in Settings → General → Panel shortcuts.

















