Modern macOS app that automatically activates Sidecar when your iPad is connected via USB. Features an intuitive menu bar interface, onboarding flow, and smart preferences.
- macOS 13.0 (Ventura) or later
- iPad running iPadOS 13.0 or later
- Both devices signed in with the same Apple ID
- Handoff enabled on both devices
- Bluetooth and Wi-Fi enabled
- USB connection (works through USB hubs)
- Download
Auto Sidecar.appfrom the latest release - Drag it to your
/Applicationsfolder - Double-click to launch
- Complete the onboarding wizard
git clone https://github.com/yourusername/auto-continuity.git
cd auto-continuity
swift package build-appThen drag Auto Sidecar.app to your /Applications folder and launch it.
- Interactive setup wizard
- Accessibility permissions checklist
- Configure launch at login
- Set disconnect-on-removal preference
- Smart Status Display: Real-time monitoring of connection state
- Toggle Auto-Activation: Quick enable/disable of automatic connections
- Connect/Disconnect Toggle: Manual control with reactive state
- Disconnect on USB Removal: Optional automatic disconnection when iPad unplugged
- View Logs: Quick access to troubleshooting information
- About: Version and license details
- Automatic connection when iPad plugged in
- Optional disconnect when iPad unplugged
- Sleep-aware (won't activate during system sleep)
- Failure tracking with automatic retry limiting
- Works through USB hubs
- Persistent preferences
After installation, Auto Sidecar will appear in your menu bar with an iPad icon.
First Launch:
- Complete the onboarding wizard
- Grant Accessibility permissions
- Optionally enable "Launch at Login"
- Configure disconnect behavior
Daily Use:
- Simply plug in your iPad - Sidecar activates automatically
- Use menu bar to manually connect/disconnect
- Toggle auto-activation on/off as needed
Event-driven IOKit monitoring detects iPad connections (vendor ID 0x05ac) and triggers Sidecar via SidecarLauncher binary. 5-second debouncing prevents duplicate activations. AppKit-based menu bar interface provides real-time status and control with UserDefaults-backed preferences.
Auto Sidecar.app/
โโโ Contents/
โ โโโ MacOS/
โ โ โโโ AutoSidecar # Main executable
โ โโโ Resources/
โ โ โโโ SidecarLauncher # Sidecar control binary
โ โโโ Info.plist # App metadata
Sources/AutoSidecar/
โโโ main.swift # App lifecycle and coordination
โโโ MenuBarController.swift # Menu bar UI and interactions
โโโ OnboardingWindowController.swift # First-launch onboarding
โโโ Preferences.swift # UserDefaults-backed settings
โโโ SidecarController.swift # Sidecar connect/disconnect
โโโ USBMonitor.swift # IOKit USB monitoring
โโโ Logger.swift # File-based logging
Check logs: tail -f ~/Library/Logs/auto-sidecar.log
iPad not detected:
- Verify USB connection:
system_profiler SPUSBDataType | grep -i ipad - Device must have "iPad" in USB product name
- Try different cable/port
Sidecar doesn't activate:
- Verify Accessibility permissions are granted
- Check Sidecar requirements (same Apple ID, Handoff, Bluetooth/Wi-Fi)
- Test manual Sidecar connection first
App not appearing in menu bar:
- Make sure you've launched
Auto Sidecar.appfrom Applications - Check Activity Monitor for "AutoSidecar" process
- Check logs for errors:
tail -f ~/Library/Logs/auto-sidecar.log - Try relaunching the app
Onboarding not showing:
- Delete preferences:
defaults delete com.jonwillis.autosidecar - Relaunch the app
Quick method:
./scripts/tools/uninstall.shManual method:
- Quit Auto Sidecar from the menu bar
- Move
Auto Sidecar.appto Trash (from/Applications) - Remove preferences (optional):
defaults delete com.jonwillis.autosidecar rm ~/Library/Logs/auto-sidecar.log - Remove from Login Items if configured: System Settings > General > Login Items
Auto Sidecar uses Swift Package Manager plugins for idiomatic Swift development:
# Quick Start
swift package plugin --list # List available plugins
# Building
swift package build-app # Build .app bundle
swift build # Debug build
swift build -c release # Release build
# Development Tools
swift package dev-tools help # Show all dev commands
swift package dev-tools validate # Run validation checks
swift package dev-tools diagnose # Comprehensive diagnostics
swift package dev-tools test # Device detection tests
swift package dev-tools status # Show app status
swift package dev-tools enable # Enable auto-activation
swift package dev-tools disable # Disable auto-activation
swift package dev-tools check # Check permissions
swift package dev-tools dev-setup # Setup git hooks
# Standard SPM commands
swift test # Run tests
swift package clean # Clean build artifactsauto-continuity/
โโโ Sources/AutoSidecar/ # Swift source files
โโโ Plugins/ # SPM command plugins
โ โโโ BuildAppPlugin/ # App bundle builder
โ โโโ DevToolsPlugin/ # Development tools
โโโ scripts/ # Shell scripts (called by plugins)
โ โโโ build/ # Build scripts
โ โโโ tools/ # User-facing tools
โ โโโ dev/ # Development utilities
โโโ Resources/ # App resources (Info.plist)
โโโ Package.swift # SPM configuration with plugins
Setup pre-push validation:
swift package dev-tools dev-setupThis installs a git hook that runs validation before every push.
- Requires Accessibility permissions for Sidecar control
- Relies on third-party SidecarLauncher binary
- USB (wired) connections only
- macOS 13.0 (Ventura) or later required
MIT - See LICENSE