Glass

Glass documentation

Glass is a free, open-source, low-latency remote desktop for macOS and Linux (Wayland). Install it on the computer you want to control, then see and control it from a browser on an iPad, iPhone, or another computer. Typical latency is 15–30 ms from screen capture to display, including over Tailscale. Nothing to install on the viewing device.

What Glass does

Glass streams a Mac's screen to a web browser and sends mouse, keyboard, and touch input back. It is built for speed, using the same techniques as game-streaming tools (hardware video encoding, UDP-style transport, no buffering) instead of the video-call stack that tools like Chrome Remote Desktop use.

Features:

Install

On the Mac you want to control, run in Terminal:

curl -fsSL glassdesk.dev | sh

The installer:

  1. Checks that this is macOS 13 or newer.
  2. Downloads the latest release (a universal binary for Apple Silicon and Intel) and verifies its SHA-256 checksum.
  3. Installs to ~/.glass and links the glass command into ~/.local/bin (adding that to your PATH if needed).
  4. Starts glass setup, the interactive setup guide.

Running the same command again updates Glass in place and restarts the background service.

Setup (glass setup)

The setup guide walks through four steps and checks each one live:

  1. Tailscale (remote access). Glass uses Tailscale to reach the Mac securely from other devices, with no port forwarding. Setup checks that Tailscale is installed and signed in, and that HTTPS Certificates are enabled for your tailnet (one switch on https://login.tailscale.com/admin/dns; browsers require HTTPS for the APIs Glass uses). It then fetches a certificate for the Mac's tailnet name. You can skip this to use Glass only on the Mac itself.
  2. Background service. Glass installs a per-user LaunchAgent (dev.glassdesk.host) so it runs in the background, optionally starts at login, and restarts if it crashes.
  3. Screen Recording permission. macOS asks to let glass record the screen. Setup opens the right System Settings pane and waits until capture works.
  4. Accessibility permission. Needed to inject mouse and keyboard input. Setup opens the pane and waits until it's allowed.

It finishes by showing the connect URL and a QR code to scan with the iPad.

Connecting

  1. Install Tailscale on the iPad (or other device) and sign in with the same account as the Mac.
  2. Open https://<your-mac>.<your-tailnet>.ts.net:8080 (shown at the end of setup, and by glass status).
  3. Optional: in Safari or Chrome, tap Share → Add to Home Screen, then launch Glass from its icon. It runs fullscreen with no browser UI, so Safari's own shortcuts (⌘W, ⌘T, ⌘L, ⌘R) reach the Mac instead.

Devices that aren't on your tailnet, or belong to another tailnet user, are asked for the access token from ~/.config/glass/token. A link containing #t=<token> signs a browser in once and is then remembered.

Using Glass

The toolbar (top right, fades when idle) has:

Touch gestures: tap = click, drag = drag, long-press = right-click, two fingers = scroll.

Local shortcuts (not sent to the Mac): Ctrl+Shift+F toggles fullscreen, Ctrl+Shift+H toggles the stats overlay.

Keyboard and ⌘ shortcuts on iPad

iPadOS reserves a few shortcuts before any app or web page sees them: ⌘Tab, ⌘Space, ⌘H, ⌘⇧3/4/5, and Globe-key combinations. Glass offers three ways around this:

Everything else, including ⌘C, ⌘V, ⌘Q, ⌘W, and arrows, works directly from a hardware keyboard.

Clipboard

CLI reference

glass               Run the host in the foreground (the background service runs this)
glass setup         Guided setup: Tailscale, background service, permissions, connect
glass status        Is the service running? Capturing? Permissions? Connect URL
glass feedback "…"  Send feedback to the developers
glass uninstall     Stop the background service and remove it from login items
glass --version

Host options: --http-port (default 8080), --wt-port (UDP, default 4433), --fps (default 60), --mbps (default 30), --scale, --cert/--key (custom TLS), --token-file, --web-dir, --log-dir.

Files:

How it works

Linux host (beta)

The same one-liner installs Glass on Linux x86_64. The Linux host uses:

Dependencies on Arch / Omarchy: sudo pacman -S --needed pipewire xdg-desktop-portal-hyprland wl-clipboard tailscale. Setup checks for these.

Keys arrive as typed on Linux hosts: ⌘ on an Apple keyboard is Super. Paste from the viewer's clipboard sends Ctrl+V.

Viewing from Linux or Windows (Omarchy included)

Open the Glass URL in Chromium, Chrome, or Firefox with Tailscale running. When the host is a Mac, PC keyboard mode (on by default for Linux and Windows browsers; toggle it in the ⌘ menu) translates PC conventions:

Hyprland keeps its own Super shortcuts. In fullscreen (Ctrl+Shift+F), Chromium's Keyboard Lock passes everything else through. If the browser has no hardware H.264 decoder, Glass uses software decoding automatically.

Security and privacy

Requirements

Troubleshooting

FAQ

Is Glass free? Yes, and open source under the MIT license: https://github.com/Ntarasiuk/glass

Do I need to install anything on the iPad? No, just a browser (and Tailscale for remote access).

Can I use it without Tailscale? On the Mac itself (localhost), yes. For other devices, Glass needs an HTTPS certificate the browser trusts; Tailscale provides one automatically. Advanced users can pass their own certificate with --cert/--key.

How is it different from Chrome Remote Desktop? Chrome Remote Desktop uses WebRTC's video-call pipeline, which buffers for smoothness. Glass skips that: no jitter buffer, hardware decode straight to canvas, and UDP-style datagrams. Glass also streams multiple displays at once, transfers files, and recovers from iPad tab suspension automatically.

How is it different from Parsec, Moonlight, or Jump Desktop? Those need a native app on the viewing device. Glass runs in a browser, aims for similar latency, and is built specifically around a Mac host.

Does it work on Linux? Yes, as a viewer in any modern browser, and as a host on Wayland (beta). Windows hosts? Not yet.

Does it stream audio? Yes, Mac system audio, toggled per device.

Can I control a locked Mac? Yes; type your password at the lock screen. FileVault still requires one local login after a reboot.

Feedback