Linux hosts, from the Mac app

Run Claude Code and Codex on a Linux server, from your Mac.

A long agent run and a laptop lid are a bad match. Add a Linux server to lpm by typing user@build-serverit 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.

Download for macOS
Developer ID signed · Notarized by AppleSafety, checksums & removal
See exactly what keeps running

One field

Type what you'd type after ssh. lpm installs itself on the server and pairs over that same connection.

Nothing new exposed

The server keeps listening only to itself. lpm reaches it through an SSH tunnel it brings up and keeps alive.

A box you own

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

Add a Linux hostType what you’d type after ssh — lpm installs and pairs itself there.
 Connect

What lpm does with that one line

  • Reached build-server over SSH
  • Installed lpm on the server
  • Paired with a one-time invite
  • Forwarded its port over SSH

Settings → Connections in lpm on your Mac. One field, and lpm does the install, the pairing, and the tunnel.

The short answer

How do you keep Claude Code running after you close your laptop?

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.

The way most people do it
ssh user@build-server
tmux new -s agent
claude
# detach, reconnect tomorrow, hope it's all still there

That 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@hostlpm 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.

Why move it off the Mac

A laptop is the wrong computer for a long agent run

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.

The lid closes and the run ends

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.

The network changes and the session goes with it

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 agents is a lot to ask of a laptop

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.

A shell is not a workspace

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.

What happens when you press Connect

One field, five things you would otherwise do by hand

  1. 1

    You type user@build-server

    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.

  2. 2

    lpm installs itself on the server

    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.

  3. 3

    The two machines pair themselves

    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.

  4. 4

    The connection comes up, and stays up

    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.

  5. 5

    Its projects show up in your sidebar

    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.

Once it is connected

A remote project that behaves like a local one

Everything routes through the same window. The only visible difference is which machine the work is happening on.

Terminals and agents, live

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.

Its services, its logs

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.

Review before you believe it

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.

Fan out on the server's cores

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.

Config that follows

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.

More than one machine

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 honest version

What keeps running, and what doesn't

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.

Survives

  • 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.

Doesn’t

  • 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.

What it opens up

Nothing, is the answer

A server you rent has no business exposing a control port to the world, so lpm doesn't ask it to.

The server doesn't listen to the network

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.

The pairing secret rides the SSH channel

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.

The identity is pinned

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 you have to undo

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.

Before you add one

What the server needs

Short list, and most of it is what any cloud image already gives you.

The server
Debian or Ubuntu on x86_64 (amd64), running systemd, with curl and tar already on it. The installer uses apt; ARM servers are not supported yet.
The login
Key-based SSH as root. lpm on the server installs and runs as root, which is how most cloud images hand you the machine anyway. No password prompt can be answered during setup, so the key has to be enough on its own.
The size
lpm runs its normal app on the server without a screen, so the installer pulls in a virtual display and the GTK and WebKit runtime behind it, and lpm wants a few hundred megabytes of memory. A 2 GB / 2 vCPU box is a comfortable floor before your own services.
The cost
Roughly €5 to €12 a month for a VPS that size, depending on the provider. A spare desktop or an old workstation on your own network does the same job for the price of the electricity.
Still yours to install
Your toolchain — git, Node, tmux, the agent CLIs, whatever your project builds with. lpm sets itself up, not your stack, and it does not guess at what you build with.
Signing in there
Open a terminal on the server from lpm and run Claude Code's or Codex's own sign-in there. If a login flow wants a browser on the machine itself, an API key in the server's environment is the simpler route — often the better one for a machine you share.

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:

On the server, by hand
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 pair

That 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 usual ways

How people do this today, and where each one stops

ssh + tmux

What it gets right
The process alive across a dropped connection — genuinely the core of the problem, and it has been solving it for as long as anyone has run long jobs over SSH.
Where it stops
You are still administering a shell. Nothing tracks which services are up or on which port, nothing shows you the diff, nothing tells you an agent went quiet waiting for an answer, and a second server means a second window and a second set of habits.

A remote editor session

What it gets right
Files and a terminal on the server, inside the editor you already use.
Where it stops
It is built around editing, not around running. Which of the project's services are up, which port each one landed on, and which agent session is waiting on an answer are all still yours to keep track of — and there is no view that puts two servers and your laptop side by side.

A rented agent sandbox

What it gets right
A clean machine on demand, with nothing to install and nothing to maintain.
Where it stops
It is metered, and rebuilt from a spec, so your caches, your dependencies and your half-finished branch are not there next time. Good for a one-shot task; expensive as a place to actually work.

lpm with a Linux host

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.

FAQ

Running agents on a server, answered

  • Can Claude Code run on a remote server?

    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.

  • How do I keep Claude Code running when I close my MacBook?

    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.

  • Do I need tmux to keep an agent alive over SSH?

    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.

  • What happens to the agent when my Wi-Fi drops or I change networks?

    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.

  • Which Linux servers are supported?

    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.

  • Do I have to install anything on the server myself?

    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.

  • How do I sign into Claude Code or Codex on a server with no browser?

    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.

  • Does my Mac have to stay online for the server to keep working?

    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.

  • Can I connect more than one Linux server?

    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.

  • Does adding a Linux host expose anything to the internet?

    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.

  • Can I run several agents on one server at the same time?

    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.

  • Do Linux host projects show up in the lpm iPhone app?

    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.

  • How much does a VPS for running Claude Code cost?

    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.

  • Is there a Linux version of the lpm app?

    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.

Your Mac is the cockpit. The server does the hours.

Download lpm for macOS, type user@your-server in Settings → Connections, and let Claude Code and Codex work on a machine that never sleeps.

Download for macOS
Developer ID signed · Notarized by AppleSafety, checksums & removal