I take a lot of iPhone screenshots for docs and design reviews. The usual workflow (plug in, open QuickTime, screen record, crop) is annoying. I wanted a menu-bar button.
So I built TetherShot: a tiny native macOS app that grabs a real iPhone framebuffer at full 1179x2556, drops it in a folder you choose, and copies it to your clipboard.
Two ways to capture:
-
USB: native AVFoundation. It flips the CoreMediaIO
AllowScreenCaptureDevicesflag so the iPhone appears as a.muxedAVCaptureDevice. Instant, full res, zero setup. -
Wi-Fi: cable-free over Apple's developer-services RemoteXPC tunnel. A small root
tunnelddaemon keeps it alive, so captures need no sudo and work even when the phone is locked.
The fun part: my first version mirrored over AirPlay and captured with ScreenCaptureKit. On macOS Tahoe, the mirrored window blacks out whenever a capture context is active. I scrapped it for the framebuffer path.
It's a Swift app shipped over npm. The postinstall builds from source, so there's no quarantine attribute and no Gatekeeper warning.
npm install -g tethershot
tethershot install
MIT, local-first, no accounts or telemetry.
Top comments (0)