macOS
- Requires
- macOS 13 or later on Apple Silicon
- Get it
- Prebuilt app, or one command in Terminal
- Connect
- Yes. Hardware HEVC and H.264 decoding
- Share
- Yes. Grant Screen Recording once; setup downloads the streaming engine
Latch streams a whole desktop, full screen, over your own Tailscale network. Mac, Windows, Linux and a VPS container run the same app: each one lists the others, and each one can share its own desktop.
01Session
Every install lists every other machine on your Tailscale account and can open its desktop. There is no host or client role to choose.
Step 1
On the computer you want to reach, open the Sharing tab. On Windows, Set up as administrator takes one administrator prompt: it installs the streaming engine as a service, opens the control port to your tailnet only, turns Fast Startup off and arms the network card for Wake-on-LAN. A Mac asks for Screen Recording once.
Step 2
The first time, Latch picks a PIN and sends it over Tailscale to Latch on the other machine, which enters it for you. That machine’s certificate is pinned from then on. If a Windows PC is asleep, Latch wakes it and waits.
Step 3
Full screen by default. Click the picture and the mouse is captured, as in a game, so games that read raw mouse movement work. Ctrl+Alt (Control-Option on a Mac) is the host key, as in a hypervisor: it frees the mouse and drops this toolbar over the picture. The text clipboard follows you both ways.
02Network
A machine answers only peers signed in to the same Tailscale account. There is no Latch account or password, and the control port is open to your tailnet only.
FromThis machine
ToYour other machine
tailscale whois puts on your account. Everyone else
gets a 403.
100.64.0.0/10, Tailscale’s address range, and the
streaming ports to your tailnet.
03Specifications
These are the settings Latch 4.1.0 offers, not benchmarks. What you get depends on both machines and the path between them.
Match screen, this display’s own pixel size, by default.
The PC switches its display to the size asked for, and back when you disconnect.
30, 60, 90, 120, 144, 165 or 240 fps. 60 by default.
Above 60 needs a display on the sharing machine that runs that fast.
2 to 150 Mbps. The encoder aims at it while the picture moves; a still screen uses less.
50 Mbps by default, on every path.
Custom sets all three yourself.
HEVC when both ends can use it, H.264 otherwise. Either can be forced.
The streaming engine on the sharing machine: AMD, NVIDIA or Intel GPU encoders on Windows, software on a VPS with no GPU.
Opus, played on this machine’s default output.
Captured mouse with raw movement, or free. ⌘ acts as Ctrl on a PC by default.
Text, both ways, up to 32 KB.
Tailscale (WireGuard): direct, your own peer relay, or DERP.
1184-byte packets, sized for the tunnel’s 1280-byte MTU.
The Mac app checks GitHub about every six hours, verifies the SHA-256 and code signature, and installs when no stream is running.
It sends new Latch Host builds to Windows PCs over the control port.
Rust. The stream protocol is moonlight-common-c; the streaming engine is Sunshine.
GPL-3.0-or-later.
04Platforms
Each install lists the others and can connect to them. Every machine needs Tailscale, signed in to the same account.
05Download
Released 2 October 2026. First install Tailscale on each machine and sign in with the same account. A copy of an earlier version that is already installed updates itself and keeps its settings, pairings and streaming engine.
In Terminal. Downloads the latest release, checks its SHA-256 and signature, installs it in Applications and opens it.
curl -fsSL https://raw.githubusercontent.com/MrBeldum/latch/main/scripts/install-macos-release.sh | bash
Downloaded the archive in a browser instead? The app is ad-hoc
signed, so unpack it and clear the quarantine flag first:
xattr -dr com.apple.quarantine Latch.app
latch-host.exe, or
install-host.ps1 for shortcuts and start at
logon.
Put a Tailscale auth key and a hostname in .env,
then start the container.
git clone https://github.com/MrBeldum/latch
cd latch
cp deploy/node/env.example deploy/node/.env
# paste a Tailscale auth key, pick TS_HOSTNAME
docker compose -f deploy/node/docker-compose.yml up -d --build
Needs Rust, a C compiler and CMake. On Linux this is the way
in; on a Mac, scripts/install-macos.sh builds,
bundles and installs.