A lightweight macOS daemon that detects when your YubiKey is waiting for a physical touch and shows a notification.
When using a FIDO2 YubiKey (e.g. ed25519-sk) for SSH authentication or Git commit signing, the key blinks to indicate it needs touch. This is easy to miss, causing operations to hang. yumetouch watches for this and alerts you.
yumetouch polls for processes that indicate a YubiKey touch is pending:
ssh-keygen -Y sign— Git commit/tag signing via SSH keyssh-sk-helper— SSH authentication with FIDO2 keys (git push, ssh connections)
When a signing or auth process persists beyond a short grace period (500ms), yumetouch assumes the YubiKey is waiting for touch and fires a notification. Once the process exits, it dismisses.
cargo install --path .yumetouch installThis installs a LaunchAgent that starts yumetouch at login and keeps it running. To remove it:
yumetouch uninstallRun in the foreground:
yumetouchWith verbose logging:
yumetouch -vOverride the notification mode:
yumetouch --mode dialogSpecify a config file:
yumetouch --config /path/to/config.tomlCreate ~/.config/yumetouch/config.toml:
[notification]
mode = "notification" # "notification", "dialog", or "both"
sound = "Funk" # macOS system sound name
timeout_secs = 5 # seconds of silence before dismissing| Mode | Description |
|---|---|
notification |
Notification Center banner with YubiKey icon and sound (default) |
dialog |
Modal alert with YubiKey icon and sound, dismisses on touch or OK |
both |
Both notification banner and modal alert |
Any sound in /System/Library/Sounds/ works. Common choices: Funk, Glass, Ping, Pop, Tink, Blow, Bottle, Frog, Hero, Morse, Purr, Sosumi, Submarine.
Make sure you're using Homebrew's OpenSSH (/opt/homebrew/bin/ssh), not the macOS built-in. The built-in SSH doesn't use ssh-sk-helper in the same way.
Trigger an SSH signing operation that requires touch:
echo test | ssh-keygen -Y sign -f ~/.ssh/id_ed25519_sk -n testRun yumetouch with -v to see debug output confirming it detects the process.
tail -f /tmp/yumetouch.log
tail -f /tmp/yumetouch.errMIT