SnapKeep
A native macOS capture tool — region/window/full-screen screenshots, screen recording, annotation, and on-device OCR — that never touches the network.
The problem
Privacy-conscious Mac users and creators want fast capture, annotation, and short screen recordings without sending anything to the cloud. SnapKeep does it all on-device: no accounts, no telemetry, no cost — a menubar utility that captures, annotates, and keeps.
Challenges
Making screen-recording permission painless
macOS Screen Recording permission is notoriously awkward — it typically forces users to quit and relaunch the app before capture works. SnapKeep triggers the system permission prompt at the right moment on launch and then re-checks authorization every time it comes back to the foreground, so returning from System Settings picks up the newly-granted permission automatically, with no manual restart.
Low-latency recording and real-time encoding
Screen frames arrive continuously on a background thread and must be encoded to video without ever blocking the UI or dropping behind real time. The recording engine runs entirely off the main thread on its own synchronized queue and deals with the real constraints of hardware H.264 — dimensions rounded to even numbers, a real-time encoding budget, a bounded backlog, and starting the video timeline from the first captured frame before audio is mixed in.
One annotation model, identical on screen and export
Every markup tool — pen, marker, arrow, shapes, text, numbered steps, pixelate — is described by a single data model with one shared drawing routine used both for the live editing canvas and the final exported image, guaranteeing what you see is exactly what you save. Pixelate redaction carefully maps between on-screen coordinates and the image's true pixel grid so a redacted region can be cropped, downscaled, and re-enlarged into a solid mosaic that can't be reversed.
Fully offline OCR and a menubar-only lifecycle
Copy-Text extracts text from any capture using Apple's on-device text recognition — no image ever leaves the machine — and reorders the results to match natural reading order. The app lives entirely in the menu bar with no Dock icon, allows only one running instance, and registers truly system-wide keyboard shortcuts so capture fires no matter which app currently has focus.
Implementation
Concurrency-safe capture pipeline
Capture is isolated behind Swift's strict-concurrency model so it can run off the main thread safely. It supports full-display capture that follows the active screen, single-window capture that stays with a window regardless of what's in front of it, and region capture that automatically excludes SnapKeep's own overlay windows from the shot.
Video and GIF export
Recordings are written as H.264 MP4 with optional AAC audio, and any finished clip can be re-exported as a looping animated GIF by sampling its frames. A post-recording studio adds preview, trim, automatic silence detection, and on-device speech-to-text captioning.
Database-free local storage
Captures are saved as timestamped PNG/JPEG files in the user's Pictures folder and copied to the clipboard immediately. The history view is simply the newest files read back from that folder — there is no database and no network, which keeps the "everything stays on your Mac" promise honest and the storage format completely transparent.
Reproducible builds and one-click distribution
The Xcode project is generated from a declarative spec so it can be recreated cleanly on any machine (Swift 6, hardened runtime, Apple silicon, macOS 14+). Pushing a version tag runs a CI workflow that builds a signed disk image and publishes a GitHub Release. The build isn't Apple-notarized yet, so the docs walk users through clearing the quarantine flag on first launch.
Why this stack
- Swift 6
- Its compile-time concurrency checking makes the off-main-thread capture and recording pipeline provably data-race-free rather than hopefully so.
- SwiftUI + AppKit
- SwiftUI drives the menu-bar UI and reactive state; AppKit and Core Graphics handle the low-level window and pixel work SwiftUI alone can't reach.
- ScreenCaptureKit
- Apple's modern capture framework, providing both high-quality stills and live video with the ability to exclude specific windows or apps from a capture.
- Vision
- On-device text recognition powers Copy-Text with zero network dependency, matching the fully-offline promise.
- AVFoundation
- Handles the video encoding, audio, and frame sampling behind MP4 recording and GIF export.
- Global hotkeys
- System-level shortcut registration is the only reliable way to trigger capture regardless of which application is focused.
What it does
- Region, window, full-screen, and recapture-last capture with freeze-frame overlay, live dimensions, and a magnifier loupe
- Screen recording to H.264 MP4 or animated GIF, with a post-recording Studio (trim, captions, silence detection)
- Annotation editor: pen, marker, arrow, shapes, text, numbered steps, pixelate/redact, undo/redo
- On-device Vision OCR, Beautify (gradient backdrop, padding, shadow), and pin-to-desktop
- Menubar history grid — click to copy, drag out, pin/reveal/share/delete — plus native sharing
- 100% local: no network calls, no telemetry, no accounts