Skip to content

johannesnagl/holdor

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

74 Commits
 
 
 
 
 
 
 
 
 
 
 
 
 
 

Repository files navigation

Holdor total downloads

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.

The Problem

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.

How It Works

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.

Features

  • 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

Supported Apps

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.

Install

Homebrew

brew install --cask johannesnagl/tap/holdor

Direct download

Grab the signed and notarized DMG from the latest release.

Building

Requires Swift 5.9+ and macOS 13+.

cd app
swift build -c release

The binary will be at app/.build/release/Holdor.

Building a DMG

./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:

  1. An Apple Developer Program membership
  2. A Developer ID Application certificate
  3. A notarization keychain profile: xcrun notarytool store-credentials "your-keychain-profile" --apple-id "you@example.com" --team-id "TEAM_ID"

Updating the Homebrew tap

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.

Running

./app/.build/release/Holdor

Or copy it to /Applications and add to Login Items.

Support

If Holdor saves you from carrying your laptop around, buy me a pasta.

License

MIT

About

Resources

Stars

Watchers

Forks

Packages

 
 
 

Contributors