Rewrite anything, instantly.
AI-powered text rewriter that lives in your menu bar. One global shortcut to transform any text on your clipboard. Powered by Groq for lightning-fast results.
Shortcut → Clipboard → Rewrite → Copy. Done.
Download the App · View Releases · Report Issue
Built by Ajay Kumar
Trigger Read Clipboard AI Rewrite Copy
─────────── ──▶ ─────────────── ──▶ ─────────────── ──▶ ───────────────
Press global Morph reads your Groq rewrites One click to
shortcut from clipboard content with your custom copy the result
any app automatically system prompt back to clipboard
- Trigger — Press
⌘+Shift+Mfrom anywhere on your system - Rewrite — Morph reads your clipboard, sends it to Groq with your custom system prompt
- Copy — One click copies the rewritten text back to your clipboard
Download and install Morph from the landing page or releases, then follow the steps below.
- Go to console.groq.com and create an account
- Navigate to API Keys and create a new key (starts with
gsk_...) - Copy the API key
- Open Morph
- Click the gear icon (⚙️) to open Settings
- Paste your Groq API key
- (Optional) Customize your System Prompt — this controls how text is rewritten
- (Optional) Change the Model (default: Llama 3.3 70B)
- (Optional) Change the Global Shortcut (default:
⌘+Shift+M) - Click Save Changes
- Copy any text to your clipboard (⌘+C)
- Press
⌘+Shift+M— Morph appears with your text - Click Rewrite (or press
⌘+Enter) - Click Copy to grab the result
- Paste wherever you need it (⌘+V)
Morph automatically hides when you press the shortcut again, or you can close it normally.
| Feature | Description |
|---|---|
| Global Shortcut | Trigger from any app without switching windows (⌘+Shift+M) |
| Clipboard Auto-Read | Automatically reads clipboard content when activated |
| Streaming Responses | Text streams in as the AI writes — no waiting for the full response |
| Custom System Prompt | Set your own instructions for how text should be rewritten |
| Multiple Models | Choose from Llama 3.3 70B, Llama 3.1 8B, Mixtral 8x7B, Gemma 2 9B |
| Local History | Every rewrite is saved in a local SQLite database |
| One-Click Copy | Copy the rewritten text back to clipboard instantly |
| Fully Local | No accounts, no cloud storage — your API key and history stay on your machine |
For contributors working from the source repo.
- Node.js 20+
- npm
npm install
npm run electron:dev # Start Electron + Vite in dev modenpm run dev # Vite dev server only
npm run build # Production build (renderer)
npm run electron:compile # Compile Electron TypeScript
npm run electron:dev # Dev mode (Vite + Electron)
npm run electron:build # Production build + packageelectron/ Main process (Node.js)
├── main.ts Window management, IPC, global shortcut, single-instance lock
├── preload.ts Secure contextBridge IPC exposure
├── config.ts JSON config persistence in userData
├── database.ts SQLite setup and CRUD (better-sqlite3)
└── groq.ts Groq API streaming calls (API key stays in main process)
src/ Renderer (React)
├── App.tsx Root component, IPC listeners
├── components/ RewriteView, SettingsDialog, HistoryPanel
├── stores/ Zustand state management
└── types/ TypeScript declarations
- API key in main process — Never exposed to the renderer (browser context)
- No embedded HTTP server — Vite produces static files loaded via
file://in production - better-sqlite3 — Synchronous, fast, runs in main process, results passed via IPC
- Single instance lock — Prevents duplicate app windows
Pushing a version tag triggers the release pipeline automatically:
git tag -a v0.2.0 -m "Release v0.2.0"
git push origin v0.2.0The GitHub Actions workflow builds for:
- macOS — Apple Silicon (arm64) + Intel (x64) → DMG + ZIP
- Windows — x64 → EXE installer
Artifacts are published to GitHub Releases.
The landing page (docs/index.html) is auto-deployed to GitHub Pages on pushes to main that modify the docs/ directory.
Built with Electron, React, and Groq.
Rewrite anything, instantly.