A lightweight, native macOS screen recorder that uploads directly to Mux. Lives in your menu bar, records your screen/camera/mic, and gives you a shareable link in seconds.
Built with Swift, SwiftUI, ScreenCaptureKit, and AVFoundation. No Electron, no webviews, no sidecar processes.
- Record any display or individual window
- Camera overlay (picture-in-picture) with drag positioning
- System audio + microphone capture
- 3-2-1 countdown before recording
- In-app review with playback before uploading
- Direct upload to Mux with progress tracking
- Auto-generated captions (English)
- AI-powered video summaries via Mux Robots API
- Recording library with thumbnails, summaries, and tags
- MCP server for Claude Code integration
- Auto-updates via Sparkle
- Menu bar app — stays out of your way
- macOS 14.0 (Sonoma) or later
- Swift 5.10+
- A Mux account with an API access token
git clone https://github.com/muxinc/shaaaare-my-screeeen.git
cd shaaaare-my-screeeen
./run.shThat's it. The script builds both the app and the MCP server, bundles them into an .app, signs it, and launches it.
On first launch, macOS will prompt you to grant screen recording, camera, and microphone permissions. Enter your Mux API token ID and secret in Settings.
./run.sh # Build, sign, and launch
./run.sh --no-launch # Build and sign only
./run.sh --help # See all optionsopen Package.swiftXcode will handle signing automatically with your Apple ID. Select the ShaaaareMyScreeeen scheme and run.
swift build # Build the app
swift build --product shaaaare-mcp # Build the MCP serverNote: swift build compiles the binary but doesn't create the .app bundle needed for permissions to work. Use run.sh or Xcode for a complete build.
macOS requires a signed .app bundle for screen recording, camera, and microphone access. The build script handles this automatically:
| You have | What happens | Permissions persist across rebuilds? |
|---|---|---|
| Apple Developer Program membership | Signs with your Developer ID or Apple Development certificate | Yes |
| Free Apple ID added to Xcode | Signs with your development certificate | Yes |
| Nothing | Falls back to ad-hoc signing | No — you'll re-grant permissions each rebuild |
To get persistent permissions without a paid developer account:
- Open Xcode and sign in with your Apple ID (Xcode > Settings > Accounts)
- This creates a free development certificate on your machine
run.shwill automatically find and use it
You can also specify a signing identity explicitly:
./run.sh --identity "Apple Development: you@example.com"
# or
SIGN_IDENTITY="Apple Development: you@example.com" ./run.shIf permissions get stuck or you want a clean slate:
./run.sh --reset-tcc # Reset camera/mic/screen recording permissions
./run.sh --reset-keychain # Clear stored Mux credentialsSources/
├── App/
│ ├── ShaaaareMyScreeenApp.swift # Entry point, AppDelegate
│ ├── MenuBarController.swift # Status bar icon + panel management
│ ├── AppState.swift # App state, screen routing, upload flow
│ ├── Views/ # SwiftUI views
│ ├── Recording/ # ScreenCaptureKit + AVFoundation
│ ├── Mux/ # Mux API client + models
│ └── Utilities/ # Keychain, preferences, history, MCP setup
└── MCP/
└── main.swift # Standalone MCP server for Claude Code
The app includes an MCP server that lets Claude Code access your recording library.
Set it up from Settings in the app (one-click), or manually:
claude mcp add --transport stdio shaaaare-my-screeeen -- /path/to/dist/ShaaaareMyScreeeen.app/Contents/MacOS/shaaaare-mcpAvailable tools:
- list_recordings — Search and filter recordings by date, title, tags, or keywords
- get_recording — Get full details for a recording (playback URL, summary, thumbnail, tags)
Example: "Find my recording from today and create a GitHub issue with the playback link in the description."
All configuration is stored locally on your machine:
| What | Where |
|---|---|
| Mux credentials | macOS Keychain (com.mux.shaaaare-my-screeeen) |
| Preferences | UserDefaults |
| Recording history | ~/Library/Application Support/com.mux.shaaaare-my-screeeen/history.json |
| App logs | ~/Library/Logs/ShaaaareMyScreeeen/app.log |
The app uses Sparkle for auto-updates. Users get notified of new versions and can update in-app.
./bump.sh # 1.0.0 → 1.0.1 (patch)
git push origin main --tagsThat's it. GitHub Actions builds, signs, notarizes, and publishes the release. The appcast is updated automatically so existing users see the update.
For minor or major bumps:
./bump.sh minor # 1.0.1 → 1.1.0
./bump.sh major # 1.1.0 → 2.0.0- GitHub Actions builds a release binary
- Signs it with the Developer ID certificate
- Submits to Apple for notarization and staples the ticket
- Signs the zip with Sparkle's EdDSA key
- Creates a GitHub Release with the zip attached
- Updates the appcast on GitHub Pages
To build a signed release locally without CI:
./release.sh --skip-notarize # Signed only
./release.sh --notarize --notary-profile ShaaaareMyScreeeenNotary # Signed + notarizedOutput goes to release/ShaaaareMyScreeeen-macOS.zip.
MIT. See LICENSE.