Skip to content
lpm vs iTerm2

An iTerm2 alternative that runs whole projects, not just panes.

iTerm2 is the more capable emulator, and nothing here argues with that. lpm owns the project instead: one click brings up every service, each service tab carries the ports it is listening on, and a second agent gets a checkout of its own.

Most people should keep iTerm2 and add the project layer.

Jump to the iTerm2 rows

Facts checked . iTerm2 3.7 shipped on 8 September 2026; the agent-integration row reflects that release.

The short answer

Is there a real iTerm2 alternative?

If what you want is a better terminal emulator, the honest answers are Ghostty, Kitty, WezTerm, Alacritty, Warp — or iTerm2 itself, which shipped a major release in September 2026 and is not standing still. lpm is not on that shelf.

lpm is a free macOS app that manages the projects you run inside a terminal. One click starts and stops every service in a project, each service tab is labelled with the port that service's process tree is listening on, those services stay up after you quit the app, and a second agent can be handed its own checkout — a linked worktree that shares the repository, or a standalone copy that carries its own history.

~/Projects/shop/.lpm.yml
services:
  storefront: npm run dev
  api: npm run api

profiles:
  frontend: [storefront]

That file sits in the repo and travels with the branch, so a teammate who opens the project gets the same services, alongside whatever lpm detected when they added it; if it is only for you, the same lines can live in your own project file instead. iTerm2 has no equivalent object — its profiles set the shell and the appearance, not which services a project runs. Every field a project file accepts is in the config reference.

iTerm2

Keep iTerm2 for

Triggers that fire on output, smart selection, the Python API, tmux control mode, and every keybinding you have tuned over the years.

lpm

Add lpm for

One click that starts four services, a switcher across repos, and a separate checkout per agent.

Both

Run both

lpm starts ordinary processes through your login shell — no container, no wrapper — and the Open in iTerm action drops you into the project directory in your own window whenever you want it.

The real question

What you keep, and what you give up

The day you stop opening iTerm2 first, here is the exact trade.

What you keep

  • Search inside any pane
  • 10,000 lines of scrollback in every pane
  • Clickable links
  • Eight terminal themes including one-dark, dracula, nord and solarized-dark
  • A font size you zoom with ⌘+ and ⌘−
  • Splits and tabs
  • Full Unicode
  • Copy that works from a remote shell

What you give up

  • Triggers that fire on output
  • Smart selection
  • The Python scripting API
  • tmux control mode rendered as native tabs
  • Scrollback you can set as high as you like, or leave unlimited
  • Every keybinding and profile you have tuned in iTerm2 — those do not transfer

Which is why the recommendation on this page is “both”, not “switch”. lpm owns the project; iTerm2 stays the scratch shell.

How it compares

iTerm2 and lpm, feature by feature

Twelve rows. Three of them go to iTerm2 — scrollback, emulator scripting, control mode — and one of those three is the reason to keep it.

  • Start every service in a project with one command
    lpm
    one click, or lpm start from any shell with the app open
    iTerm2
    you run each command yourself
  • Listening ports on each service tab
    lpm
    the ports that service's process tree owns
    iTerm2
    No
  • Dev servers keep running once the window is gone
    lpm
    its own session layer — tmux is neither used nor needed
    iTerm2
    only if you started them under tmux
  • Bring up the frontend only, and leave the rest down
    lpm
    a named profile in the project file
    iTerm2
    its profiles set the shell and the appearance, not a set of services
  • Lint, migrate or seed without retyping the command
    lpm
    action buttons in the project, or lpm run
    iTerm2
    shell history and aliases
  • Copy a repo for a parallel agent
    lpm
    up to 50 linked worktrees or standalone copies
    iTerm2
    No
  • Seeing what an agent is doing without switching to it
    lpm
    working, needs you, done or error on the terminal tab — Claude Code and Codex
    iTerm2
    working, waiting or idle in the Session Status panel — Claude Code only, since 3.7
  • Project control from any shell or agent
    lpm
    the lpm command, with --json for whatever reads it
    iTerm2
    Python API
  • Emulator scripting: triggers, smart selection, output hooks
    lpm
    No
    iTerm2
    Yes
  • tmux control mode rendered as native tabs
    lpm
    No
    iTerm2
    Yes
  • Scrollback you can raise, or leave unbounded
    lpm
    10,000 lines a pane, fixed
    iTerm2
    as many lines as you set, or unlimited
  • Licence and price
    lpm
    MIT, free
    iTerm2
    GPLv2, free

If control mode is the row that decides it, the tmux comparison covers what lpm runs instead of a multiplexer.

Be honest

If what you want is a better emulator, here is the shelf

lpm is not competing for this slot. Pick whichever one you like: lpm runs beside it in a window of its own, and hands you straight back to it whenever you want a shell.

iTerm2 — free under GPLv2, scriptable from Python, and still moving: 3.7 added a Claude Code integration, groups of tabs and a companion iOS app in September 2026.

Warp — the AI-first one, and open source now: its client is AGPL v3, apart from the UI crates it ships under MIT.

Ghostty, Kitty, WezTerm, Alacritty — four more names worth trying. This page argues with none of them, and does not rank them — lpm is not competing for the slot they are in, so it has no business grading them either.

None of them start your services, none of them know what a project is, and none of them keep your dev servers up after you quit. That is the gap lpm fills — whichever of these you keep open.

lpm does ship a terminal of its own, because the panes have to live somewhere. What it includes is listed here — it is a shell in a tab, not an entry on the shelf above.

See it

The thing a terminal window cannot do

Copying a project so a second agent gets its own checkout, its own services, and its own terminals.

Honest take

When to keep iTerm2 alone, and when to add lpm

Two free, macOS-only, open-source tools. The split is whether your bottleneck is the emulator itself or everything you have to start inside it.

Pick lpm

Your friction is starting, stopping, and switching whole projects — not the emulator.

  • You start four services every morning and want one command instead of six tabs.
  • You want the service list drafted from your repo the moment you add it, instead of typed out by hand.
  • You run Claude Code or Codex and want each agent in its own checkout, created as a worktree or a standalone copy.
  • You want one view of everything running across every project, with the ports each service holds.
  • You want your dev servers to survive quitting the app — without running tmux to get it.
Pick iTerm2

You want the most capable terminal emulator on macOS, and you want to configure it deeply.

  • You rely on triggers, smart selection, or the scripting API.
  • You drive tmux through control mode and want it rendered natively.
  • Your work is one repo with one or two processes, so project juggling isn't the bottleneck.
  • You have years of muscle memory in your iTerm2 setup and no reason to move it.
See it in action

Run only the services you need

A short video: a profile starts just the services it names.

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 iPhone
FAQ

lpm vs iTerm2 — the honest FAQ

  • Is lpm a replacement for iTerm2?
    For most people, no — and it doesn't need to be. iTerm2 is a terminal emulator; lpm is a project manager that happens to have a terminal inside it. If what you want is a better emulator — triggers, smart selection, tmux control mode, the Python API — iTerm2 is the more capable tool and lpm will not match it. If what you want is to stop hand-starting six services every morning, that is the gap lpm fills.
  • Can I keep using iTerm2 alongside lpm?
    Yes, and plenty of people do. Let lpm own the project layer — which project is active, what services are running, duplicating a checkout for a second agent — and keep iTerm2 as the terminal you reach for when you want a scratch shell. They don't conflict: lpm starts and stops ordinary native processes, exactly as you would by hand. lpm has an Open in iTerm action, so the project directory is one click from your own shell.
  • What does lpm do that iTerm2 cannot?
    Three things, and not one of them is about the emulator. It writes the service list for you: add the folder and lpm reads package.json, a Procfile, a Gemfile, a compose file and the rest, then lists the services, with a port wherever the framework or the command names one — and Generate with AI hands a redraft to Claude Code, Codex, Gemini CLI or OpenCode. It starts every service at once and puts the port that service is listening on onto that service's tab. And it copies the project so a second agent works in a checkout of its own instead of overwriting the first one's files — a standalone copy brings your ignored files and installed packages along, while a linked worktree starts from the commit, so your .env and node_modules do not come with it— and either way both copies answer on the same ports and talk to the same database.
  • How does lpm compare to Warp, Ghostty, or Kitty?
    Same answer as iTerm2: those are emulators, and lpm is not one. Pick whichever emulator suits you for your own shells — lpm holds the projects and the services either way.
  • Can I run lpm from the iTerm2 command line?
    Yes, from an iTerm2 tab like any other shell — but the verbs split in two. lpm start, lpm stop, lpm service web restart, lpm run and lpm duplicate hand the work to the app, so lpm has to be open; with it closed they stop and say so. lpm list and lpm logs read your running services themselves, so those two answer from a cold shell. lpm status reports what your agents are doing, which only the app knows, so it needs lpm open too.
  • Do I lose my iTerm2 profiles and keybindings?
    They do not transfer, and that is a real cost. It is also why the recommendation here is to run both rather than switch.

Keep iTerm2. Add the project layer.

lpm is free, macOS-native, MIT-licensed, and starts your services as ordinary processes — the same commands you would type by hand. Install it beside iTerm2 and see whether the project layer earns its place. Read it first on GitHub if you would rather.