Skip to content

Free & open source · macOS 13+

Turn an old Mac into a second display for your new one.

ScreenRelay extends your Mac’s desktop onto another Mac over a Thunderbolt cable. The old Mac becomes a real, native-resolution external display — drag windows onto it, arrange it in System Settings, and use it like any monitor.

ScreenRelay’s menu bar panel on the host Mac, reading “Extending to screen’s iMac”, with Disconnect, brightness, Connect automatically and Open at Login controls.
  • 5K · 60 fpsNative resolution over a Thunderbolt Bridge
  • ~4 msTo encode a 5K frame on an Apple silicon GPU
  • 64 × 64Pixel tiles — only the ones that change are sent
  • 6 digitsPair once; every connection is verified both ways

Features

To macOS, it’s just another monitor.

Target Display Mode is long gone. ScreenRelay brings the idea back in software, so perfectly good hardware doesn’t end up in a drawer.

  • A real extended display

    A virtual display that matches the other Mac’s panel, Retina “looks like” modes and More Space or Larger Text included.

  • Native quality over Thunderbolt

    Frames are compressed to BC7, a format GPUs read directly, so there’s nothing to decode and text stays sharp. Typing costs kilobytes, not a whole frame.

  • Works without Thunderbolt, too

    Over Wi‑Fi or Ethernet, ScreenRelay falls back to hardware HEVC/H.264 video.

  • A cursor that doesn’t lag

    The pointer isn’t part of the video. The display Mac moves its own cursor, so it responds at the panel’s refresh rate.

  • The old Mac stays usable

    The stream runs full screen in its own Space. Move the old Mac’s mouse and its cursor comes back; press Esc to leave full screen.

  • Sleeps with your Mac

    When your Mac sleeps, the display’s panel turns off. When it wakes, ScreenRelay reconnects and the picture comes back.

  • Paired and authenticated

    Pair once with a 6‑digit code. Every connection is verified in both directions, and by default the display only accepts the cable.

  • Lives in the menu bar

    Starts at login if you like, and reconnects on its own whenever both Macs are awake.

  • Built-in diagnostics

    Live frame rate, encode and decode times, and a link speed test that shows what your cable actually carries.

How it works

Only what changes makes the trip.

Your Mac draws to a virtual display. ScreenRelay captures it, encodes each frame to BC7 on the GPU and sends just the 64×64 tiles that changed. The pointer takes its own, faster lane.

01

Encoded on the GPU

Each frame becomes BC7 in about 4 ms for 5K on Apple silicon. The encoder is deterministic, so comparing blocks with the previous frame finds exactly what changed.

02

A pointer with its own lane

Cursor position and shape travel separately over UDP, and the display Mac moves its own hardware cursor. Nothing waits on a video frame.

03

Never falls behind

At most two frames are ever in flight. On slower links it switches to hardware HEVC/H.264 with frame acknowledgements, so the host never outpaces the display.

  • CGVirtualDisplay
  • ScreenCaptureKit
  • Metal
  • Bonjour · _screenrelay._tcp

Menu bar app

Set it up once. Then forget it’s there.

Turn on Open at Login on both Macs, leave Connect automatically on, and the display comes back whenever both Macs are awake — after sleep, too.

  • Picture: Automatic. Native BC7 over Thunderbolt, compressed video everywhere else.
  • Stream resolution. Keep it at 100% for native quality, or lower it for older Macs.
  • Wired only. The display only accepts connections over the cable until you allow Wi‑Fi.
  • Link speed test. See what your cable really carries.
  • Paired displays. Forget a paired Mac at any time.
The ScreenRelay host settings window: connection status and live stream statistics, then camera, brightness, targets, bitrate, picture and stream resolution, wired-only and auto-connect switches, paired displays and audio options.

Get started

Up and running in five steps.

Run the same build on both Macs. Pairing happens once; after that, ScreenRelay reconnects by itself.

  1. 01

    Connect the Macs

    Use a Thunderbolt cable and make sure Thunderbolt Bridge is active in System Settings › Network on both.

  2. 02

    Choose Target on the old Mac

    Open ScreenRelay and pick Target. This Mac becomes the display.

  3. 03

    Choose Host on your main Mac

    Grant Screen Recording when asked, then connect from the menu bar or the settings window.

  4. 04

    Pair once

    The old Mac shows a 6‑digit code. Type it on the host.

  5. 05

    Arrange your new display

    The old Mac switches to a full-screen view of your new display. Place it in System Settings › Displays.

Build it yourself

ScreenRelay Basic is free and open source. You’ll need Xcode 27 or later; the app runs on macOS 13 and up.

git clone https://github.com/projectnoa/ScreenRelay-Basic.git
  1. Open ScreenRelay.xcodeproj and choose your own Team under Signing & Capabilities. A free personal team works.
  2. Choose Product › Archive. Release builds are universal, so one app runs on Apple silicon and Intel.
  3. Copy ScreenRelay.app to Applications on both Macs.

Sharing builds with others? Sign them with a Developer ID and notarize them, or Gatekeeper will block the app.

On the display Mac: Esc leaves full screen, ⌘M minimizes, and closing the window disconnects.

Requirements

RequirementHost · your main MacDisplay · the old Mac
macOS13 Ventura or later13 Ventura or later
HardwareApple silicon recommendedAny Mac with a Metal GPU; BC7 support for native quality
PermissionsScreen Recording, Local NetworkLocal Network
ConnectionA Thunderbolt cable gives the best results: a Thunderbolt Bridge carries ~10+ Gbps, and native 5K at 60 fps needs about 7 Gbps. Wi‑Fi works for lighter use.

Tested with an Apple silicon host and a 2017 27″ 5K iMac (Radeon Pro 570, macOS 13.7).

FAQ

Good to know.

Is ScreenRelay free?

Yes. ScreenRelay Basic is free, open-source software under the GNU GPL v3. If it saved an old Mac from the drawer, you can buy me a coffee.

Which Macs can be the display?

Any Mac with a Metal GPU running macOS 13 Ventura or later. BC7 support gives you native quality. ScreenRelay is tested with a 2017 27″ 5K iMac.

Does it work over Wi‑Fi?

Yes. Over Wi‑Fi or Ethernet, ScreenRelay falls back to hardware HEVC/H.264 video, which is fine for lighter use. The display only accepts wired connections until you allow Wi‑Fi, and you should only do that on networks you trust.

Is my screen secure?

Your screen only goes to a Mac you paired with, and only after both Macs prove they hold the pairing key (HMAC-SHA256 over fresh nonces). Keys live in each Mac’s Keychain. The video stream itself isn’t encrypted, which keeps latency and CPU use low on a direct cable between your own Macs.

Why isn’t ScreenRelay sandboxed?

The virtual display API it relies on only works outside the sandbox. It’s also a private macOS API — tools like DeskPad and BetterDisplay use it too — so a future macOS release could change it.

It says “Network is down” when connecting.

macOS is blocking ScreenRelay’s access to the local network. Open System Settings › Privacy & Security › Local Network and turn ScreenRelay off and back on.

The display isn’t found, or connects over Wi‑Fi.

Check that Thunderbolt Bridge has a 169.254.x.x address on both Macs. With wired only on, ScreenRelay binds its connection to the bridge directly. You can also type the display’s address, shown in its window.

The picture is soft or laggy.

Make sure the stream reads “BC7, native quality” (Picture: Automatic, over Thunderbolt) and that Stream resolution is 100%.

I can’t find the app.

It lives in the menu bar: the relay icon on the host, the monitor icon on the display. If a crowded menu bar hides it behind the notch, open ScreenRelay again from Finder or Spotlight to show its window.

That old Mac still has a beautiful screen.

Put it back to work. ScreenRelay Basic is free and open source. Grab the code, build it in Xcode and pair once.