Repolode
peetzweg

peetzweg/opendisplay

Turns an iPhone, iPad, or spare Mac into a true extended second display for your Mac over USB or WiFi, free and open source.

Open-source alternative to:Apple SidecarDuet DisplayLuna Display

Stars
5,762
Forks
376
Open issues
170
Last commit
2 days ago

What is it?

OpenDisplay is a macOS and iOS app pair that lets a Mac use an iPhone, iPad, or another Mac as an extended display rather than a mirror. The Mac creates a virtual display, captures it with ScreenCaptureKit, encodes it with hardware H.264 or HEVC through VideoToolbox, and streams it over a TCP connection, either over a USB cable through macOS's built-in usbmuxd or over WiFi discovered with Bonjour.

On the receiving device, touch input is sent back to the Mac, so taps, drags, and two-finger scrolling work on the extended screen. Portrait and landscape orientation are supported, and the virtual display matches the device panel at @2x for Retina-sharp text. A spare Mac running the OpenDisplay Receiver app (macOS 12+) can also serve as the display over WiFi or a cable.

The project is positioned as a free, self-hosted alternative to Apple Sidecar and paid apps such as Duet Display and Luna Display. The wire protocol is documented in PROTOCOL.md, and it depends on the private CGVirtualDisplay API, so macOS updates may break it.

Key features

  • 01Extends the Mac desktop onto an iPhone, iPad, or spare Mac as a real second display
  • 02Touch input for tap, drag, and two-finger scroll on the extended screen
  • 03Connects over USB through usbmuxd or over WiFi with automatic Bonjour discovery
  • 04Hardware H.264 or HEVC encoding with a low-latency streaming pipeline
  • 05Retina @2x rendering and portrait or landscape orientation

Use cases

  • Adding a spare iPad or old iPhone as an extra monitor while working on a laptop
  • Using an older Mac as a second screen for a Mac on the desk
  • Working with a portable Mac setup that needs more screen space without buying a monitor

Quick start

  1. 1

    Install and run the sender app on your Mac from the project's release page

  2. 2

    Connect your iPhone or iPad with a data USB cable, or use the same WiFi network

  3. 3

    Install the OpenDisplay app on the iPhone or iPad and open it, then select the device in the Mac app

Things to know

  • Keyboard and mouse input at the receiving Mac is not yet supported.
  • Audio is not supported.
  • Sending from a Mac requires macOS 14 or newer, and receiving Mac displays need macOS 12 or newer.

Topics

FAQ

What is opendisplay?
Turns an iPhone, iPad, or spare Mac into a true extended second display for your Mac over USB or WiFi, free and open source. OpenDisplay is a macOS and iOS app pair that lets a Mac use an iPhone, iPad, or another Mac as an extended display rather than a mirror. The Mac creates a virtual display, captures it with ScreenCaptureKit, encodes it with hardware H.264 or HEVC through VideoToolbox, and streams it over a TCP connection, either over a USB cable through macOS's built-in usbmuxd or over WiFi discovered with Bonjour.
Is opendisplay free to use? What license does it have?
opendisplay is open source under the GPL-3.0 license. Check the license terms before using it in commercial products.
Is opendisplay still maintained?
Actively maintained. The last commit to opendisplay was on Oct 18, 2026.
What can I use opendisplay for?
Adding a spare iPad or old iPhone as an extra monitor while working on a laptop Using an older Mac as a second screen for a Mac on the desk Working with a portable Mac setup that needs more screen space without buying a monitor
How do I install opendisplay?
Install and run the sender app on your Mac from the project's release page Connect your iPhone or iPad with a data USB cable, or use the same WiFi network Install the OpenDisplay app on the iPhone or iPad and open it, then select the device in the Mac app
Where can I get opendisplay?
The source code and installation instructions are on GitHub: https://github.com/peetzweg/opendisplay

Summary generated by AI from the project's README. GitHub stats refresh daily.

Related projects