Latch app icon

Latch for GL.iNet Comet

The KVM, native on your Mac.

A Mac app for GL.iNet Comet and GLKVM, not a browser tab. H.264 straight off the LAN, a tab for every machine.

Version 0.1.2 · macOS 14 or later · Apple silicon · Signed and notarized · Not a GL.iNet product

Tour, about 35 seconds, no sound. Drawn mock-ups with made-up machines — not a screen recording.
Ubuntu 24.04 LTS rack-01 tty1 rack-01 login: admin Password: Last login: Tue Sep 22 21:14:03 from 10.0.1.20 admin@rack-01:~$ systemctl status nginx ● nginx.service - A high performance web server Loaded: loaded (/lib/systemd/system/nginx.service) Active: active (running) since Tue 21:02:11 admin@rack-01:~$ sudo apt upgrade -y Reading package lists... Done admin@rack-01:~$ _
Aptio Setup — BIOS Main Advanced Boot Security Save & Exit System Date [Tue 09/22/2026] Memory 32768 MB Boot Option #1 [Latch virtual CD] Boot Option #2 [NVMe: Samsung 990] F10: Save and Exit ESC: Exit
pathDirect H.264 rate20 Mbps gop15 hidconnected
Drop to mount ubuntu-24.04.iso

A drawing of the app, not a recording. The machines are made up.

Latch vs the browser UI.

The KVM’s stock interface is a web page. That works anywhere, and it’s the right tool for plenty of jobs. A native app can do a few things a browser tab can’t. Here is the task-by-task list.

Same tasks, side by side, about 25 seconds. Drawn mock-ups with made-up machines — not a screen recording.
TaskIn a browser tabIn Latch
Keep ⌘Tab and ⌘⇧ chords on the remote machineA browser can’t stop macOS from handling system shortcuts, so they act on your Mac, not the guest.Captured while the KVM is focused and sent only to the remote machine. Needs Accessibility permission; the toggle is “Send system shortcuts to KVM”.
Run several machinesEach device is a page among your other tabs and windows.Tabs inside one app. Background tabs stay connected. Show Side by Side puts up to four panes in one window.
Put a machine on its own displayDrag a tab out and size the window yourself.Open in New Window on any display, and Move to Home Window to bring it back. Hide a session and stay connected.
Type the clipboard into a BIOS or consoleDepends on what the web UI implements; pages get the Mac clipboard only through the browser’s own gates.Toolbar Paste to Machine types the Mac clipboard as keystrokes, chunked with progress and Stop Paste. It asks first above 10,000 characters.
Get text off the remote screenDepends on what the web UI implements (the KVM itself can do OCR).Toolbar Copy Text runs OCR on the device and puts the result on the Mac clipboard.
Mount an installer imageVia the web UI’s own mount flow.Drop an .iso on the window to mount it as a virtual CD.
Windows guest on a Mac keyboardWhatever mapping the page applies.Swap Command/Control. Plus absolute or relative mouse, a jiggle, and scroll direction and rate.
Send special chordsWhatever the page offers.Shortcuts menu: Ctrl+Alt+Delete, Meta+L, Ctrl+Alt+F4, and extras you save.
Hidden or covered sessionThe browser decides how to treat a background tab.Hidden tabs and covered windows pause decode after the first frame. Optional Battery mode caps frame rate and bitrate.
When the video path breaksReload the page.Automatic fallback: Direct H.264, then WebRTC, then JPEG snapshots. Direct recovery is bounded (up to 2 reconnects in 8 s, then WebRTC).
Keep the admin passwordYour browser’s password manager.macOS Keychain, this device only, when unlocked.
Trust the KVM’s certificateBrowser certificate trust rules.TLS leaf-certificate pinning, trust on first use. Forget TLS pin resets it.
Let an agent use the machineNot applicable.Optional local MCP server: screenshot, OCR, typing, mouse, ISO mount, power. 127.0.0.1 only, bearer token, off by default.

The browser column describes what a browser tab can do in general. The stock web UI may offer some of these itself. I haven’t measured Latch against it, so there are no speed or CPU claims here.

Direct video

H.264 off the box, decoded on the Mac.

On your LAN, Latch reads H.264 from the KVM’s own websocket and hands it to VideoToolbox for hardware decode, drawn through AVSampleBufferDisplayLayer.

  • LAN Max profile: Direct, 20 Mbps, 1080p, no STUN
  • Up to 60 fps observed on a LAN from a 1080p60 source (measured by the developer, 2026-09-22)
  • Stats HUD shows the live path, rate, queue and drops

1. Direct H.264 (LAN)

/api/media/ws?video=h264→VideoToolbox→window

No audio on this path. Needs a route on the local network.

2. WebRTC

If Direct can’t hold→WebRTC

Recovery is bounded: up to 2 Direct reconnects in 8 s, then WebRTC.

3. JPEG snapshots

Last resort→snapshot view

This is also what you get over Tailscale, where there is no LAN route.

Sessions

Every machine gets a tab.

Connect to several KVMs at once. The ones you aren’t looking at stay connected behind their tabs, so switching is instant.

  • Side by side — up to four panes; click one to type into it
  • Open in New Window — a machine per display
  • Two live KVMs are guaranteed; more are best effort
  • Move to Home Window brings a detached machine back
Show Side by Sideright-click a tab
Open in New Windowright-click a tab
Hide, stay connectedbackground tab
Move to Home Windowdetached window
Saved devicespassword in Keychain

Keyboard and mouse

⌘Tab goes to the other machine.

While a KVM is focused, system shortcuts go only to the remote machine. A browser tab can’t keep ⌘Tab and friends from your Mac. Latch asks for Accessibility permission to do it, and “Send system shortcuts to KVM” turns it off.

  • A bare ⌘ tap isn’t sent, and modifiers don’t stick after an interruption
  • Swap Command/Control for Windows guests
  • Absolute or relative mouse, a jiggle, and scroll direction and rate
  • ⌘V and ⌘C go to the guest as real chords
Ctrl+Alt+DeleteShortcuts menu
Meta+LShortcuts menu
Ctrl+Alt+F4Shortcuts menu
Your own extrassaved in Shortcuts
Type the Mac clipboardtoolbar: Paste to Machine
OCR the remote screentoolbar: Copy Text
Mount an installerdrop an .iso

Agents

Let Claude drive the KVM.

Turn on the built-in MCP server and an agent can see the remote screen and use its keyboard and mouse. It listens on 127.0.0.1 only, needs a bearer token, and is off until you turn it on.

  • screenshot and ocr to read the screen
  • type_text, press_keys, click to act
  • mouse, drag, scroll, mount_iso, atx, wol, set_quality
  • connect and status across every saved device
  • kvm_api refuses firmware, factory-reset and auth paths
# Settings → Agent → copy
claude mcp add --transport http latch \
  http://127.0.0.1:41417/mcp \
  --header "Authorization: Bearer …"

The rest of the toolbar.

Small things you reach for on a rack or a bring-up bench.

Power

ATX, reset, Wake-on-LAN

ATX Power, long press and Reset from the power menu. Wake-on-LAN and Fingerbot are there too.

Media

Drop an ISO

Drop an image on the window and it mounts as a virtual CD. Set the boot order in BIOS from the same screen.

Paste

Stoppable, and polite

Paste to Machine sends in chunks with progress, has a Stop Paste button, and asks before typing more than 10,000 characters.

Battery

Battery mode

Off by default. Gentle is 30 fps at 8 Mbps, Balanced 30 at 5, Saver 24 at 2. Hidden tabs already pause decode.

Security

Keychain and pinning

Passwords live in the macOS Keychain, on this device only. TLS leaf certificates are pinned on first use; Forget TLS pin resets one.

Updates

Signed, notarized, Sparkle

Developer ID signed and notarized by Apple, about 9.5 MB, and it updates itself.

The stats HUD reads out what the video path is doing:

PATHFPSKBPSRTTSIZEQUEUEDROPSIDRRECHID

Numbers, with their conditions.

All measured by the developer, and all compared against earlier builds of Latch. None are comparisons with the stock web UI.

60 fps

Observed on a LAN

Up to 60 fps from a 1080p60 source, Direct path.

2026-09-22

200% → 12–28%

CPU, two Direct sessions

After the September engine rework, versus Latch’s own earlier build.

M4 Max

1.1–1.7 s

Reconnect to first frame

Was 3.9–6.2 s in the earlier Latch build.

vs earlier Latch

What it needs.

Device

GL.iNet Comet / GLKVM

Built on the RM10 family. Add it by the Ethernet IP from its touchscreen.

Mac

macOS 14, Apple silicon

Sonoma or later. The build is arm64 only.

Network

Same LAN for Direct

Direct H.264 needs a local route. Over Tailscale you get the snapshot view instead. Only two live KVMs are guaranteed; more are best effort.

Limits

Audio

Direct carries no audio. If you need sound, the stock web UI is still the place for it.

Get Latch.

For macOS 14 or later on Apple silicon. Updates arrive on their own. Early build — tell me what breaks.

Step 1

Install. Unzip and drag Latch into Applications. Then add the Ethernet IP from the Comet’s touchscreen.

Step 2

Connect. Enter the admin password once. Latch keeps it in your Keychain.

Step 3

Click the video. Latch applies LAN Max and you’re typing on the other machine.

Signed and notarized by Apple · 9.5 MB · Updates itself with Sparkle · Appcast · What’s new · Not affiliated with GL.iNet