A floating, always-on-top teleprompter for macOS. Built for reading scripts during live Zoom calls (or any video call) without losing eye contact with the camera.
- Always-on-top floating window — park it just below or above your webcam
- Hybrid scroll — auto-scroll at adjustable speed; grab the scroll wheel at any time to reposition, auto-scroll resumes from wherever you land
- Fixed reading line at the upper third, with a subtle highlight band
- Saved script library — create, rename, delete, switch; imports from
.txtand.md(markdown formatting is stripped to keep scroll rhythm clean) - Global hotkeys — control play/pause, speed, and position from any app (including Zoom)
- Hidden from screen capture — if you share your full screen, attendees don't see the script (
NSWindow.sharingType = .none)
Defaults (configurable in Settings):
| Action | Global | Local (window focused) |
|---|---|---|
| Play / pause | ⌃⌥Space |
Space |
| Speed up | ⌃⌥= |
— |
| Speed down | ⌃⌥- |
— |
| Jump to top | ⌃⌥0 |
— |
| Jump to reading line | ⌃⌥R |
— |
Global hotkeys require Accessibility permission (System Settings → Privacy & Security → Accessibility).
- macOS (Apple Silicon or Intel)
- Rust toolchain
- Node.js 20+
- pnpm (or npm)
- Xcode Command Line Tools (
xcode-select --install) - Tauri CLI:
cargo install tauri-cli --version '^2.0'
git clone git@github.com:dipeshnx/teleprompter.git
cd teleprompter
pnpm install
pnpm tauri dev # dev build with hot reload
pnpm tauri build # release buildRelease binaries land in src-tauri/target/release/bundle/.
- Launch the app. Grant Accessibility permission when prompted.
- Open Scripts → New (or Import… a
.txt/.mdfile). Paste your text, click Save, then Use. - Drag the window just below or above your webcam.
- Start your Zoom call. Click ▶ or press
⌃⌥Spacewhen ready. - Read, glance at the camera, and pace yourself. Scroll wheel to override position; auto-scroll resumes automatically.
- Does not currently appear over Google Slides / Chromium-based fullscreen presentations. Workaround: use Chrome's "Present in new window" option instead of fullscreen, or a second monitor.
- Unsigned dev builds may lose Accessibility permission across rebuilds.
Tauri v2 · Rust · Svelte 5 · TypeScript · Vite · Vitest · cargo test · objc2-app-kit
Spec and plan live in docs/superpowers/.
Issues and PRs are welcome. See CONTRIBUTING.md for how to set up the dev environment and the testing conventions, and CODE_OF_CONDUCT.md for community expectations. Changes worth noting land in CHANGELOG.md.
Please report vulnerabilities privately — see SECURITY.md.
MIT © Dipesh Nyachhyon