HeadBird is a native macOS menu bar app that reads AirPods head-tracking motion and visualizes Roll, Pitch, and Yaw in real time.
- Real-time Roll, Pitch, and Yaw visualization.
- Motion history graph for quick trend reading.
- One-click zero calibration.
- Head-controlled mini game (tilt your head up/down to play).
- Lightweight macOS menu bar UX.
When a release is published on GitHub:
- Open the latest release and download
HeadBird-<version>-macos-*.dmg. - Double-click the
.dmgfile. - Drag
HeadBird.appintoApplications. - Launch
HeadBirdfromApplicationsor Spotlight.
Because early releases may be distributed without Apple notarization, macOS Gatekeeper can block first launch.
Use one of these methods:
- Finder method:
- Open
Applications. - Right-click
HeadBird.appand clickOpen. - Click
Openagain in the security prompt.
- Open
- System Settings method:
- Try opening the app once.
- Go to
System Settings -> Privacy & Security. - In the Security section, click
Open Anywayfor HeadBird.
- Terminal fallback (advanced users):
xattr -dr com.apple.quarantine "/Applications/HeadBird.app"Notes:
- Only remove quarantine for apps you trust.
- If checksum is provided in the release notes, verify it before first launch.
HeadBird requests:
- Bluetooth permission (to detect AirPods connection state).
- Motion permission (to read AirPods head-tracking data).
If previously denied, re-enable in System Settings -> Privacy & Security.
Requirements:
- macOS 14+
- Xcode 15+
- AirPods connected to your Mac
Run:
- Open
HeadBird.xcodeproj. - Select scheme
HeadBirdand destinationMy Mac. - Press
Cmd + R. - Click the menu bar icon to open the app UI.
Run the local test script:
./scripts/run-tests.shOr run xcodebuild directly:
xcodebuild test \
-project HeadBird.xcodeproj \
-scheme HeadBird \
-destination 'platform=macOS,arch=arm64' \
CODE_SIGNING_ALLOWED=NOHeadBird now includes an interactive shell wizard for packaging a release DMG.
- Build
Releasein Xcode. - In Xcode, open
Product -> Show Build Folder in Finder. - Locate
HeadBird.appunderBuild/Products/Release. - Run the wizard:
./scripts/make-release-dmg.sh- Follow prompts for:
- Absolute app path (
.../HeadBird.app) - Version (
0.1.0, etc.) - Output directory (default:
~/Desktop) - Volume name (default:
HeadBird) - Optional background image (
.png/.jpg)
- Absolute app path (
- During the Finder layout step, place
HeadBird.appon the left andApplicationsalias on the right. - After conversion, copy the printed SHA-256 and upload the final DMG to GitHub Releases.
For repeatable runs, you can pass all values as flags:
./scripts/make-release-dmg.sh \
--app-path "/ABSOLUTE/PATH/TO/HeadBird.app" \
--version "0.1.0" \
--output-dir "$HOME/Desktop" \
--volume-name "HeadBird" \
--non-interactiveOptional flags:
--background-image "/ABSOLUTE/PATH/TO/background.png"--forceto overwrite an existing final DMG--helpfor full usage
If conversion fails with Resource temporarily unavailable:
- Ensure no Finder/terminal window is using the mounted volume.
- Detach the mounted device:
hdiutil info
hdiutil detach <device> -force- Re-run the wizard or retry conversion.
The wizard also prints lsof output and exact recovery commands when conversion fails.
HeadBird follows Semantic Versioning.
- Current planned public baseline:
v0.1.0. MARKETING_VERSIONshould remain0.1.0in Xcode for this release line.
- No microphone recording.
- No audio content processing.
- Uses local device state and motion signals only for app features.