Snitt.app
A screen recorder for macOS: native, private, open source, and something an agent can drive
Auto-trim, on-device transcription, markers that become chapters, reversible edits, and more…
Quickstart: Install Snitt
$ brew tap impressiver/snitt$ brew trust impressiver/snitt$ brew install --cask snitt
The middle line above is not boilerplate. Homebrew refuses a cask from a third-party tap until you say you meant it, and this is a third-party tap.
A recorder and an editor in one app
Everything below happens on your Mac. There is no account, no upload and no subscription, and the only network request the app makes is the update check.
- Auto-trim
- Cuts the dead air and the gaps between clicks, in one pass. Non-destructive, so you can put any of it back.
- Transcription
- Runs on your Mac, never uploaded. Words carry timings: click one to seek there, select a phrase and delete it to cut those seconds out of the video.
- Markers
- Drop them while you record. They become chapters in the exported file, so a reviewer can jump straight to the part that concerns them.
- Crop and folds
- Trim the frame down to the part that matters, and fold out the stretches nobody needs to watch.
- Per-track audio
- Microphone and system audio stay on separate lanes, so you can drop one without losing the other.
- Ask once
- Screen Recording permission is granted once, not monthly. macOS re-prompts apps that enumerate screen content themselves; Snitt goes through the system picker instead, which is what keeps that grant a one-time event.
- Export
- mp4 or GIF, fitted to a size budget, with chapters and captions written alongside.
Yeah, but what about QuickTime?
It is already on your Mac, it is free, and for a capture you are about to send and forget it is the right answer.
It records and it trims. Snitt also transcribes on device, finds the dead air for you, keeps markers that become chapters, and leaves the original capture untouched while you edit.
One thing at a time
Each of these is the app doing the thing, recorded by the app. The scripts that build them live in the repo, so they are re-run when the interface changes rather than re-staged.
Finds the dead air and the gaps between clicks and takes them out in one pass. Non-destructive, so you can put any of it back.
An agent can drive all of it
Every verb below is reachable from a shell or an MCP server, running the same core the window uses. The agent that just built your feature can record it, cut the dead air and hand you an mp4 to attach to the pull request, without you opening an editor. Each tool reports what it did rather than what it was asked to do, because an agent cannot watch the screen.
- 1choose
snitt targets list - 2record
snitt record start --app com.google.Chrome - 3mark
snitt record mark <session> --label "the bug" - 4cut
snitt auto-deep-trim recording.snitt - 5export
snitt export recording.snitt --format mp4 --out demo.mp4
Your edits never touch the original
Every edit is reversible. The original recording stays intact, even after you close the editor.
- capture.movThe original. Never written to again after the recording stops.read-only
- edit.jsonEvery trim, crop and fold, as plain JSON.
- transcript.jsonWords with timings. Cut a word and the video follows.
- events.jsonMarkers, clicks, and keystroke timing. Never the characters.
- meta.jsonDuration, display scale, and the app that was recorded.