Speaker notes that float above your slides — and stay off the shared screen.
A small native macOS app built with SwiftUI + AppKit.
When you present over Zoom, Meet or Teams with a single screen, your notes have nowhere to go: put them in a window and the audience sees them too, put them on paper and you keep looking away. Stealth Notes is a teleprompter-style overlay for that situation — your notes float above the slides (full-screen apps included), and the windows are flagged so screen sharing leaves them out.
- Floating overlays — borderless cards above every window and Space, including full-screen apps. Open several notes at once; each remembers its position and size.
- Kept out of screen sharing — overlays use
NSWindow.sharingType = .none, which conferencing apps and screenshots respect. See Limitations for what this does not cover. - Sections for talks — split a note with a line containing only
---and page through it with global hotkeys (⌃⌥→/⌃⌥←). The overlay shows a progress bar, dots and the current step's heading. - Click-through by default — overlays never steal clicks from your slides. Hold a key (⌘ by default) to drag, scroll or close them; the border lights up while they are interactive. No Accessibility permission is required.
- Markdown — headings, lists, quotes, inline styles and code blocks render in overlays; the editor has syntax highlighting and an Edit ⇄ Preview toggle (
⌘E). - Plain files — notes are
.txtfiles in~/Library/Application Support/StealthNotes/Notes/, saved as you type. Import.md/.txtwith the button or by dropping files onto the window. - Native UI — sidebar manager window, menu bar item, standard Settings window (appearance, text size, background/text opacity, fonts including bundled JetBrains Mono).
Requires macOS 14 Sonoma or later and Xcode (or the Xcode Command Line Tools) with Swift 5.9+.
git clone https://github.com/Junk-debug/stealth-notes.git
cd stealth-notes
./build.sh --install./build.sh builds Stealth Notes.app in the repo folder; --install also copies it to /Applications.
The app is ad-hoc signed, not notarized. On first launch macOS will refuse to open it: right-click the app → Open, or allow it in System Settings → Privacy & Security.
- Open Stealth Notes and write your notes in the editor (Markdown works).
- Separate the parts of your talk with
---lines. - Click the eye button in the toolbar (or use the menu bar icon) to float the note.
- Start sharing and page through sections with
⌃⌥→/⌃⌥←.
| Shortcut | Action | Scope |
|---|---|---|
⌃⌥N (configurable) |
Show / hide all overlays | Global |
⌃⌥→ / ⌃⌥← |
Next / previous section | Global |
Hold ⌘ (configurable) |
Make overlays interactive (or click-through, if you flip the mode) | Global |
⌘N |
New note | Manager window |
⌘E |
Toggle Edit / Preview | Manager window |
sharingType = .noneis a request to capture APIs, not a guarantee. Video-call apps generally respect it, but behavior depends on the capturing app and macOS version — some tools that use ScreenCaptureKit directly (e.g. QuickTime or OBS display capture) have been reported to record such windows on macOS 15. Do a test share before a real talk.- It only affects software capture on this Mac. A camera pointed at the screen sees everything.
- Global hotkeys can clash with other apps that register the same combination; pick another one in Settings if a shortcut does nothing.
Stealth Notes is built for presenters: talks, demos, webinars, recorded walkthroughs — situations where speaker notes are normal and expected. Please don't use it where outside notes are not allowed, such as exams, proctored tests or interviews that ask you not to use them.
The interesting parts, if you are reading the code:
- Overlay windows (
Overlay/OverlayManager.swift) — non-activatingNSPanels at.statusBarlevel with.canJoinAllSpaces+.fullScreenAuxiliary, so they sit above full-screen apps without taking focus from them. - Hold-to-interact without Accessibility permission — instead of a global
flagsChangedmonitor (which needs the permission), a timer pollsCGEventSource.flagsState(.combinedSessionState)and togglesignoresMouseEventson the panels. - Global hotkeys (
Support/HotKeyCenter.swift) — CarbonRegisterEventHotKey, which works while other apps are frontmost and needs no permissions. - Markdown (
Markdown/) — a small line-based parser feeding SwiftUI views for overlays, and regex highlighting on anNSTextViewfor the editor. - No Xcode project — it is a plain Swift package;
build.shassembles the.appbundle (binary,Info.plist, icon, fonts loaded viaATSApplicationFontsPath) and ad-hoc signs it.
Package.swift Swift Package Manager manifest
build.sh builds, signs and optionally installs Stealth Notes.app
Sources/StealthNotes/
App/ @main app, scenes, menu bar
Models/ Note + NotesStore (plain .txt files on disk)
Manager/ main window: sidebar, editor, import
Overlay/ floating panels, click-through logic, overlay view
Markdown/ parser, SwiftUI renderer, highlighting editor
Settings/ presets, option lists, settings tabs
Support/ Carbon global hotkeys, blur background
Tests/StealthNotesTests/ unit tests for the Markdown parser
Resources/ Info.plist, AppIcon.icns, bundled fonts
swift build # debug build
swift test # run unit tests
./build.sh # release .app bundleYou can also open Package.swift in Xcode to edit and run the app with the debugger.
MIT. JetBrains Mono is bundled under the SIL Open Font License.