GuidesHosting choices

Claude and Codex desktop apps over SSH: what keeps running

Claude's desktop app and the ChatGPT app can work on your own server over SSH: what each needs there, and what keeps running when you close the laptop.

October 22, 2026The Everpod team
The short answer

Both makers’ desktop apps can work on a server of your own over SSH. In Claude’s desktop app, the Code tab, which is Claude Code, opens an SSH session and installs Claude Code on the server itself. In the ChatGPT desktop app, which Codex joined in July 2026, you add the host under Settings, then Connections, after installing and signing in to Codex on the server yourself.

What happens when the laptop closes differs. Anthropic documents that a Claude task keeps running on the server until it finishes, needs you, or hits a limit. With a Claude account, the main limit is the task’s sign-in, which Desktop renews only while it is connected, so “don’t count on a task to run overnight.” OpenAI’s docs don’t say what a chat on an SSH host does when the app goes away. For work that must run with nobody connected, start the agent on the server itself, in tmux or on a timer.

The two apps, and where they run

Claude’s desktop app over SSH

In the Code tab, a new SSH connection asks for the host (user@hostname or a name from ~/.ssh/config), a port, an optional key and a folder on the server for worktrees. Then you pick a project folder on the server, and Desktop keeps the pair as a saved environment. On macOS and Linux it runs your own OpenSSH client (7.6 or later), so the settings of a config entry apply, jump hosts included. It always leaves agent forwarding and port forwarding off, even if your config turns them on, so for git push and gh from a session, set up a credential on the server itself.

“Desktop installs Claude Code on the remote machine automatically the first time you connect,” in Anthropic’s words. It puts a helper and its own copy of Claude Code under ~/.claude/remote/, separate from a claude you installed there yourself, and both run as your user with no sudo. What the server needs:

The session reads its skills, settings, hooks and MCP servers from the server’s ~/.claude/, not your laptop’s. A proxy or a CA certificate goes in the server’s ~/.claude/settings.json, since an SSH session doesn’t read your shell’s profile files.

What keeps running when you close the laptop

On a server, the docs are plain: “If your computer sleeps, you lose your network, or you quit Desktop, the task goes on until it finishes, needs you, or reaches one of the limits. Closing the lid counts as sleep.” Claude Code runs under the helper on the server, not through your SSH connection; this needs Desktop v2.31226.0 or later. The limits, from the same page:

Coming back after sleep, Desktop reattaches to a task that is still running if it can log in without a prompt, and catches up from a 16 MiB buffer of recent output. After a quit, Desktop on macOS or Linux rejoins the process if it can. Desktop on Windows “never rejoins after a quit”, so leave it open during a long task there. For a task that must run through the night, Anthropic’s advice is to keep the laptop awake with the lid open and Desktop running, or to use a cloud session instead.

The ChatGPT app over SSH

OpenAI’s remote connections page has four steps:

  1. Give the server a Host entry in ~/.ssh/config. The app reads concrete aliases from it and ignores patterns.
  2. Check that ssh to that alias works from the computer running the app.
  3. Install Codex on the server and sign in to it there. The app starts the server’s Codex app server over SSH in your login shell, so codex has to be on that shell’s PATH.
  4. In the app, open Settings, then Connections, add or enable the host, and choose a project folder on it.

Signing in on a server with no browser is the device-code login, codex login --device-auth, which you first enable in ChatGPT’s security settings, or in a workspace’s permissions; the alternative is copying ~/.codex/auth.json from a machine that has one. Codex CLI on a Linux server covers both. A chat in a remote project runs its commands and edits on the server, and handoff moves a chat and its Git state between your computer and the host.

What the docs don’t cover: whether a chat that is running on the SSH host carries on when the app closes, the laptop sleeps or the network drops, and which machine keeps its transcript. Their sentences about sleep concern a desktop host reached from a phone: if that computer sleeps, “remote access stops until it’s available again.” For work that has to continue while your computer is off, OpenAI points to Codex Cloud. Until the docs say more, treat a chat on an SSH host as needing the app connected.

What a session over SSH can’t do

In Claude’s app, an SSH session has no Browser pane for previewing the app you are building: forward its port yourself, for example ssh -N -L 3000:localhost:3000 my-server, and open http://localhost:3000. The file pane is view-only, so you ask Claude for edits. Merge when ready is off for pull requests, a session can’t be moved to the cloud, and scheduled tasks are local only. Remote Control, the phone’s window onto a session, is documented for local sessions; for a phone, the documented server route is claude started on the server, as in Claude Code from your phone.

The only features of SSH projects that OpenAI’s docs describe are handoff and composer predictions. They say nothing either way about the app’s browser, previews, terminal or file editing there.

Over Tailscale SSH

Neither maker mentions Tailscale, but its SSH page answers the parts that matter. Tailscale SSH supports SFTP, which Claude’s app requires, and it always uses port 22. It needs no SSH key, so the key field stays empty. Check mode, which the default SSH rule of a new or unmodified Tailscale network uses, puts up a sign-in link on the device that connects, and asks again after 12 hours by default. Desktop reconnects by itself only where it can log in without a prompt, so once a check is due it waits for you, and Anthropic gives 45 seconds to approve a login that waits on you. The check is made on the device that connects, so logging in once with ssh from a terminal on that computer, and approving it there, covers the app’s connections from it until the period runs out. Restarting Tailscale’s daemon, as an upgrade does, ends the SSH sessions; whether it also ends Claude’s helper isn’t documented by either side. Tailscale SSH for an agent’s server covers the policy that decides who can connect.

When nobody is connected

The apps are windows onto the server. The work that keeps going with the laptop shut, with no app to rejoin and nothing renewed from your laptop, is the agent started and signed in on the server itself: an interactive session inside tmux, or a scripted run on a timer, as in Claude Code headless on a schedule. That needs a server that is on all the time. Everpod’s developer pod is a permanent cloud computer (VPS), set up and secured for you, with your pick of Claude Code, Codex, OpenCode, Pi, Hermes and OpenClaw installed, reached only through your own private network, from $24 a month. It accepts no incoming connections from the open internet: no open ports and no public SSH. A server your agent starts is reachable from your devices and from nowhere else. By default the machine does not start connections to your other devices.

Run Claude Code, Codex, OpenCode, Pi, Hermes or OpenClaw on an always-on developer pod.

A developer pod is a permanent cloud computer (VPS), set up and secured for you, with your pick of Claude Code, Codex, OpenCode, Pi, Hermes and OpenClaw installed. Run more agents at once than your laptop can hold, and keep them working when it’s closed. From $24 a month, built in about ten minutes.