Skip to content

Remote machines

Your agents can run on a bigger machine than the one you carry: a dev server, a cloud VM, the desktop at home. cornercase remote opens the window on your laptop and attaches it to the cornercase server on that machine:

Terminal window
cornercase remote devbox

devbox is anything ssh takes: a host from ~/.ssh/config, or user@host. cornercase runs your own ssh, so your config, keys, agent, ProxyJump and ControlMaster all apply, and cornercase never sees a password or a key.

your laptop devbox
cornercase remote ── ssh ───────────▶ cornercase proxy ──▶ cornercase server ── shells, agents

On the other machine, ssh runs cornercase proxy, which finds the server (or starts one if none is running), whatever environment the SSH session has, and passes the window’s keys and the server’s screens back and forth. It is the same server that cornercase on that machine attaches to, so you can also open it from a terminal there: the windows mirror each other, as described in Sessions and the server.

cornercase on both machines, in the same version (see Versions). On the other machine, it is looked for on the PATH, then in ~/.local/bin (where the install script puts it), ~/.cargo/bin and Homebrew’s folders, since the PATH of a command run through ssh is often shorter than your login shell’s. If it lives somewhere else, say how to run it with --command:

Terminal window
cornercase remote devbox --command '~/tools/cornercase'

The other machine’s sh reads it, so ~ and $HOME work.

Everything that touches files or programs stays on the other machine: the shells, the agents, worktrees and git, the changes and files panels, open (your editor opens in a new tab there), Usage and stats, the issue trackers (gh and your tokens live there), and its config.json, session.json and stats.json. A stats share link still copies to your local clipboard through OSC 52.

Your laptop only shows the window. Keys, the mouse, pastes and your terminal’s colours come from it, and copying, desktop notifications and the images the files panel shows go through it, so the text lands in your local clipboard, the notification on your local screen and the picture in your local terminal. A sound plays on your laptop too, with a file path read there; a window opened with ssh -t host cornercase plays none.

open in… can’t open the other machine’s folders in your laptop’s Finder or editors, since they aren’t there: the project, workspace and pane menus offer copy path instead, which copies the path as the other machine knows it. See Open in another app.

The window stays open and says so:

search projects, workspa…1use serde::Deserialize;2Projects3#[derive(Debug, Deserialize)]4pub struct Address {▾work5pub lines: Vec<String>,web-shop(3)6pub city: String,orders-api(2)!7pub postcode: String,8}▾◆personal9blog(1)10impl Address {dotfiles(1)11pub fn first_line(&self) -> &str {12self.lines.first().unwrap()+ New13}14}Workspaces~Connection lost▾main↓2▸nvimreconnecting to devbox…›bashconnecting…+ Tabssh: connect to host devbox port 22: Connection refused▾feat/dark-modeits shells keep running on devboxquit◐claudeOpus 5.5·7%~+ Tab~~▾feat/gift-cards~◐codex~gpt-5.4·20%~+ Tab~~+ New~~IssuesChanges~FilesTODO~Settings~Usagesrc/returns/address.rs 11,1 AllQuit
The last screen stays behind the notice until the connection is back.

It tries again at once, then after 1, 2, 4 and 8 seconds, then every 15 seconds, and shows the last thing ssh said. Your shells and agents keep running on the other machine meanwhile, and once it is back the window shows them as they are now. A laptop that slept or changed Wi-Fi comes back on its own.

Esc or quit gives up: the window closes and everything keeps running there, so cornercase remote devbox attaches again later. The Quit in the sidebar works as always: it detaches, and nothing reconnects.

Both machines must run the same version of cornercase. When they don’t, it says which one to update before opening the window:

`devbox` runs cornercase 0.11.9 and this machine 0.11.12. Run `cornercase update` there

When the other machine is the older one, it offers to run cornercase update there for you, through ssh, and attaches once that is done. When yours is older, run cornercase update on it.

When the binary on the other machine was updated but its old server still runs, cornercase asks before restarting it, as it does on your own machine, and then runs cornercase kill-server there. After an update from the window’s own update dialog, which updates the other machine, the window reconnects to the new server by itself, and tells you if your laptop now needs the same update.

  • Latency: every key goes to the other machine and comes back as a screen update, the same as typing in plain ssh.
  • One window, one server: the sidebar shows the projects of one machine. Open another window for another machine.
  • Commands for scripts and agents act on the server of the machine they run on, so run them there: in one of its panes, or with ssh devbox cornercase status.
  • Inside a pane: cornercase remote works inside one of cornercase’s own panes, unlike cornercase, since the other server is a different one.