Holds the door. So your agents don't have to stop.
A native macOS menu bar app that prevents your system from sleeping while agentic AI tools are running. Lock your screen, walk away, and your agents keep working.
Company security policies require locking your screen when you step away. But when macOS locks, it eventually sleeps — killing your long-running AI agents. The alternative of carrying your laptop everywhere is absurd.
Holdor uses macOS's built-in caffeinate command, tied to each app's process ID (caffeinate -i -w <PID>). This prevents idle sleep while allowing the display to sleep normally. When the watched app quits, the caffeinate assertion is automatically released.
- Lives in the menu bar (door icon: closed = idle, open = holding)
- Watch multiple apps simultaneously
- Auto-detects when apps launch or quit
- Add any app via native Finder file picker
- Built-in Lock Screen button
- Pause/resume protection from the gear menu
- Launch at login support
- Remembers your preferences across restarts
- Native Swift — no Electron, no runtime overhead
Built-in support for 10 apps:
- Claude Desktop
- Cursor
- Windsurf
- VS Code
- Zed
- ChatGPT
- Warp
- Terminal
- iTerm
- Ghostty
Add any other app via the "Add app..." button.
brew install --cask johannesnagl/tap/holdorGrab the signed and notarized DMG from the latest release.
Requires Swift 5.9+ and macOS 13+.
cd app
swift build -c releaseThe binary will be at app/.build/release/Holdor.
./scripts/build-dmg.sh <version>This creates an unsigned DMG at dist/Holdor-<version>-arm64.dmg.
To build a signed and notarized DMG:
SIGN_IDENTITY="Developer ID Application: Your Name (TEAM_ID)" \
NOTARIZE_PROFILE="your-keychain-profile" \
./scripts/build-dmg.sh <version>Setting up code signing requires:
- An Apple Developer Program membership
- A Developer ID Application certificate
- A notarization keychain profile:
xcrun notarytool store-credentials "your-keychain-profile" --apple-id "you@example.com" --team-id "TEAM_ID"
After publishing a new GitHub release with the DMG attached, bump the cask in johannesnagl/homebrew-tap:
./scripts/update-tap.sh <version>The script downloads the release DMG, computes its SHA-256, updates Casks/holdor.rb, and pushes the commit.
./app/.build/release/HoldorOr copy it to /Applications and add to Login Items.
If Holdor saves you from carrying your laptop around, buy me a pasta.
MIT