Five burn-in templates
whisper.cpp with word timings, rendered natively with CoreText — classic, boxed, bold, karaoke, minimal. Correct bidi, so Hebrew and Arabic render properly. SRT, VTT and TXT sidecars always.
Every verb is a hotkey, a CLI command, and a localhost REST call — against one daemon. Your agent starts the take; you stop it from the floating pill. Neither has to know the other exists.
Requires macOS 15 or later. The build is open source and unnotarized, so macOS blocks the downloaded app — the one-line install below clears that for you.
An agent that can see your screen still can't show you one — GUI recorders expose no API. mac-rec inverts that: the interface is a thin shell over a documented local API, so both operators drive the same session.
Recording streams straight into ~2-second fragmented MP4 chunks on disk. Rewinding just deletes trailing fragments — no seeking, no re-encoding, no waiting. Resume opens a new run; stop concatenates whatever survived, losslessly.
Stop runs a real post pipeline: lossless concat, hardware HEVC, transcription, captions, optional AI narration — and keeps the untouched master beside it.
whisper.cpp with word timings, rendered natively with CoreText — classic, boxed, bold, karaoke, minimal. Correct bidi, so Hebrew and Arabic render properly. SRT, VTT and TXT sidecars always.
Replace recorded narration with an ElevenLabs voice. Each sentence is spoken separately, re-anchored to its original timestamp and speed-fit to its slot — then captions are rebuilt from where the audio actually landed.
Auto-gain rescues quiet webcam mics, denoise and speech-leveling clean the take, and a live level meter means you never discover the silence in post.
Pick a monitor, a single window by id or name, or drag a region. System audio and microphone are captured as separate tracks, so they can be mixed — or replaced — later.
VideoToolbox on Apple Silicon: a seven-second 1080p take compresses from 2.2 MB to 423 KB with no visible loss. The lossless master is always kept.
Displays stay awake while recording, a killed capture auto-pauses instead of zombie-recording, and any failed save is rebuildable from the fragments still on disk.
Drop the skill into Claude Code and "record a walkthrough of this bug" just works — the agent checks state, records, rewinds its own mistakes, and hands back a captioned MP4.
$ cp -r skills/mac-rec ~/.claude/skills/ # then, in any session: "record a demo of the checkout flow and caption it"
$ mac-rec status --json {"state":"idle"} $ mac-rec start --source window \ --query "Chrome" --json ... drives the UI, misspeaks ... $ mac-rec pause && mac-rec rewind 8 $ mac-rec resume $ mac-rec stop --captions bold --json {"final":"…/final.mp4","srt":"…"}
Localhost only. Every CLI verb maps to one call; every call returns JSON. Errors come back as {"error":"…"} with a real status code.
| Endpoint | Body | Does |
|---|---|---|
| GET /status | — | state, elapsed, source, mic level, last event |
| POST /start | {source, display, windowID, area, mic} | begin a session |
| POST /pause | — | finish the current run; enables rewind |
| POST /rewind | {seconds} | delete trailing fragments |
| POST /resume | — | open a new run |
| POST /mic | {muted} | mute the mic mid-take |
| POST /stop | {output, captions, voiceover, trim} | finalize and return the deliverable |
macOS 15 (Sequoia) or later. Universal — Apple silicon and Intel. ffmpeg does the finalize work (brew install ffmpeg); add whisper-cpp for captions.
$ curl -fsSL https://screenrecording.dev/install.sh | bash # downloads the latest release, installs to # /Applications, clears the quarantine flag # macOS sets on downloads, links the CLI, # and launches the app. # prefer the .dmg? see "if macOS blocks it" below
$ git clone https://github.com/\ joelburlin/mac-rec $ cd mac-rec $ ./setup-signing.sh # once $ ./make-app.sh # app + CLI $ open /Applications/Mac-Rec.app # signing locally means permissions # survive every rebuild
Notarizing an app requires a paid Apple Developer account, so this open-source build isn't notarized. macOS 15 quarantines it and shows "Apple could not verify Mac-Rec is free of malware." Two ways through:
The installer above removes the quarantine flag for you — nothing else to do.
If you installed the .dmg by hand: open System Settings → Privacy & Security, scroll to the bottom, and click Open Anyway next to Mac-Rec. (On macOS 15 the old right-click → Open trick no longer works.) Or run xattr -dr com.apple.quarantine /Applications/Mac-Rec.app.
Building from source avoids all of this — the app is then signed locally by you.