One field
Type what you'd type after ssh. lpm installs itself on the server and pairs over that same connection.
Linux hosts, from the Mac app
A long agent run and a laptop lid are a bad match. Add a Linux server to lpm by typing user@build-server — it installs and pairs itself over SSH, and that server’s projects, terminals, services, and agents appear in your sidebar next to the local ones. Then close the lid. They keep going.
Type what you'd type after ssh. lpm installs itself on the server and pairs over that same connection.
The server keeps listening only to itself. lpm reaches it through an SSH tunnel it brings up and keeps alive.
A €5 VPS or the desktop under your desk. It keeps your dependencies, your caches, and your half-finished branch.
Linux hosts you connect to
What lpm does with that one line
Settings → Connections in lpm on your Mac. One field, and lpm does the install, the pairing, and the tunnel.
The short answer
You don’t. You move the run off the laptop. Claude Code and Codex are command-line tools, so they run perfectly well on a Linux box that never sleeps — the hard part has never been starting them there, it’s everything around it.
ssh user@build-server
tmux new -s agent
claude
# detach, reconnect tomorrow, hope it's all still thereThat keeps the process alive and gives you back a shell. It doesn’t give you the project’s services, the ports they came up on, the diff the agent just wrote, or a badge on your Mac the moment it needs an answer.
lpm takes the same idea and manages the plumbing. In Settings → Connections you type user@host — lpm installs itself on that server over SSH, pairs the two machines without you copying a secret anywhere, and forwards the connection so nothing new is exposed. From then on the server’s projects sit in your Mac sidebar and open in the same window as the local ones — while the work itself stays on the server, lid open or not.
This is a different thing from reaching a remote box from a Mac terminal: here the whole of lpm is running on the Linux machine, and your Mac is the window onto it.
None of these are new problems. They just got sharper once the thing running in the terminal started taking an hour and doing real work.
A refactor across forty files takes the better part of an hour. Meetings, commutes, and school runs are shorter than that. The one machine you cannot leave running is the one you carry.
Office Wi-Fi to tethering to home. Every hop drops the connection, and anything attached to it goes down unless you remembered to start a multiplexer first.
Three agent sessions, three dev servers, a browser and your editor. The machine grinding through all of it is the same one you are trying to type on.
SSH in and you have a prompt. Not which services are up, not which port the API landed on, not what changed on disk, not which of the three agents is waiting on an answer.
The same string you would type after ssh, with an optional :port. lpm uses your existing SSH setup — your keys, your ~/.ssh/config. If you can reach the machine with a key, so can lpm.
Over that SSH connection it fetches the published Linux bundle and runs its installer: the app, the lpm command-line tool, and a service that comes back up on boot. On a small server this takes a few minutes — most of it the download and the system packages.
lpm asks the server for a single-use invite and consumes it over its own forward. The secret never leaves the SSH channel, never lands on a clipboard, and the server keeps only a hash of the token it issued.
The server’s port stays bound to the server itself. lpm forwards it to your Mac and supervises that forward — if it drops, lpm brings it back within seconds, and it tells you when the tunnel is the thing that’s down rather than blaming the server.
Under the server’s own name, beside your local projects. Open one and it is the same project view: the same terminal tabs, the same service controls, the same review pane. The only things that stay behind are the ones that need an app installed on your Mac.
Already have lpm on the server? Untick the install box and lpm just pairs with it.
Everything routes through the same window. The only visible difference is which machine the work is happening on.
Start Claude Code or Codex in a terminal on the server and watch it stream on your Mac, keystroke for keystroke. When it stops to ask you something, the tab lights up here.
Start, stop and restart the project's services on the server from the same buttons you use locally, and read what they printed. They run there, so they are still up tomorrow morning.
Changed files and full diffs for a server project open in the same review pane as a local one. You read what the agent did without SSHing in to look.
Duplicate a server project into copies and queue the same prompt in each. The copying and the running happen on the server — your laptop stays quiet.
Keep projects, settings and global config mirrored between your Mac and the server, on demand or automatically, so a project you set up once behaves the same in both places.
Add several servers. Each gets its own section in the sidebar, its own status, and its own version line — and the row tells you when one has fallen behind your Mac.
The whole point of moving work to a server is that it outlives your laptop. That is true — with edges worth knowing before you rely on it.
Closing the lid, quitting lpm, losing Wi-Fi
Only the connection goes away. The agents and the services on the server carry on exactly as they were.
Restarting your Mac
Reopen lpm and it asks the server which sessions are still alive, then adopts them instead of starting new ones. You get the terminal back with its recent output replayed, still attached to the same running agent.
Switching to another project
Moving around your own sidebar never stops a terminal on the server. You leave, it keeps working.
Rebooting the server
lpm is installed as a service, so it comes back with the machine. Your projects are there; the agent conversations that were running are not.
Updating lpm on the server
Update and Reinstall restart lpm there, and that ends every agent running on it. lpm says so in the confirmation before it does it. The project's services are not tied to lpm and keep running; an agent conversation does not resume.
Older scrollback
When you reattach, the server replays the recent tail of each terminal, not its entire history. What scrolled past long ago is gone.
Your iPhone reaching that far
The lpm iOS app pairs with your Mac and shows the projects on your Mac. Projects that live on a Linux host do not appear there.
Mac-only things, on a server project
Open in your editor, dragging local files into a terminal on the server, and anything else that depends on apps installed on your Mac stay Mac-side. Reaching a service's port from your Mac is still an SSH forward you set up yourself.
A server you rent has no business exposing a control port to the world, so lpm doesn't ask it to.
The port lpm listens on there is bound to the machine itself, reachable from nowhere else. lpm gets to it by forwarding that port over SSH — the access you already had — so adding a host opens nothing new to the internet and needs no firewall change.
lpm asks the server for a single-use invite over SSH and consumes it over its own forward. Nothing is emailed, pasted, or left on a clipboard, and the server stores only a hash of the token it issued.
Pairing records the server's certificate fingerprint. Every later connection is checked against it: if the identity ever changes, lpm says so and refuses rather than quietly connecting to something else.
Nothing new reachable from the network, no account, no relay in the middle, no service of ours holding your keys. Disconnect a host and it drops out of your sidebar — whatever is running on it keeps running.
Short list, and most of it is what any cloud image already gives you.
You never have to run the installer or move a pairing secret by hand — but if you would rather set the server up yourself, the same bundle the Mac installs is published with every release, and it installs the same way:
URL=https://github.com/gug007/lpm/releases/latest/download
curl -fsSL $URL/lpm-host-linux-amd64.tar.gz | tar xz
cd lpm-host
sudo ./install.sh
lpm pairThat last command prints an invite to paste into Settings → Connections on your Mac. It is the same handshake the one-field flow performs for you.
The same survives-the-disconnect property, on a machine you own, with the room built around it: the project’s services and ports, its diffs, its agent status, and as many servers as you want — all in the window you already have open on your Mac. What lpm is not is a hosting product. It does not rent you a box, and it does not know or care where you got yours.
If the multiplexer comparison is the one you care about, there is a longer one against tmux.
Yes. Claude Code is a command-line tool, so it runs on any Linux box you can get a shell on — you sign in on that machine and start it in a terminal there. What a plain SSH session does not give you is the rest of the environment: the project's services, the ports they came up on, the diff of what changed, or any signal on your laptop that the agent is waiting for you. Adding the server to lpm as a Linux host gives you the agent and that context in one window on your Mac.
Move the run off the MacBook. Anything started on your laptop stops when the laptop sleeps, so the durable answer is to run the agent on a machine that stays awake and treat your Mac as the screen for it. In lpm you add a Linux server under Settings → Connections, start the agent in a terminal on that server, and close the lid — the connection drops, the agent does not. Reopen lpm and it reattaches to the same running session instead of starting a new one.
Not for agent terminals. A terminal you start on a Linux host is owned by lpm on that server, not by your SSH connection, so it survives your Mac disconnecting, sleeping, or quitting — you do not have to remember a multiplexer before every long run. lpm does use tmux for a project's services, so install it on the server if you want to run those there.
Nothing happens to the agent. The connection between your Mac and the server drops and lpm reconnects on its own within seconds, bringing its SSH tunnel back up first. When it reconnects it replays the recent output of each terminal, so you see what the agent did while you were away. lpm also distinguishes a dead tunnel from a dead server, so you are not sent to look at the wrong machine.
Debian and Ubuntu on x86_64 (amd64), with systemd. The installer uses apt to pull in what the app needs, and the published bundle is built for amd64 only — ARM servers such as Graviton, Ampere, or a Raspberry Pi are not supported yet. On another systemd distribution you can install the runtime libraries yourself and run the installer with --no-deps on the server, then add the host from your Mac with the install step unticked. The binary is built on current Ubuntu, so an old release may not run it.
lpm installs itself, including the system packages it needs and a service that restarts it on boot. Your own toolchain is still yours: tmux, git, Node, and the agent CLIs you want to run there are not installed for you, because lpm does not guess at your stack. Install them once on the server and every project on it can use them.
Open a terminal on the server from lpm and run the CLI's own sign-in there, the same way you would on any new machine. If a login flow wants a browser callback on the machine itself, put an API key in the server's environment instead — often the better choice for a box you share, and the one that survives the machine being rebuilt.
No. Once a terminal is started on the Linux host, the work belongs to that machine. Your Mac being asleep, offline, or shut down only means nobody is watching. When you come back, lpm reconnects and adopts the sessions that are still alive.
Yes. Add as many as you like — each gets its own section in the sidebar with its own projects, its own connection status, and its own version line, and you can switch between them and your local projects in the same window.
No. The server keeps listening only to itself, and lpm reaches it by forwarding that port over the SSH connection you already had, so no new port is opened and no firewall rule changes. The pairing secret travels over that same SSH channel, and the server's certificate fingerprint is pinned at pairing — if the identity ever changes, lpm refuses to connect rather than falling back.
Yes. Open a terminal per agent, or duplicate the project into copies and queue the same prompt in each. Both the copying and the running happen on the server, so a fan-out that would have pinned your laptop's fans costs you nothing locally — the limit is the server's cores and how many diffs you are willing to read.
No. The iOS app pairs with lpm on your Mac and shows the projects on that Mac. Projects that live on a Linux host are not in that list today.
Roughly €5 to €12 a month, depending on the provider, for the 2 GB box that comfortably runs lpm plus a project's services. A spare desktop, a home server, or an old workstation on your own network does the same job for the price of the electricity — lpm does not care where the machine came from, only that you can SSH into it as root.
Not as a desktop app. The interface is macOS-only and that is where you sit; Linux is supported as a host — the same lpm runs there without a screen and is driven from your Mac. If you work primarily on Linux, this is not the tool for you yet.
The other half of remote work: reaching a box from your Mac terminal, with its ports forwarded to localhost.
The command-line tool an agent uses to start services, read logs, and wait for a port — on the server too.
How to give several parallel agents their own directory once you have a machine with cores to spare.
The desktop side: agents, services, and logs side by side in one project window.
Watch a run, answer a prompt, and ship the result without opening the laptop.
Download lpm for macOS, type user@your-server in Settings → Connections, and let Claude Code and Codex work on a machine that never sleeps.