Build & install · How to use it · Privacy · Troubleshooting
Repro is a small macOS menu bar app for showing an agent what you mean. Hold a shortcut, walk through the screen, and say what needs to change. Repro records your screen and microphone, transcribes your narration locally, then copies the video and timestamped transcript together.
Use it for a layout that feels wrong, a bug that's easier to reproduce than describe, or a walkthrough with several small changes. You get the visual context and the explanation in one handoff.
Native SwiftUI. On-device transcription. No account, API key, or subscription.
Important
Build Repro yourself. The app is unsigned and not notarized. This repository distributes source code, not a signed installer. The build below needs no signing certificate or paid developer membership.
Record. Review. Copy. A small menu bar panel, ready when you need it. |
Your shortcut. Your spoken language. Automatic paste is optional. Transcription stays local. |
Images render the actual application views with sample review data. They contain no personal recordings.
- An Apple-silicon Mac running macOS Tahoe 26 or later.
- Xcode 26 or later, including Swift 6.2+ and the macOS 26+ SDK. Get it from the Mac App Store or Apple Developer Downloads. Choose a version compatible with your macOS version.
- Internet for the initial Swift package download and, when needed, the first download of a transcription language.
Open Xcode once and let it finish installing its required components. Repro uses Swift Package Manager; you don't need Node.js, npm, Homebrew, or a paid developer account.
Open Terminal and run:
git clone https://github.com/Gablas/repro.git
cd repro
./native/scripts/build-app.shThe script downloads the keyboard-shortcut dependency, compiles a release build, and creates release/Repro.app. It does not sign, install, or launch the app, and it does not run the test suite.
open releaseDrag Repro.app into Applications, then open it from there. Look for the recording-circle icon in the macOS menu bar. Repro doesn't need an open Dock window.
Keep one installed copy so macOS permissions apply to the app you actually launch. If macOS blocks opening your locally built copy, see Opening the app.
Open Repro's menu and follow the setup prompts:
| Permission | Why it is needed |
|---|---|
| Screen Recording | Capture your entire primary display. |
| Microphone | Record your narration alongside the video. |
| Accessibility | Paste the files back into your previous app. Optional when automatic paste is off. |
After granting Screen Recording, quit and reopen Repro if prompted. In Settings, choose your spoken language and set a hold-to-record shortcut.
- Go to the screen you want to explain. Open the page or app and put it in the state you want to show.
- Hold your recording shortcut. Narrate the issue while you point, scroll, or click. You can also use Record screen review in the menu bar and click Stop when finished.
- Release the shortcut. The recording saves immediately. Repro transcribes in the background, so you can keep working or start another recording.
- Wait for the review to become ready. First use of a language may require a model download. Later transcription works offline while that language's model is installed.
- Paste into your agent. With automatic paste enabled, Repro attempts to return the MP4 and TXT to the app where recording started. Otherwise, switch to your destination and press ⌘V.
The destination needs to accept file attachments. Some apps don't accept two files through paste; use Show in Finder and attach them manually. Video support depends on the agent or chat app you use.
Each recording has an MP4 and a neighboring plain-text transcript in ~/Movies/Repro. Transcript entries contain short spans with video timestamps:
[00:01.2] The button shifts when
[00:02.8] I open the sidebar.
[00:05.1] Keep it aligned with
[00:06.4] the search field above.
From a review's ⋯ menu, you can copy both files, copy only the transcript text, or reveal the video in Finder. Failed transcriptions have a Retry transcript action. Retrying uses the language currently selected in Settings.
Your recordings and transcription stay local. Apple's SpeechTranscriber and SpeechAnalyzer process the audio on device. Repro has no cloud transcription fallback or media-upload client.
- macOS downloads and manages speech-language models. Initial installation and later model updates can use the network.
- Repro records the entire primary display and microphone. It does not capture system audio, offer a window picker, or record other displays.
- The original MP4 and completed TXT stay in
~/Movies/Repro. A temporary audio extract is removed after transcription. - Recent-review metadata is stored in the app's local preferences. Unfinished transcriptions resume from the saved video when Repro reopens.
- Copying or pasting puts the files on the system clipboard. Attaching them to another app shares them with that destination under its own rules.
See Apple's SpeechAnalyzer introduction for the on-device engine and model-download behavior.
Quit Repro before replacing the installed copy. From your checkout:
git pull --ff-only
./native/scripts/build-app.sh
open releaseReplace the copy in Applications with the new build, then reopen it. Your recordings remain in Movies/Repro. Because these are unsigned local builds, macOS may ask you to grant permissions again.
Check the selected developer directory:
xcode-select -pIf it points to Command Line Tools or an older Xcode, select the Xcode you installed. For the standard location:
sudo xcode-select --switch /Applications/Xcode.app/Contents/DeveloperOpen Xcode to finish any first-launch setup, then build again. A Swift tools-version error or missing SpeechTranscriber symbol usually means the selected toolchain or SDK is too old.
Repro has no Developer ID signature or notarization. Build it from this checkout and install your own output. If macOS blocks that copy, review the app-specific message under System Settings → Privacy & Security and use Open Anyway if offered. You do not need to disable Gatekeeper or change system-wide security settings.
Quit other Repro copies and launch the one in Applications. In System Settings → Privacy & Security, check Screen Recording and Microphone for that copy, then quit and reopen it. Rebuilding can invalidate permission grants for a previous executable.
The first model installation needs internet. Let the download finish, then retry the saved review. Choose a supported spoken language in Settings; English is the default. Recognition uses that language, so choose it before recording. Silence or a muted microphone cannot produce a transcript, but the video stays saved.
Enable automatic paste and grant Accessibility, or use Copy video + transcript and paste manually. The original destination must still be open and accept file attachments. Use Finder to attach the MP4 and TXT individually if necessary.
The application lives in native/Sources/Repro. SwiftUI provides the interface, ScreenCaptureKit records the display and microphone, and AVFoundation prepares audio for Apple's local speech engine. KeyboardShortcuts handles the global recording shortcut.
# Build the application
./native/scripts/build-app.sh
# Run the Swift tests when you want to
cd native
swift test --disable-sandboxThe documentation images can be regenerated with ./docs/render.sh after building. It renders the shipping views with isolated sample data.
For a bug report, open an issue with your macOS version, Mac model, spoken language, and what happened. Don't include private recordings unless you intend to share them publicly.
MIT. Made by Gabriel Stenbäck.


