
Free & open source · macOS + iOS
A free, open-source alternative to Apple Sidecar, Duet Display and Luna Display. Use your iPhone and iPad as a second — and even a third — screen for your Mac. A true extended display, not a mirror: USB or WiFi, Retina-sharp, with touch and scroll. No subscription. No dongle. No account.
Like it? Support the project →
OpenDisplay is two apps that work together — install both to get going.
The sender — captures a virtual display and streams it.
Download for MacSigned & notarized — opens normally on macOS 14+. Prefer to compile it yourself? Build from source ↗
The receiver — displays the stream and sends touch back.
Want early builds? Join the TestFlight beta,
or compile it from source ↗.
Demo
Support the project
Free, open source, and funded out of my own pocket — including the Apple Developer membership behind signed, one-click installs. If it helps you, a tip keeps it going.
Support on Ko-fiFeatures
No sign-up, no email, no login. And unlike Apple Sidecar — which only works between devices on the same Apple ID — OpenDisplay pairs across different Apple IDs, so you can use a partner's or friend's iPad. Download both apps and go.
Up to 60 FPS over USB. Hardware H.264 (VideoToolbox real-time mode), TCP_NODELAY, and frame-dropping backpressure with instant keyframe recovery keep it responsive.
Native Retina resolution — the virtual display matches your device panel pixel-for-pixel at HiDPI (@2x), so text looks exactly like it should.
macOS treats your phone as a real monitor via a virtual display — arrange it in System Settings, drag windows onto it. Mirroring is available too.
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 to type.
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 docs.
One direct TCP connection between your devices. No servers, no accounts, no telemetry. Read the code.
Contribute
OpenDisplay is GPL-3.0 and developed entirely on GitHub — the whole stack, from Mac capture and H.264 encoding to the iOS receiver, is yours to read, build, and improve. Bug reports, feature ideas, and pull requests are all welcome. Build-and-run instructions live in the README.
New here? Start with the README quick-start to build both apps, or browse the good first issues.
Why OpenDisplay
Free, 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 additional display. If you were about to build your own — contribute here instead.
| OpenDisplay | Apple Sidecar | Duet | Luna | |
|---|---|---|---|---|
| Price | Free & open source | Free | Subscription | $$ + dongle |
| iPhone as display | ✓ | ✕ | ✓ | ✓ |
| Different Apple IDs | ✓ | ✕ | ✓ | ✓ |
| No account / sign-up | ✓ | Apple ID | ✕ | — |
| Wired USB | ✓ | ✓ | ✓ | ✕ |
| Self-hosted / auditable | ✓ | — | ✕ | ✕ |
FAQ
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 withAVSampleBufferDisplayLayer and sends touch coordinates back, which the Mac injects as mouse events.
Yes — the iPhone & iPad receiver is live on the App Store. The Mac app ships as a signed, notarized direct download rather than through the Mac App Store because it relies on CGVirtualDisplay, a private API — that's the deal for every virtual-display product: use it or ship a dongle. You can also build either app from source with your own (free) Apple developer account in 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 bothsides, 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. Run the Mac, an iPhoneand an iPad at once for a second and a third screen. 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.
OpenDisplay 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.)