My working day at the computer used to be code and documentation. Now there's a third stream, and it turned out to be the biggest one: the agent's replies. Claude Code reports every step, explains what it changed, asks clarifying questions and sends summaries. All of it is text, and all of it is read with your eyes, in small terminal font.
By evening you feel it physically. So I put together a pair of my own macOS apps. The first one, SafeYourEye, makes sure my eyes actually get rest. The second one, PromtsMaker, takes part of the load off them: the agent talks to me by voice, and I answer by voice too. Here's how it works for me and how to set it up in ten minutes.
The agent writes more than I can read
With an agent your eyes don't get a break, they work harder. It writes the code, but I read its reports, check diffs and answer questions. Instead of typing text I read it, constantly, in small portions, switching between windows.
Yet most of what the agent writes doesn't need a screen. "Starting", "tests are green", "found two places where this is used, fix both?" can simply be heard. You need the screen for diffs and code; for status and questions, voice is enough.
Hence two fixes: don't let your eyes work without breaks, and move to audio everything that doesn't have to be read.
Half one: SafeYourEye keeps the breaks
Everyone knows the 20-20-20 rule: every 20 minutes, look at something about 20 feet away for 20 seconds. Almost nobody follows it, because 20 minutes fly by at work. Here's what the app does:
- Timer. Counts a work session (5 to 60 minutes) and shows a break window with a 20-second countdown. A window is harder to dismiss than a banner.
- Idle detection. Walk away from the computer and the session doesn't burn: time without keyboard and mouse isn't counted as work.
- Distance and light. Using the camera, it hints when you sit too close to the screen or the room gets dark. Frames are processed on the Mac itself and never leave it.
- Vision checks. Four self-checks on one screen, with history and a PDF export for your doctor. Not a diagnosis, a way to notice a trend.
With an agent the timer turned out to be especially useful. While the agent runs a long task I don't sit staring at the terminal, I take the break. The SafeYourEye window and the agent's summary often arrive at about the same time.
Half two: PromtsMaker gives the agent a voice
PromtsMaker started as a prompt editor: dictate a thought, the app cleans up the text and adds project context. You don't have to use prompts at all, though. Since version 1.4 the app has a bridge to the agent, and that alone is worth installing it for.
Inside PromtsMaker runs a local MCP server. Claude Code connects to it like to any other tool, and the agent gets a mouth and ears:
- say — speak a short line during the work: "starting", "build passed";
- ask_user — ask by voice and wait for a spoken answer: the app starts dictation itself and returns the transcript to the agent;
- report_result — read the summary aloud, while details (diff, command output) stay as text in the panel;
- wait_for_prompt — pick up a new task I dictated in PromtsMaker, without copying it into the terminal.
The agent has one rule: don't read walls of text. One or two sentences aloud; a long result only after "read it all?". Without that rule the first version of the bridge honestly read everything.
I run the bridge live with Claude Code and OpenCode. The protocol is standard, MCP over HTTP, so any agent that can connect MCP servers over HTTP should work. Codex CLI supports such servers, but I haven't tested it with the bridge myself yet.
What it looks like on an exercise bike
My favourite scenario. A long task: rewrite a module, run the tests, fix whatever breaks. No reason to watch it in the terminal.
- Dictate the task into PromtsMaker as a normal sentence. The app strips the "umm"s and fixes terms using the project glossary. Sending it to the agent is ⌘⏎, no window switching.
- Get on the bike. The screen is far away; I don't need to read it.
- The agent works and talks. Short updates are spoken, and I know where it is without looking.
- The agent asks, I answer by voice. At a fork it asks out loud, the app starts dictation, I say the answer, the agent continues.
- The summary is spoken. If it's clear, I dictate the next task right away. I look at the diff later, in one pass, instead of in bits for an hour.
Double benefit: my eyes rest on the far distance instead of the terminal, and my body moves while the agent does work that needs only a couple of spoken answers from me.
Eyes or ears: what moved where
| What's happening | Before | Now | Who helps |
|---|---|---|---|
| Give a task | Type or paste into the terminal | Dictate, ⌘⏎ | PromtsMaker |
| Know which step the agent is on | Watch terminal output | A short spoken line | PromtsMaker, say
|
| Answer a clarifying question | Read it, type an answer | Hear it, answer by voice | PromtsMaker, ask_user
|
| Get the result | Read the whole report | Spoken summary, details as text | PromtsMaker, report_result
|
| Review diff and code | Eyes | Eyes, in one pass at the end | — |
| While the agent works long | Sit at the screen and wait | Break or exercise bike | SafeYourEye |
| Don't overstay at the screen | Hope you remember | Break window every 20 minutes | SafeYourEye |
| Sat too close, room got dark | Don't notice | Camera hint | SafeYourEye |
The code I always review with my eyes, and that's fine. Tool names are for the agent; users never need to know them.
How to set up the same pair
Both apps are for macOS and are in the Mac App Store. PromtsMaker is free (macOS 14+). SafeYourEye runs on macOS 13+, it's free to download, with full features in a Pro subscription ($2.99/month or $19.99/year).
- Install SafeYourEye and set the session length. You can skip camera access: distance and blink hints turn off, the timer keeps working.
- Install PromtsMaker and open your project folder in it.
- Enable the agent bridge. The app starts the server on 127.0.0.1 only, generates an access token and shows a ready-made connect command.
- Connect Claude Code with that command. It looks like this (the app picks the port, the token is added as an Authorization header):
claude mcp add --transport http promtsmaker http://127.0.0.1:8765/mcp
- Tell the agent "wait for tasks from PromtsMaker". On first connect it stores the bridge rules in its own memory; you don't need to add instructions to project files.
- Allow speech recognition when macOS asks. Better do it right away: the agent's first voice question otherwise waits on the system prompt, and you can't answer until it's dismissed.
What's next: read any reply with one key
The bridge works when the agent decides to say something. But sometimes the session runs in a plain terminal, without the bridge, and you'd rather listen to the reply than read it. For that, the next PromtsMaker update adds a global hotkey: it reads the latest Claude Code reply for the project in the open tab, and pressing it again stops. The app strips Markdown first, so you don't hear asterisks and hashes.
It already works in my dev build and will ship in the next App Store version.
Originally published at klukyanov.ru.
Shorter weekly write-ups (in Russian) — on Telegram.
Top comments (0)