Native desktop terminal for AI agents
The best terminal for Claude Code and Codex, with every agent in view.
A native macOS 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.
Start a project, then hand it to Claude Code or Codex — one click each
Every Claude Code and Codex session in view — answer the one that needs you
A one-minute tour: start a project and hand it to Claude Code.Click anything — it runs live in your browser.
lpm is a macOS app with a multi-pane terminal workspace. Open this page on your computer to try the interactive demo.
Get lpm for MacOr check your Macs from your iPhoneClick a step to run it in the window.
Done poking around? Get lpm for Mac and point it at your own projects.
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.
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 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.
Everything running, on one screen
⌘⇧A opens Activity: every Claude Code and Codex session, running service, and automation across your projects, with whatever needs you at the top. Move through it with j and k.
Review before you commit
⌘⇧R 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.
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 macOS sound, your own file, or silence for each one.
A banner when you are away
When no lpm window is in front, macOS shows a banner 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 and Codex. Gemini CLI and OpenCode run fine in lpm terminals but don't report their state on their own.
What changes when you run agents in a real macOS window
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.
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.
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.
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.
Workflows that used to be painful
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.
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.
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.
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 Mac is awake. See how to schedule Claude Code tasks.
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.
| Capability | lpm desktop | Terminal tabs | tmux / screen | Editor window |
|---|---|---|---|---|
| Start full stack in one command | Yes | No | Yes | No |
| Live output per service | Yes | Yes | Yes | No |
| One window for every running service | Yes | No | Yes | No |
| Run several agents, each in its own copy of the repo | Yes | No | No | No |
| Visual project switcher with live state | Yes | No | No | No |
| Native macOS app with dark mode | Yes | Yes | No | Yes |
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 macOS 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 macOS 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 macOS 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 macOS 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.
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 macOS banner 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,.envfiles, 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 and OpenCode?
They run in lpm terminals like any other command, and lpm suggests launch buttons for them when their CLIs are installed. The deeper integration (live status, alerts, resume, fork, and the model switcher) is 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 withlpm 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.
Keep reading
Run Claude Code in parallel
Send one prompt to several copies of your project and keep the best answer.
Let agents drive lpm
Give Claude Code and Codex a CLI to start services, read logs, and wait for a server before running tests.
Schedule Claude Code tasks
Run a Claude Code or Codex prompt on a schedule and read the answer when you are back.
Claude Code & Codex skills
Browse the skills, MCP servers and hooks a folder loads for Claude Code and Codex, and draft new skills in a form.
Claude Code & Codex token usage
Tokens, estimated spend, cache hits, and sessions per project in one local dashboard.
Multiple Claude Code accounts
Pin a Claude account to each project, so work and personal run side by side, each signed in once.
Download the macOS app.
Run your agents side by side.
Native desktop workspace for Claude Code, Codex, and every other agent that lives in a terminal.