enprompt is a free, menu-bar writing assistant for macOS that turns your ⌥ Option key into a wand. Triple the speed of your typing, dictate with your voice, and turn anything on your screen into the perfect prompt — all without ever leaving the app you're working in.
Two minutes, one Option key: expand a rough draft, dictate an idea aloud, and capture a screen region into a finished prompt.
enprompt is built around one gesture language. Every superpower is bound to the ⌥ key, so you never have to think about shortcuts again — just press Option the way the moment demands.
| Gesture | Superpower | What it does |
|---|---|---|
| ⌥ ⌥ (double-tap) | Enhance any text | Reads the focused text field and expands, shortens, or transforms it with your LLM of choice — then writes the result back in place. Type shorthand like btw the q3 numbers were gr8 and get back a polished sentence. |
| ⌥ hold (1.2s) | Dictate | A live dictation bar appears under your cursor. Speak — the words are transcribed on-device and typed into the field you're focused on. |
| ⌥ ⌥ ⌥ (triple-tap) | Screen → prompt | A crosshair lets you circle any region of your screen — an error message, a design, a chart. enprompt turns it into a prompt, you speak or type an instruction, and the answer lands in your text field. |
| ⌥ + draw | Live canvas | An overlay canvas appears on screen: draw, highlight, or laser-point over anything, perfect for presentations and screen-share annotations. |
| ⌘Z | Instant undo | Reverts the last enhancement back to your original text. |
| Esc | Dismiss | Cancels dictation or the capture flow instantly. |
enprompt treats your text field like an LLM prompt box. You don't have to write full prompts — but when you do, it understands them:
- Expand —
tldr: ship the landing page by friday and add a pricing table→ a complete, structured paragraph. - Transform —
rewrite this as a formal email to my manager→ polite, professional prose, written in place. - Shorten —
cut this to 3 bullet points→ crisp bullets. - Any instruction —
translate to french·make this funnier·turn this into a twitter thread— the focused text is the input, your words are the instruction, and the LLM does the rest.
💡 Safety guard: enprompt only ever activates when ⌥ is pressed alone. If Option is combined with another modifier (⌥⌘, ⌥⇧…), nothing happens — your system shortcuts always win.
The fastest way — one command, straight from GitHub Releases:
curl -L -o ~/Downloads/enprompt.dmg https://github.com/aadityakumarsah/enprompt/releases/download/v1.8/enprompt-1.8.dmg && open ~/Downloads/enprompt.dmg- Download — run the command above (or grab the DMG from Releases).
- Install — drag enprompt into your Applications folder and open it.
- Grant Accessibility — System Settings → Privacy & Security → Accessibility. Needed once so enprompt can see your keystrokes and focused text field everywhere.
- Click the enprompt icon in your menu bar → Settings…
- Pick a provider and paste your API key — it's stored in the Keychain, never in a file.
- Hit Save, then Test connection — the built-in self-test validates key, provider, and vision in one pass.
| Provider | Key looks like | Notes |
|---|---|---|
| Google Gemini | AIza… / AQ… |
Fast, generous free tier; supports vision capture |
| OpenRouter | sk-or-v1… |
One key, every model (Claude, GPT, Llama…) |
| Anthropic | sk-ant-… |
Claude-native, supports vision capture |
| Ollama (local) | type ollama |
100% local & private — free forever, works offline |
🔒 Privacy by default: your API key lives in macOS Keychain, prompts go straight to your chosen provider (or stay on your Mac with Ollama), and there is no telemetry, no analytics, no accounts.
enprompt works fully offline and free forever with Llama models (run locally through the free Ollama engine). Nothing is sent anywhere. A brand-new Mac needs exactly four steps — enprompt guides you through them in Settings → LLM (the "Run locally — free & private" button and the ? buttons open the full guide — install commands, Llama text + vision downloads, disk space and benchmarks — at enprompt.pages.dev/run-locally/):
- Install Ollama (free, ~1 min)
- Visit ollama.com/download and install the app, or run
curl -fsSL https://ollama.com/install.sh | shin the Terminal - Start the Ollama menu-bar app (the little llama icon must be there)
- Visit ollama.com/download and install the app, or run
- Pull the models — one line in the Terminal, or click the buttons inside enprompt's Settings
(Ollama models section) — no terminal needed:
Any Ollama model works (
ollama pull qwen2.5vl:7b # vision — reads your screenshots in ⌥⌥⌥ capture (~6 GB) ollama pull llama3.2 # text — enhance/dictate polishing (~2 GB)
llava,gemma3,qwen3…). Small models = faster on weaker Macs. - Open enprompt → Settings… → LLM → Change → pick Ollama (local) — the server
(
http://127.0.0.1:11434/v1) and API key (ollama, a sentinel — there is no real key) fill themselves. Hit Save. - Pick your models in the "Ollama models" section — enprompt lists everything you pulled and auto-selects the first vision-capable model for ⌥⌥⌥ capture. Done — double-tap ⌥ to enhance.
💡 Not enough RAM/disk? Vision is only needed for screen capture — for pure text enhancement a ~2 GB model (like
llama3.2) is plenty and runs on almost any Mac.
| File | Role |
|---|---|
KeyboardMonitor.swift |
Global CGEvent tap — sees every ⌥ tap/hold system-wide and routes it to the right gesture |
AccessibilityService.swift |
Finds the focused field via AXUIElement, reads & replaces its text, detects Terminal-style edge cases |
LLMClient.swift |
Async client for Gemini, OpenRouter, Anthropic, and any OpenAI-compatible endpoint (incl. Ollama) |
SpeechTranscriber.swift |
On-device dictation transcription |
ScreenCapture.swift / CanvasController.swift |
Region capture for screen→prompt, and the live draw/laser overlay |
KeychainStore.swift |
API key storage via SecItem |
SelfTest.swift |
One-click connection + vision self-test (no hardcoded keys) |
AppState.swift |
Shared state & gesture wiring |
├── enprompt-app/ # Swift package — the macOS app (menu bar, event tap, UI)
└── enprompt-site/ # React + Vite landing page (deployed to enprompt.pages.dev)
cd enprompt-app
./build_app.sh # builds release and signs with your Apple Development identity
open build/enprompt.appReact (Vite + react-router-dom). Routes: / (landing) and /run-locally (Ollama guide). Deploys to Cloudflare Pages from GitHub.
cd enprompt-site
npm install
npm run dev # local dev server with SPA fallback
npm run build # outputs static site to dist/Cloudflare Pages settings: build command npm run build, output directory dist. public/_redirects makes every path serve the app, so deep links like enprompt.pages.dev/run-locally work.
enprompt — your keyboard, upgraded. Free forever. Built for macOS 14+.
⭐ Found it useful? Give the repo a star — it keeps the magic flowing.