Pane can run worktrees, terminals, and coding agents on a VM, WSL distro, desktop, or another machine while you keep the Pane UI on the device in front of you. It does this with a small Pane remote daemon on the host. Your client Pane app connects to that host with one pane-remote://... code.
Install and configure any agent CLI you want to use, such as Codex or Claude Code, on the remote host. Agents use that host’s repos, shell, Git config, environment variables, and credentials.
Two Pieces
There are two sides to Remote Pane:
- Host machine: the machine that owns the repos, terminals, worktrees, and agent processes.
- Client machine: the device running the Pane UI that imports the connection code.
The host can be your Windows PC, a WSL distro, a Mac mini, a Linux box, or a cloud VM. The client can be another Pane desktop app on your laptop or desktop.
Recommended Setup
The easiest path is through Pane itself:
- On the host machine, open
Settings > Remote Pane. - Under
Set Up This Machine, choose a data mode. - Choose
Tailscale. - Click
Set Up Tailscale & Create Code. - If Pane offers
Open in Pane Terminal and Run Setup, use it. The terminal can install Tailscale when needed, walk through login, configure Tailscale Serve, and print the connection code.
You can also run the standalone setup command on the host:
The setup flow installs Pane if needed, configures the remote daemon, configures Tailscale Serve when requested, and prints one pane-remote://... code.
Paste that full code into the client Pane app:
- Open
Settings. - Expand
Remote Pane. - Paste the code into
Connection Code. - Click
Import & Connect.
If the client device does not have Tailscale installed or cannot resolve the host’s Tailscale hostname, Pane will show a recovery card. Use Open in Pane Terminal and Run Setup on the client, then retry the saved profile.
Host Data Modes
Remote Pane supports two host modes:
Current Pane Data
Use this when you want another device to control the same Pane app data that is already open on the host.
- Uses this Pane install’s projects, sessions, and settings.
- The remote host is live while Pane is open on the host.
- Best for a desktop, WSL machine, or laptop you actively keep running.
Isolated Daemon Data
Use this when you want a separate remote daemon data directory.
- Uses separate daemon data instead of the host app’s current Pane data.
- Can install a background service where supported.
- Best for a VM, server, or always-on remote host.
Tailscale Details
Pane keeps the daemon bound to loopback (127.0.0.1) by default. Tailscale Serve exposes that loopback daemon safely inside your tailnet.
tailscale serve --bg http://127.0.0.1:42137Both devices must be signed into the same Tailscale account or tailnet. On macOS and Windows, the Tailscale app may need a moment after first login before MagicDNS and Serve are ready. If the profile times out immediately after setup, wait a minute or two and click Retry Connection.
The connection code may include a Tailscale hostname and a Tailscale IP fallback so Pane can still connect when the OS DNS resolver is slow to pick up MagicDNS.
Host Controls
When this machine is accepting remote connections, Settings > Remote Pane shows a live host status.
From the host, you can:
- see whether the remote host is live
- see connected remote clients
- disconnect live clients
- revoke a paired client’s access token
- stop the remote host
Disconnecting a client drops the current connection. Revoking a client removes its saved access, so that client cannot reconnect with the same imported profile.
The sidebar also shows a Remote status dot. Green means this machine is hosting. Blue means this app is connected to a remote runtime.
Multi-Client Device Labels
When multiple clients connect to the same host, the sidebar shows a viewer badge next to each session indicating which client is viewing it.
Each client is identified by its device label, set automatically from the machine hostname. Override it with the --device-label flag during setup:
pane --remote-setup --device-label "parsa@macbook"Permissions in Remote Mode
Permission prompts route to the client that owns the session. If a Claude Code or Codex agent asks for permission, the dialog appears on the client that started that session.
When the owning client is disconnected, prompts queue until it reconnects. Unanswered prompts are auto-denied after five minutes. Clients viewing a session they do not own see a read-only indicator instead of the permission dialog.
Remote Desktop For GUI Apps
Pane controls the coding runtime: worktrees, terminals, Git actions, and AI agent panels run on the remote host.
For GUI work on the host, use Remote Desktop alongside Pane. This is the right path for:
- Electron apps
- native app windows
- browser previews that open on the host
- OS-level setup screens
When Pane is connected to a remote runtime, the sidebar shows a Remote Desktop shortcut that opens Chrome Remote Desktop. Set up Chrome Remote Desktop on the host if you want full visual access to that machine.
When connected to a remote runtime, the sidebar shows a Remote Desktop shortcut button that opens Chrome Remote Desktop directly.
CLI Options
For a custom label:
curl -fsSL https://runpane.com/install-remote.sh | sh -s -- --label "GPU VM"For a validation or nightly build:
curl -fsSL https://runpane.com/install-remote.sh | sh -s -- --channel nightlyPowerShell users can run Pane setup again after install:
pane --remote-setup --label "Windows VM"Useful setup flags:
--label "Name": set the host label shown in the client.--pane-dir <path>: choose the daemon data directory.--listen-port 42137: choose the local daemon port.--auto-listen-port: pick a nearby open port if the requested one is busy.--prefer-tunnel tailscale: prefer Tailscale Serve.--no-install-service: skip background service installation.--no-tailscale-serve: skip Tailscale Serve setup.--print-only: print commands without applying setup.
Fallbacks
If Tailscale is not available, use one of the advanced connection modes in Settings:
SSH Tunnel
The setup output prints an SSH local-forward command:
ssh -N -L 42137:127.0.0.1:42137 user@your-hostRun that on the client machine before connecting the saved profile.
Manual HTTPS
Use Manual HTTPS when you already have a trusted tunnel or reverse proxy that forwards to the host daemon.
Only expose the daemon through a trusted private tunnel or HTTPS endpoint. Do not expose the raw loopback daemon directly to the public internet.
Security
The import code contains a bearer token. Treat it like a secret. If a code or client profile is shared accidentally, open Settings > Remote Pane on the host and revoke that client.