A free, open-source teleprompter for Windows and macOS that follows your voice. Your script sits in a small bar right under your webcam, highlights each word as you say it, and stays hidden from screen sharing and recordings (on macOS 15 and later some apps can still capture it; see below).
- Follow my voice: offline speech recognition (whisper.cpp) highlights where you are. Works in ~100 languages, including mixed-in English words.
- Scroll while I talk: scrolls at your speed while you speak and pauses when you stop. No speech model needed.
- Bar under the webcam, always on top (even over fullscreen slides). On Windows the bar and the Goldfish window are hidden from screen sharing and recordings. On macOS 15 and later some screen recorders and meeting apps can still capture them, so for now share a single window (e.g. your slides), not your whole screen.
- Script library: paste text or import
.docx,.txt,.md. The language is detected from the text. - Controls: global shortcuts, mouse/trackpad scroll on the bar, and a phone remote (scan a QR code, same Wi-Fi).
- Private: audio never leaves your computer. No account, no analytics.
Download the latest installer from Releases: .exe for Windows, .dmg for Apple Silicon Macs.
The builds are not code-signed yet, so the first launch needs one extra step:
- Windows: SmartScreen → More info → Run anyway.
- macOS: open the app once, then System Settings → Privacy & Security → Open Anyway.
For the same reason, on a Mac Goldfish shows a notice when an update is out instead of updating itself.
On first use of Follow my voice Goldfish downloads a speech model (574 MB for the best one, once).
- Pick or paste a script, check its language (top right).
- Choose Follow my voice or Scroll while I talk, press Start, and start talking.
| Shortcut (while presenting) | Windows | macOS |
|---|---|---|
| Pause / resume | Ctrl+Shift+Space | Cmd+Shift+Space |
| Back / forward one line | Ctrl+Shift+Up / Down | Cmd+Shift+Up / Down |
| Slower / faster (scroll mode) | Ctrl+Shift+Left / Right | Cmd+Shift+Left / Right |
| Hide / show the bar | Ctrl+Shift+H | Cmd+Shift+H |
All shortcuts can be changed in Settings. Use headphones in calls if you use Scroll while I talk, otherwise other people's voices from your speakers also scroll the bar.
Presenting with Keynote? Turn on Allow Mission Control, Dashboard and others to use screen in Keynote → Settings → Slideshow so the bar stays visible over a full-screen slideshow.
Requires Node.js 22+.
npm install
npm start # run the app
npm test # tracker / text tests
npm run dist # build an installer for the current OS into dist/GOLDFISH_TEST_AUDIO=path/to/speech.wav npm start feeds a recording to the bar instead of the microphone.
How it fits together:
| File | Role |
|---|---|
main.js |
Windows, library/settings storage, shortcuts, model download, phone remote server |
whisper.js |
Speech engine (whisper.node) in a separate process: Vulkan on Windows, Metal on Mac, CPU fallback |
src/script.js |
Tokenizing, voice position tracking (alignment of what was heard against the script), language guess |
src/bar.* |
The bar: mic capture, voice activity, transcription loop, highlighting |
src/index.html, app.js, style.css |
Library, editor and settings |
src/remote.html |
Phone remote page |
Push a version tag; GitHub Actions builds Windows and macOS installers into a draft release, which you then publish. Published releases are picked up by the app's auto-updater.
npm version patch && git push --follow-tagsOptional, but removes the first-launch warnings:
- macOS: Apple Developer Program ($99/year). Add repository secrets
CSC_LINK(base64 .p12),CSC_KEY_PASSWORD,APPLE_ID,APPLE_APP_SPECIFIC_PASSWORD,APPLE_TEAM_ID, and remove"identity": "-"frompackage.json. A signed Mac build can also update itself: remove the macOS notice-only branch ofcheckUpdates()inmain.js. - Windows: any code signing certificate via
WIN_CSC_LINK/WIN_CSC_KEY_PASSWORD, or Azure Trusted Signing.
Then uncomment the matching env lines in .github/workflows/release.yml.
MIT