OpenSidecar is a free, open-source alternative to Apple Sidecar, Duet Display and Luna Display. iPhone and iPad today — spare MacBooks on the roadmap. A true extended display, not a mirror: USB or WiFi, Retina-sharp, with touch and scroll. No subscription. No dongle. No account.
Get it on GitHub Quick startFree, but iPad-only, requires both devices on the same Apple ID, and only on blessed hardware pairs. iPhones need not apply.
Pioneered the idea — now behind a subscription.
Great latency, but you're buying a hardware dongle.
Free, open source, auditable. The device you already own becomes a real second display. If you were about to build your own — contribute here instead.
macOS treats your phone as a real monitor via a virtual display — arrange it in System Settings, drag windows onto it. Mirroring also available.
Streams over your charging cable via usbmux. No network, no jitter, and your phone charges while it works.
The phone advertises itself with Bonjour; pick it from a dropdown. No IP addresses.
The virtual display matches your device panel pixel-for-pixel at HiDPI (@2x). Text looks like it should.
Tap to click, drag to drag, two-finger pan to scroll. A tiny touchscreen for your Mac.
Rotate the phone and the virtual display rebuilds as a vertical monitor — perfect for chat, logs, or documentation.
Hardware H.264 (VideoToolbox real-time mode), TCP_NODELAY, frame-dropping backpressure with instant keyframe recovery.
One direct TCP connection between your devices. No servers, no accounts, no telemetry. Read the code.
Two small apps, built from source with standard Apple tooling: a Mac app (captures & sends) and an iOS app (receives & displays).
brew install xcodegen
git clone https://github.com/peetzweg/opensidecar.git
cd opensidecar && xcodegen generate
# build & run both targets from Xcode, then:
./run.sh # starts the USB tunnel + Mac app
Grant Screen Recording and Accessibility once, and drag a window onto your new display. Full instructions in the README.
| OpenSidecar | Apple Sidecar | Duet | Luna | |
|---|---|---|---|---|
| Price | Free & open source | Free | Subscription | $$$ + dongle |
| iPhone as display | ✓ | ✗ | ✓ | ✓ |
| Different Apple IDs | ✓ | ✗ | ✓ | ✓ |
| Wired USB | ✓ | ✓ | ✓ | ✗ |
| Self-hosted / auditable | ✓ | — | ✗ | ✗ |
The Mac creates a virtual display with the private CGVirtualDisplay API
(the same technique used by BetterDisplay and DeskPad), captures it with
ScreenCaptureKit, hardware-encodes H.264 with VideoToolbox, and streams it
over a single TCP connection — through the USB cable via usbmux, or over WiFi.
The phone decodes and renders with AVSampleBufferDisplayLayer and sends
touch coordinates back, which the Mac injects as mouse events.
CGVirtualDisplay is a private API. That's the deal: every
virtual-display product either uses it or ships a dongle. Building from
source with your own (free) Apple developer account takes a few minutes.
macOS shows that privacy indicator for every app that captures the screen — Duet, Luna, OBS and Zoom included. Apple Sidecar avoids it only because it's built into the OS. It's a feature, not a bug: you always know a capture is running.
WiFi discovery needs the Local Network permission on both sides, and macOS/iOS deny it silently if the prompt was missed: check System Settings → Privacy & Security → Local Network on the Mac, and Settings → Privacy & Security → Local Network on the iPhone. Both devices must be on the same WiFi and the iPhone app must be open. The Mac app shows a live permission panel, and the iPhone app has a settings screen (shake the phone) that links straight there. USB mode needs none of this.
The receiver is a universal iOS app — it runs on iPad today. iPad-specific features (Apple Pencil, pressure) are on the roadmap.
No. One direct TCP connection between your Mac and your device. No accounts, no analytics, no cloud. The full story — what the apps store locally, which permissions they use and why, and the one current caveat about unencrypted WiFi transport — is on the privacy page.
OpenSidecar is licensed under GPL-3.0. You can use, study, and adapt it freely — including commercially. If you distribute a modified version, it must remain open source under the same license with the original attribution intact, so improvements flow back to everyone instead of into closed forks. (Releases up to v0.4.x were MIT-licensed and remain available under those terms.)