Skip to content

Native desktop terminal for AI agents

The best terminal for Claude Code and Codex, with every agent in view.

A native desktop app that shows what each Claude Code and Codex session is doing, pings you when one needs an answer, and runs your dev servers in panes right beside them.

Your dev servers, Claude Code and Codex in one window

A three-minute tour: start a stack, free a busy port, and run Claude Code and Codex side by side.

Three-minute tour · 3:19

lpm in 3 minutes

lpm is a desktop app with a multi-pane terminal workspace. Open this page on your computer to try the interactive demo.

Or check your computers from your iPhone
Watch it

Run any AI coding agent

A lesson from the lpm series: Cursor and omp added to the header in seconds, then both answering the same question side by side.

  1. 1

    Claude Code and Codex are already there

    Every project's header has a Claude button and a Codex button. One click opens the agent in its own terminal tab, in the project's folder.

  2. 2

    Add any other agent with + Action

    Click + Action, give it a name, and type the command you'd run in a terminal, like cursor-agent for Cursor or omp. Create action puts it in the header next to the others.

  3. 3

    Run them side by side

    Open one agent, split the pane, and open another beside it. Each one is the real tool, with your own login, settings and model, working in the same folder.

All 30 lpm lessons
The problem

A regular terminal was not built for agents

One AI coding agent is easy. Two or three working on real projects at once is where the wheels come off.

Agents trip over each other

Two agents in one checkout overwrite each other's files, and their dev servers race for port 3000. One wins, one crashes, and you spend the afternoon untangling it.

No idea who is doing what

Five terminal tabs, five agents, and no clear view of which one is still working, which has been waiting on a yes-or-no question, and which just errored out.

Context vanishes on every switch

Jump to another project and your running services, logs, and agent sessions are gone. Coming back means rebuilding the whole stack from memory.

Inside the app

A native workspace for the agents doing your work

Claude and Codex, one click away

A fresh install puts Claude and Codex buttons on every project. Each opens the agent in a new tab next to your services, and a button can carry a starting prompt.

A sidebar that lists every agent

Each project lists its Claude Code and Codex sessions underneath: what each one is doing and for how long. Click a row to jump to its tab. More on the project sidebar.

A prompt box that knows your project

Press ⌘I (Ctrl+Shift+I on Windows and Linux) for a composer under any terminal. Type @ to pull in a file, a branch, the changed files, or a running service's latest logs, and paste screenshots straight in.

Every service, side by side

Each dev server streams into its own tab, and the All tab lays them out in columns. When the API throws, you see it while the agent is still typing.

Fork a conversation

Branch a Claude Code or Codex conversation into a new tab, or into a fresh copy of the whole project, and keep the original as it was.

Review before you commit

⌘⇧R (Ctrl+Alt+Shift+R on Windows and Linux) shows everything the agent changed as one stack of diffs, and the Commit dialog drafts the message with AI. See how to review changes in the terminal.

One-click actions

Turn tests, lints, migrations, and deploys into buttons in the project header. Run them while the agent keeps working next door.

Service profiles

Save groups like “API only” in the Start menu and run just the services the agent touches, or the full stack when you need it.

Alerts

Know the moment Claude Code or Codex needs you

lpm connects to both agents on its own, so every session reports whether it is working, waiting on you, finished, or hit a problem. No setup, no polling tabs.

  • On the tab and in the sidebar

    A tab shimmers while its agent works, pulses amber when it needs you, turns blue when it is done and red on a problem. The same state, with a timer, shows under the project in the sidebar.

  • A chime you choose

    A sound plays when an agent finishes, asks for approval, or stops with an error. Pick the built-in chime, a system sound, your own file, or silence for each one.

  • A notification when you are away

    When no lpm window is in front, your computer shows a notification such as “Agent needs you” or “Agent finished”, naming the tab and project, so you can stay in your browser or editor until it matters.

  • A push on your iPhone

    Pair the lpm Link iPhone app and get an encrypted push when an agent needs input, finishes, or errors, then open that terminal on your phone and answer it.

Live status, sounds, and banners cover Claude Code, Codex, Gemini CLI, Cursor CLI, OpenCode and omp. Cursor CLI asks for approval without telling lpm, so it never shows Needs you. Any other CLI runs fine in lpm terminals and can post its own status with lpm set-status.

Why the desktop app

What changes when you run agents in a real desktop window

  1. A second agent starts on a copy that already runs

    Duplicate clones the project folder, so the new copy arrives with node_modules, .venv, .env files, and your uncommitted work in place. Only rebuildable caches like .next and dist are left out. Want a branch instead? New worktree makes a real Git checkout of your current commit. It starts clean, so uncommitted changes and ignored files like node_modules and .env stay behind in the original.

  2. One prompt, several answers to choose from

    Write the prompt once and choose Run in duplicates: it starts in this tab and in new copies of the repo, one agent per folder. Pick 2 to 10 runs; the Duplicate dialog it opens lets you change the count before anything starts, and the same prompt is queued in each. You keep the version you like instead of rerolling one session and hoping. The full walkthrough lives on running Claude Code in parallel.

  3. Any conversation picks up where you left it

    The resume picker lists every Claude Code and Codex conversation for the project, including ones started outside lpm and tabs you closed. Fork a conversation into a new tab to try another direction, or copy the last answer as clean text with its tables intact. After a relaunch, agent tabs reopen on the conversation they had.

  4. You see how much of your plan the agents have burned

    Claude and Codex each get a usage bar in the sidebar with its reset time, for the window you pick: weekly out of the box, the 5-hour window, or whichever of the two is higher. A pace marker shows whether you are burning faster than the clock, and each Claude account you add gets its own row. Codex needs no setup; Claude tracking is one click in the Usage window.

In practice

Workflows that used to be painful

1

Claude Code on a feature branch, Codex writing tests

Select your project in the sidebar and click Start: the full stack boots in one window, one service per tab. Point Claude Code at it for the feature work. For the second agent, choose New worktree from the project’s menu. You get a real Git checkout on its own branch, with its own services, listed right under the original. Point Codex at that. If both copies run a dev server on the same port, lpm catches the clash when you press Start and offers to free the port. To run both at once, point the copy’s dev server at another port, for example with a PORT variable in its start command.

2

Switch branches without a stale dev server

Agents get confused when the server on port 3000 is still running the code from the branch they just left. Click Stop in the project’s header and every service shuts down, child processes included. Click Start on the new checkout and the whole stack comes back fresh in the same window, so when Claude Code returns it sees the code it actually expects.

3

Give the agent only the services it should see

You don’t need the Next.js frontend running while an agent is refactoring a Go API. Open the Start menu in the project header and pick a profile that starts only the API and its database. The agent works against a smaller, quieter stack, and you can still switch a single service on or off from the same menu.

4

Hand the overnight chores to a schedule

Some prompts should run every morning, not when you remember them: triage new issues, bump dependencies, rerun a flaky suite. Save one as an automation and lpm runs it with Claude Code or Codex on your schedule, in the project or in a fresh copy, while the app is open and the computer is awake. See how to schedule Claude Code tasks.

Watch it

Run the commands your agent suggests

A lesson from the lpm series: run npm test from Claude Code's answer, start the dev server in its own tab, ⌘-click a lint in Codex, and watch a clean reinstall ask before it deletes.

  1. 1

    Hover a command in the answer

    When Claude Code or Codex suggests a command, like npm test, hover it and a Run chip appears next to it. Click Run and its output opens in a card over the terminal, with the agent's answer still in view.

  2. 2

    Give long-running ones their own tab

    For a dev server or a watcher, choose Run in new tab and it keeps going in a terminal of its own. Or ⌘-click a command (Ctrl-click on Windows and Linux) to run it straight away.

  3. 3

    Risky commands ask first

    A command that deletes files, discards changes or runs with sudo asks once more before it runs, so a stray click never wipes anything.

All 30 lpm lessons
How it compares

A desktop workspace, not another terminal

lpm gives every running service and every agent its own pane in one native window, with each agent's state in the sidebar.

lpm desktop

  • YesStart full stack in one command
  • YesLive output per service
  • YesOne window for every running service
  • YesRun several agents, each in its own copy of the repo
  • YesVisual project switcher with live state
  • YesNative desktop app with dark mode

Terminal tabs

  • NoStart full stack in one command
  • YesLive output per service
  • NoOne window for every running service
  • NoRun several agents, each in its own copy of the repo
  • NoVisual project switcher with live state
  • YesNative desktop app with dark mode

tmux / screen

  • YesStart full stack in one command
  • YesLive output per service
  • YesOne window for every running service
  • NoRun several agents, each in its own copy of the repo
  • NoVisual project switcher with live state
  • NoNative desktop app with dark mode

Editor window

  • NoStart full stack in one command
  • NoLive output per service
  • NoOne window for every running service
  • NoRun several agents, each in its own copy of the repo
  • NoVisual project switcher with live state
  • YesNative desktop app with dark mode

lpm vs cmux

cmux is a Mac terminal built around agent sessions. Compare the two row by row: what each one configures, and which of them starts the services your agents need.

FAQ

Questions developers ask before switching

  • Does lpm work with Claude Code and Codex out of the box?
    Yes. Every project gets a Claude and a Codex button on first launch, and lpm connects to both agents automatically, so the sidebar shows when an agent is working, needs an answer, hit a problem, or finished. Your services run in panes beside them. lpm doesn't install the agents themselves: you install the Claude Code and Codex CLIs and sign in as usual.
  • Will lpm tell me when Claude Code or Codex needs me?
    Yes. The agent's tab and its row in the sidebar change state, a chime plays when an agent finishes, asks for approval, or errors, and a system notification names the tab and project when no lpm window is in front. With the lpm Link iPhone app paired, the same events arrive as encrypted push notifications.
  • Can I see my Claude Code and Codex usage limits?
    Yes. The bottom of the sidebar shows how much of each plan window is used and when it resets, with a pace marker, and the Usage window shows the 5-hour and weekly windows side by side. Codex meters appear on their own once Codex runs; for Claude, press Enable once in the Usage window. Meters apply to subscription logins, since API-billed accounts have no 5-hour or weekly limit.
  • Can I resume an old Claude Code or Codex session?
    Yes. Resume session lists every Claude Code and Codex conversation for the project, including ones started outside lpm and tabs you closed, with search and a filter by agent. Picking one reopens it in a new tab, and you can fork a conversation to try a different direction without losing the original.
  • Can I run multiple agents in parallel on the same repo?
    Yes. Each agent works in its own copy of the repo, so they never edit the same files. Duplicate clones the project folder (dependencies, .env files, and uncommitted work included), and New worktree checks out a real Git worktree on its own branch. Either way you can create up to 50 at once and queue the same prompt in each. The guide to running Claude Code in parallel walks through it, and the worktree guide covers which of the two to reach for.
  • Does lpm support Gemini CLI, Cursor CLI, and OpenCode?
    They run in lpm terminals like any other command, and lpm suggests launch buttons for Gemini CLI and OpenCode when their CLIs are installed. Gemini CLI, Cursor CLI, OpenCode and omp also get live status and alerts, though Cursor CLI asks for approval without telling lpm, so it never shows Needs you. Resume, fork, and the model switcher are built for Claude Code and Codex. Any agent can still drive lpm through the lpm CLI and agent skills, and post its own status badge with lpm set-status.
  • Do I need Docker to use lpm?
    No. lpm runs anything that runs in a terminal. Docker Compose stacks work, and plain Rails, Next.js, Go, Django, or Flask projects work without containers.
  • Is lpm open source?
    Yes. The source, issue tracker, and releases live on GitHub. Contributions and bug reports are welcome.
  • Which frameworks does lpm work with?
    Rails, Next.js, Django, FastAPI, Laravel, Phoenix, Go, Docker Compose, and anything else that runs in a terminal. When you add a folder, lpm reads its manifests and sets up the services for you. To go further, have your AI agent draft services and actions from the config editor.