lpm vs tmux
tmux-level visibility, one-command start, no config.
tmux is a wonderful terminal multiplexer. lpm is a local project manager that happens to give you the same pane-per-service layout for free. If you only use tmux to wire up your dev stack, this page is for you.
Projects, terminals, agents, a built-in browser — one click each
Click anywhere below. Switch projects, start services, launch Claude Code or Codex, and preview your dev server in the in-pane browser — all running live in your browser, right now.
Where each tool earns its keep
tmux wins on persistence, ubiquity, and raw flexibility. lpm wins on first-class projects, zero-config start, and a desktop app. Here is the honest side-by-side.
| Capability | lpm | tmux |
|---|---|---|
| One-command project start | via tmuxinator | |
| Zero config to run a detected stack | ||
| Auto-detect Rails, Next.js, Go, Django, Flask, Docker Compose | ||
| Pane-per-service live output | ||
| Native macOS desktop app with visual switcher | ||
| Multi-project management as a first-class concept | via tmuxinator | |
| Start / stop / duplicate projects as first-class ops | manual | |
| Built for running AI agents (Claude Code, Codex) in parallel | manual | |
| Session detach / reattach across terminal restarts | ||
| Works over SSH on any Unix box | ||
| Fully scriptable keybindings and layouts | via .tmux.conf | |
| Tiny footprint, ubiquitous on Unix systems |
lpm
- One-command project start
- Zero config to run a detected stack
- Auto-detect Rails, Next.js, Go, Django, Flask, Docker Compose
- Pane-per-service live output
- Native macOS desktop app with visual switcher
- Multi-project management as a first-class concept
- Start / stop / duplicate projects as first-class ops
- Built for running AI agents (Claude Code, Codex) in parallel
- Session detach / reattach across terminal restarts
- Works over SSH on any Unix box
- Fully scriptable keybindings and layouts
- Tiny footprint, ubiquitous on Unix systems
tmux
- via tmuxinatorOne-command project start
- Zero config to run a detected stack
- Auto-detect Rails, Next.js, Go, Django, Flask, Docker Compose
- Pane-per-service live output
- Native macOS desktop app with visual switcher
- via tmuxinatorMulti-project management as a first-class concept
- manualStart / stop / duplicate projects as first-class ops
- manualBuilt for running AI agents (Claude Code, Codex) in parallel
- Session detach / reattach across terminal restarts
- Works over SSH on any Unix box
- via .tmux.confFully scriptable keybindings and layouts
- Tiny footprint, ubiquitous on Unix systems
Which one should you actually use?
tmux and lpm do different jobs that overlap only at 'run services in panes.' Pick based on what you really need, not on which tool is newer.
You use tmux mostly as a crude process manager for your dev stack.
- You open a project and immediately run rails s, npm dev, redis, and a worker in separate panes — every single time.
- You do not want to maintain a .tmux.conf or a tmuxinator YAML for every project.
- You juggle multiple local projects and want a visual switcher that remembers them.
- You want to run Claude Code, Codex, or other AI agents in parallel with every service's output visible at once.
- You like the idea of a native macOS desktop app with live per-service panes and a config you can read, edit, and commit.
You already love tmux and use it for much more than starting services.
- You have years of muscle memory and a .tmux.conf you actually enjoy.
- Most of your work happens inside SSH sessions on remote machines.
- You need sessions that survive terminal crashes, reboots, and ssh drops.
- You use tmux for vim splits, logs, monitoring, ops work — not just dev servers.
- You already have a tmuxinator or zellij layout that fits your brain perfectly.
- You work on a platform other than macOS — lpm is macOS-only.
lpm vs tmux, answered honestly
Can I still use tmux alongside lpm?
Absolutely. lpm manages your project's services — it has no opinion on your editor, shell, or terminal setup. Keep tmux for SSH, long-lived sessions, vim splits, and anything else you already use it for. Let lpm handle the boring part: starting the dev stack when you open a project.Does lpm use tmux under the hood?
What matters is the behavior: your services run in persistent sessions that survive app and terminal restarts, and each one gets its own scrollable pane in the desktop app. There's nothing to install, configure, or attach to — no .tmux.conf to edit, no keybindings to memorize, no windows to attach to by name. You get the persistence and per-service visibility you'd normally build with tmux, without setting any of it up.What about my remote / SSH workflow?
lpm can attach remote dev boxes as SSH projects — run remote services in panes beside local ones and forward remote ports to localhost from the app. That said, if your entire session lives inside SSH on a remote box and you reach it from arbitrary machines, tmux on that box is still the right tool — lpm is not trying to replace it there.Is this basically tmuxinator with a GUI?
Overlapping goals, different shape. tmuxinator gives you named, YAML-defined tmux layouts per project. lpm gives you managed projects with live pane output, a visual switcher, and first-class start / stop / duplicate. If your tmuxinator file is mostly `rails s`, `npm dev`, `redis`, `sidekiq`, lpm will feel like a shortcut. If you lean on custom layouts, splits, and keybindings, tmuxinator will still suit you better.How do I move a tmuxinator project over to lpm?
Point lpm at the directory and let it generate the service config from your repo, or define the services yourself — each one is just a name and a command. Then start the project from the app. You can keep the tmuxinator file around as a fallback; lpm won't touch it. Source and examples are on GitHub.
Keep tmux. Let lpm start the boring stuff.
lpm is free, open source, and runs as a native macOS app. Point it at a project, hit Start, and get your whole stack running with per-service output — no tmux config required.