Skip to content

Repository files navigation

Recast icon

Recast

Select some text, press a shortcut, get it back better.

Recast panel showing a corrected sentence, already copied, with the retry/template/paste action row

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.

How it works

Panel open with selected text loaded

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

Template picker open with lucide icons

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.

Result streaming in

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.

Templates

Settings Templates tab listing built-in and custom templates

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.

Template editor with the icon picker open, searching for arrow icons

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."
  → 🧪🍡🎈🍪📌🧩🐼🐰🧶🎯🍄🐰🔑🧩🐼🐰🦜🎁🦄🍩💎🧩🎀🌸🐠🎲🎈🦕💎🧸🦀🐰🫧🧩🐼🐰🔑🧩🐼🐰🪩🔮🐬🥑🪩🌙💎🧷🧷

Setup

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.

Wizard welcome step with hotkey recorder

Wizard provider step, connected to Gemini's free tier

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:11434 and 127.0.0.1:1234 and lists whatever models are already loaded.

Settings & appearance

Model tab with provider grid, primary/fallback slots, and a successful connection test

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.

Appearance tab with theme, accent color, and panel translucency controls

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.

Updates tab showing an available update with a structured, grouped changelog

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:

Update window with a structured changelog and an Update & Relaunch button

Privacy

  • 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.json in Recast's own app-config folder and never leaves your Mac. Cancelled and errored runs are never saved. Clear it anytime from Settings → General.

Install

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.

Build from source

npm install
npm run tauri dev     # run locally
npm run tauri build   # produce a signed, notarized app bundle

Requires Node.js, Rust (stable), and Xcode command line tools. macOS only.

Template JSON format

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.

Shortcuts

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.

Full screenshot gallery — every panel state, every settings tab, every wizard step, light and dark

Panel

Panel, empty
Panel, empty

Panel, prefilled
Panel, prefilled

Template picker open
Template picker open

Streaming mid-flight
Streaming mid-flight

Done, dark
Done, dark

Done, light
Done, light

Emojicrypt result
Emojicrypt result

Settings

General, dark
General, dark

General, light
General, light

Templates
Templates

Template editor with icon picker
Template editor with icon picker

Model
Model

Appearance
Appearance

Updates
Updates

About
About

Update window
Update window

Setup wizard

Welcome
Welcome

Connect a model
Connect a model

Pick a default template
Pick a default template

Grant access
Grant access

Try it now
Try it now

About

No description, website, or topics provided.

Resources

Security policy

Stars

0 stars

Watchers

0 watching

Forks

Releases

Packages

Contributors

Languages