Privacy-focused notes that stay hidden from screenshots and screen shares.
Ghostwriter is an always-on-top notes overlay for macOS. It supports transparency, a collapsible sidebar, and a floating formatting toolbar. Notes auto-save and can be hidden from screen captures with OS-level content protection. Built with Electron; ships as a signed, notarized universal DMG with in-app auto-updates via electron-updater.
Download Ghostwriter.dmg — universal (Apple Silicon + Intel), signed and notarized, auto-updates built in.
Or with Homebrew:
brew install --cask evanpizzolato/tap/ghostwriterMore at the website.
- The editor uses a contenteditable layout with auto-save as you type.
- New text defaults to Heading 1, and pressing Enter in Heading 1 switches to Body.
- Bold is blocked on heading styles to keep headings consistent.
- The floating toolbar appears when text is selected or on double-click.
- A header edit icon creates a new note and sits to the left of the Privacy mode label.
- The new note button is disabled when the editor has no visible characters.
- Notes are sorted by most recently updated.
- Each note shows a title derived from its first non-empty line.
- A guide note is injected on first launch to help onboard new users.
- Privacy mode uses OS-level content protection to hide notes from screenshots.
- Click-through mode disables editing and allows interaction with apps behind the window.
- Click-through state is tracked centrally — menu, tray, and
Cmd+Shift+Tshortcut stay in sync.
Cmd+Shift+N— show/hide windowCmd+Shift+O— cycle opacity presetsCmd+Shift+T— toggle click-throughCmd+Shift+Plus/Cmd+Shift+-— font sizeOpt+Cmd+S— toggle sidebarCmd+B / I / U— bold, italic, underlineShift+Cmd+7 / Shift+Cmd+9— bullet list, numbered listShift+Cmd+E / Shift+Cmd+I— export / import notes
- Notes, active note, privacy state, and sidebar state are saved to disk automatically.
- Notes without any non-whitespace content are not persisted.
- State lives in the Electron
userDatadirectory asnotes.json.
npm install
npm startnpm run dist-mac # signed universal DMG + mac zip in ./dist
./notarize.sh # notarize and stapleThe full publish workflow — tagging, release notes, asset upload, electron-updater manifest — is documented in docs/handoff.md. Latest signed build: releases/latest.
Parts of the UI polish and color system in this project were built with the help of two Claude Code plugins by Jakub Krehel (@jakubkrehel):
- make-interfaces-feel-better — design-engineering principles for press feedback, hit-area expansion, tabular numerics, and transition discipline. Applied during the interaction polish pass; see
docs/design-system.md§5. - oklch-skill — guidance for migrating the color palette to OKLCH (perceptually uniform color), unifying the blue ramp on a single hue, and introducing a neutral gray scale. Applied to
style.css:roottokens; seedocs/design-system.md§2.
