Introducing Edyt

I have been building a macOS desktop app called Edyt. It watches for text selections in any application, shows a floating toolbar near your cursor, and lets you rewrite, explain, translate, or run custom AI prompts against the selected text. The result pastes back into the source app. No copy-paste. No switching windows.

Update, November 2026

A lot has changed since I wrote this in May.

  • Windows is back. Edyt runs on Windows 10 and later as well as on the Mac, so the pause I describe below is over.
  • Proofread as you type. Edyt checks each sentence as you finish it, in Mail, Slack, Notes and more, and suggests better wording.
  • More in the toolbar. Alternatives gives you a few versions of a sentence to pick from, and Proofread flags issues without rewriting your sentence. The toolbar opens with Control+Shift+Space.
  • Screen Reading. Drag over any part of the screen to read text from PDFs, pictures and anything else. On Windows, hold Alt and drag.
  • Beyond the desktop. Edyt Web runs in the browser, and there is a Chrome extension.

I have also started writing about what I run into while building it: why beta.10 was older than beta.9 and floating an Electron overlay over full-screen apps.

The rest of this post is as I wrote it in May.

The Problem

Every time I wanted to improve a sentence, I had to select it, copy it, switch to a browser tab, paste it into ChatGPT, wait, copy the result, switch back, and paste. For one sentence it was annoying. For a day of writing it was a constant context switch.

Grammarly fixes grammar and tone, but its tone options are fixed and you cannot define your own. Raycast AI is fast but lives inside a command palette, not at the selection level. ChatGPT and Claude are powerful, but if you want a specific tone you have to describe it again every time you start a new chat.

I wanted a toolbar that appears when I select text, does the work, puts the result back, and follows my exact instructions.

Prompts I Define, Not Presets I Pick From

The three preset actions, Rewrite, Explain, and Translate, ship with sensible defaults, but you can replace the prompt behind any of them with your own. Write exactly how you want the AI to behave: your tone, your terminology, your constraints. There is no dropdown of three tone options. There is a text field where you put whatever instruction you want.

There is also a Use Prompt action that opens a panel with every prompt and template you have, your own saved ones plus a curated library. Pick one, apply it, get the result back. Prompts sync to your account so you build a library that matches how you actually write.

How It Works

Select text in any macOS app. A native observer layer detects the selection via Accessibility APIs and positions a lightweight Electron toolbar near your cursor. The desktop app calls a Go backend that handles the AI processing, sync for rewrites and streaming for explanations and prompts, and pastes the result back. The stack is Electron and React for the desktop, Go for the API, Next.js for the landing page, Supabase for auth and Postgres, and a native Node addon for macOS selection observation and paste.

What I Was Concerned About

The biggest mistake was trying to build for both Windows and macOS at the same time. The observer, the part that watches text selections, is fundamentally different on each platform. I was fixing a bug on one platform and introducing two more on the other. The volume of bugs was eating me alive. I dropped Windows support and focused entirely on macOS. The app shipped faster and the code got cleaner.

Permissions were a harder problem, and not for technical reasons. The app needs Accessibility and Input Monitoring access to detect selected text and paste results back. This is the same level of access that lets an app read and control your entire system. I asked myself: would I trust a tool like this, built by someone I do not know, with that much access?

The honest answer is that I would hesitate too. That hesitation is fair. So I had to think about trust as a design constraint. The onboarding explains what each permission is for, one at a time, only after the user has seen what the app does. The initial flow used to drop people straight into a full screen permission failure before they had seen anything useful. I moved permissions into a guided step that comes after context. You should know what you are giving access to and why.

Where It Stood in May

Edyt is live at edyt.app. The macOS app is downloadable for Apple Silicon. The toolbar does four things: Rewrite, Explain, Translate, and Use Prompt, each configurable with your own prompt text. Login goes through OAuth and results stream back to the app.

There is still work to do. The toolbar appearance rule is invisible to users and nothing explains why nothing happens on an invalid selection. Template discovery is fragmented. Windows support is paused, not abandoned, but it will need a dedicated effort.

Why I Built It

AI writing tools should not live in a browser tab or force you to pick from a list of tones someone else defined. Text editing happens everywhere, in Notion, in Slack, in VS Code, in email, and the AI should show up where you are, follow your instructions, and get out of the way. Edyt is an attempt at that.