Your spare Apple device is your Mac's second monitor.

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 start
macOS 14+ · iOS 17+ · GPL-3.0 licensed · 100% self-hosted

Why another screen-extension app?

Apple Sidecar

Free, but iPad-only, requires both devices on the same Apple ID, and only on blessed hardware pairs. iPhones need not apply.

Duet Display

Pioneered the idea — now behind a subscription.

Luna Display

Great latency, but you're buying a hardware dongle.

OpenSidecar

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.

Features

🖥️ True extension

macOS treats your phone as a real monitor via a virtual display — arrange it in System Settings, drag windows onto it. Mirroring also available.

🔌 USB-wired, lowest latency

Streams over your charging cable via usbmux. No network, no jitter, and your phone charges while it works.

📶 WiFi, zero config

The phone advertises itself with Bonjour; pick it from a dropdown. No IP addresses.

🔍 Retina sharp

The virtual display matches your device panel pixel-for-pixel at HiDPI (@2x). Text looks like it should.

👆 Touch & scroll

Tap to click, drag to drag, two-finger pan to scroll. A tiny touchscreen for your Mac.

🔄 Portrait mode

Rotate the phone and the virtual display rebuilds as a vertical monitor — perfect for chat, logs, or documentation.

⚡ Low-latency pipeline

Hardware H.264 (VideoToolbox real-time mode), TCP_NODELAY, frame-dropping backpressure with instant keyframe recovery.

🔒 Private by design

One direct TCP connection between your devices. No servers, no accounts, no telemetry. Read the code.

Quick start

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.

Comparison

OpenSidecarApple SidecarDuetLuna
PriceFree & open sourceFreeSubscription$$$ + dongle
iPhone as display
Different Apple IDs
Wired USB
Self-hosted / auditable

FAQ

How does it actually work?

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.

Why isn't this on the App Store?

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.

Why do I see the purple screen-recording indicator on my Mac?

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 mode can't find my iPhone — why?

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.

iPad support?

The receiver is a universal iOS app — it runs on iPad today. iPad-specific features (Apple Pencil, pressure) are on the roadmap.

Is any of my screen data sent to a server?

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.

What's the license? Can I fork it or use it commercially?

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.)