For a Mac with Apple silicon, on macOS 15 or later.
localhost:5173
You say it
Callout writes it up
Claude Code fixes it
It’s fixed
Meadowlark is a demo game. It runs live in this page: click it, walk with ←→ and jump with Space. The fix is a real Claude Code run on this bug.
1 sentence
became 2 bug reports. You named two problems, and Callout filed each one.
0:44
from “Fix” to the commit. A real Claude Code run on the bug above.
7 files
of evidence, saved at the key press: the frame, a clip, the console, the game’s state, a save.
0 bytes
of your voice leave your Mac. The speech model runs on it.
One sentence in. A full bug report out.
This is the report from the sentence above. A language model wrote it, and your exact words stay in it. Callout calls a bug report a snag. Each snag is one Markdown file on your Mac.
A title, and how bad it isBlocker, major, minor or polish. The kind, the area and the build come with it.
The momentThe game’s own frame at the key press. The model crops the part you talked about, and counts the console errors.
Steps, expected, actualWhat the model worked out by itself is marked “inferred”.
Where the bug isIf you turn this on, Claude Code reads your project’s code, read-only, and points at the files that likely hold the bug.
Technical detailsEach line says where it came from: the code, the console, the game’s state, a picture, your words, or a guess.
In your wordsWhat you said, word for word, with the audio. The audio never leaves your Mac.
You named two problems in one sentence. So Callout filed two reports.
Okay, the gate won’t open when I come from the left. Also, the coin counter is covering the pause button.
It saw what you saw.
At the key press, Callout saves the evidence from your web game: the frame, a clip of the last seconds, the console errors, the game’s state and a save. These are the real files of the report above. Pick one to look inside.
The game’s own frame, as the game drew it.
Where your mouse was on the game, and what is under it.
The console errors and warnings since the page loaded.
The game’s state, such as the level and the player’s place.
A save of that moment, so whoever fixes the bug can load it.
A clip of the seconds before you pressed the key and while you talked.
~/Callout/attachments/S-1
Console of Meadowlark before the key press at 13:24:04: 2 errors, 0 warnings.
error ×2 (first 13:24:01, last 13:24:02): TypeError: Cannot read properties of undefined (reading 'swing')
TypeError: Cannot read properties of undefined (reading 'swing')
at Gate.push (http://localhost:55026/src/gate.js:61:25)
at step (http://localhost:55026/src/main.js:112:10)
at frame (http://localhost:55026/src/main.js:166:5)
{"game":"meadowlark","version":"0.4.0","level":"dusk-meadow","at":"2026-11-09T21:24:05.232Z","fox":{"x":30.1,"y":8,"facing":"right","on":"the ground"},"coins":{"count":10,"taken":[0,1,2,3,4,5,6,7,8,9]},"gate":"closed"}
How to load it: in Meadowlark (npm run dev, then open the game), run in the browser console:
await window.snagHooks.load(<the saved JSON>). It puts the fox and the coins back where they were, with the gate shut.
Setup is one script tag
The tag gives Callout the frame, the clip and the console. It loads only while the game runs on your Mac at localhost, so your production build never loads it. The game’s state, what is under the mouse and the save come from a small file that you write.
Claude Code fixes the bug in your project’s folder, on your own Claude plan. You see each step live: what it reads, what it edits, what it runs, and the commit. This is the real run for the bug above. It took 44 seconds.
Three ways to start a fix. Click Fix on the report. Say “fix it now” while you describe the bug. Or run callout handoff S-42.
You can talk to it while it works. Say “for forty-one, also make it fade out”, and Claude gets your words at its next step.
Two fixes at the same time. A second fix in the same project works in its own git worktree. Callout merges it back when it ends.
It does not stop for permission. A fix uses Claude Code’s “auto” permission mode: it edits files, runs commands and commits without asking you. You can change the mode in Settings › Fixing the code.
These are the steps of a real Claude Code run on this bug. The waits between steps are cut short.
localhost:5173
Or click the game and walk with ←→.
You have the last word.
Claude says it fixed the bug. You decide if it did. Only a person marks a fix as verified. This is the same game with Claude’s one-line fix in it. Walk into the gate from the left.
This is the fixed report. Click “It works” on it.Signed off. The fix is verified. In the app, the report opens again, and “Fix again” continues in the same Claude Code session.
If it works, click “It works”, press V, or say “forty-one works now”.
If it does not, say “forty-one is still broken”. “Fix again” continues in the same Claude Code session, so Claude remembers what it tried.
It asks before it guesses.
When Claude Code needs a decision from you, its question drops out of the notch. You press the hotkey and answer out loud. Then Claude finishes the fix.
The question is in the notch at the top of this page. Press ⌥⇧S to answer it.Tap “Answer by voice” on the report to answer it.Claude has your answer. It changes one line.
The second bug from your sentence: the coin counter covers the pause button.After your answer, the counter ends 12px left of the pause button. Claude changed one line.
−const right = VIEW_W - MARGIN - PAUSE.r;+const right = PAUSE.x - PAUSE.r - 12;
src/hud.js, commit ceccb99. This is the real change from Claude Code’s run.
Run the whole list by voice.
Press the hotkey and say what must change, in your own words. Each line below is something you can say.
No, that one is Meadowlark.It moves your newest report to the project Meadowlark.
This is critical.It makes the report a blocker.
Add to the last one: it also happens on the phone.It adds that to your newest report.
Forty-one works now.It signs off S-41.
Forty-one is still broken.It opens S-41 again.
Forty-one is the same as thirty-seven.It marks S-41 as a duplicate of S-37.
Send forty-one to Sonnet, max effort.It hands S-41 to Claude Code, with that model and that effort.
Let’s walk Meadowlark.Every report goes to Meadowlark until you say “walk’s over”. Then Callout shows what you found.
Also in Callout.
Any app in a window
No script tag? Callout takes a picture of the window in front, when its app or its title names one of your projects. It never takes a picture of any other window. This report is from TaskBoard, a demo app: the ring shows where the mouse was.
The callout command
You and Claude Code can work the list from a terminal: callout next, callout show S-42, callout fix S-42. With the skill from the first run, say “check my snags” in any Claude Code session.
Your Android phone
This part is optional and needs adb. Callout can add your phone’s screen to a report when one of your own apps is in front. You can also say your bugs into the phone.
Old bugs that come back
If a new bug is an old fixed one that came back, Callout links the two reports, and Claude gets the old fix to look at.
Your voice never leaves your Mac.
Callout runs on your Mac. Whisper turns your voice into text there, and Callout’s server listens only on 127.0.0.1. Callout has no analytics, no crash reporting and no update check.
Stays on your Mac
→Whisper→“the gate won’t open”
The audio of your voice
Whisper, the speech model that hears you
Your bug reports, one Markdown file each, in ~/Callout
The saves of your games
The name or title of any app that is not one of your projects
Callout keeps ~/Callout in git and commits each change, so you have the history of every report.
OpenRouter
Only when it writes your bug reports
The text of what you said, the pictures of the moment, and the game’s console lines and state. Also what Callout knows of your projects (names, descriptions, word lists and areas) and the ids and titles of your recent snags. Never the audio of your voice. Never a game’s save.
Anthropic, through Claude Code
With your own Claude Code login
When it reads your code and when it fixes a bug: the project code that Claude Code reads, and your bug reports. If you pick Claude Code to write the reports, it gets what OpenRouter would get.
Polar
For the license, about once a day
Your license key, and your Mac’s name as the name of the activation. Without internet, Callout keeps working.
Hugging Face
One time, in the first run
It serves the speech model: one download of 488 MB.