# Remote Pane over SSH

import { Callout } from "nextra/components";

Yes. SSH is supported for self-hosted Remote Pane.

Remote Pane is not just "SSH into a box." The model is:

1. Run a small Pane remote daemon on the machine that owns your repos, terminals, worktrees, and agents.
2. Use SSH, Tailscale, or a trusted HTTPS tunnel as the secure path to that daemon.
3. Connect desktop Pane or the browser app at [runpane.com/app](https://runpane.com/app/) with the printed `pane-remote://...` code.

That daemon is what makes Remote Pane more than just SSH. It handles your projects, sessions, terminal streaming, file access, git status, diffs, and routes permission prompts back to your screen.

## Quick Answers

### Is SSH supported?

Yes. Use `--prefer-tunnel ssh` when you run remote setup. Pane will print the SSH local-forward command and a `pane-remote://...` code.

### Is this just SSH with a nicer UI?

No. SSH is just the secure tunnel. The Pane daemon is what actually runs your sessions, terminals, and git operations on the remote machine.

### Do I need to expose a port?

No for the normal SSH setup. The daemon listens on loopback by default, and SSH forwards your local `127.0.0.1` port to the daemon on the remote host.

### Does this work from my phone?

Usually not with desktop-local SSH tunnel mode. A phone browser needs to reach the daemon URL from the phone itself. Use the default Tailscale setup or Manual HTTPS for mobile access through [runpane.com/app](https://runpane.com/app/).

### Where do I paste the code?

In desktop Pane, go to `Settings > Remote Pane`. In the browser app, open [runpane.com/app](https://runpane.com/app/). Paste the full `pane-remote://...` code in either place.

## When to Use SSH

Use SSH tunnel mode when your client is a laptop or desktop that can keep a local forwarding command running.

For phones and tablets, prefer the default Tailscale setup or Manual HTTPS. SSH tunnel mode forwards `127.0.0.1` on the device running the tunnel, so a phone browser cannot use a laptop's localhost tunnel unless you set up a separate reachable tunnel.

<Callout type="info">
  If your goal is mobile access, start with [Remote VM Setup](/docs/remote-daemon) and choose the default Tailscale path. Then open [runpane.com/app](https://runpane.com/app/) on your phone.
</Callout>

## First-Time SSH Setup

Run one of these commands on the remote machine, not on your laptop.

### Guided Setup

Run the guided setup on the remote machine and choose **Set up this machine as a remote host**. When it asks for a tunnel preference, choose SSH.

```bash
npx --yes runpane@latest
```

You can also use:

```bash
pnpm dlx runpane@latest
pipx run runpane
```

### Explicit Daemon Command

```bash
npx --yes runpane@latest install daemon --label "My Server" --prefer-tunnel ssh
```

### Pane Already Installed

```bash
pane --remote-setup --label "My Server" --prefer-tunnel ssh
```

### Pane Source Checkout

```bash
pnpm remote:setup -- --label "My Server" --prefer-tunnel ssh
```

### Windows PowerShell

```powershell
npx --yes runpane@latest install daemon --label "My Server" --prefer-tunnel ssh
```

### Shell Installer Fallback

```powershell
& ([scriptblock]::Create((irm https://runpane.com/install-remote.ps1))) -Label "My Server" -PreferTunnel ssh
```

## What Setup Prints

SSH setup prints two important things:

1. A `pane-remote://...` connection code.
2. An SSH forwarding command, usually like this:

```bash
ssh -N -L 42137:127.0.0.1:42137 user@your-host
```

Treat the `pane-remote://...` code like a secret. It contains the bearer token that lets a client control that remote host.

## Connect From Desktop Pane

On your local laptop or desktop:

1. Run the printed SSH forwarding command.
2. Leave that terminal open.
3. Open desktop Pane.
4. Go to `Settings > Remote Pane`.
5. Paste the full `pane-remote://...` code into `Connection Code`.
6. Click `Import & Connect`.

After that, switching to that remote profile means new panes and sessions run on the remote machine instead of your local one. You can still switch back to local mode or connect to a different saved remote profile.

## Why Pane Uses a Daemon

SSH is the secure transport. Pane's daemon is the product runtime.

Plain SSH gives you a shell. Remote Pane gives you the full Pane experience: sessions, terminals, file access, git operations, and permission prompts, all running on the remote machine.

The daemon listens on loopback by default, so nothing is exposed to the internet or your LAN. SSH, Tailscale, or a trusted HTTPS proxy is how you connect to it.

## Desktop vs Browser App

Desktop Pane has the full Pane surface, including every panel type.

The browser app at [runpane.com/app](https://runpane.com/app/) currently supports terminal-backed remote sessions. It is useful when you want to check or steer sessions from another desktop, phone, or tablet.

For browser and phone access, the remote daemon URL must be reachable from that device. That is why Tailscale or Manual HTTPS is usually the right path for mobile.

## Related Docs

- [Remote VM Setup](/docs/remote-daemon)
- [Troubleshooting & FAQ](/docs/troubleshooting#remote-connections)
- [Remote Pane browser app](https://runpane.com/app/)
