Local Project Manager
Switch between projects and terminals in seconds
Built for Claude Code, Codex, and other AI coding agents.
Projects, terminals, Claude Code or Codex — one click each
Click anywhere below. Switch projects, start services, launch Claude Code or Codex — all running live in your browser, right now.
See it in action
Add a new project
Click + in the sidebar, browse to a directory, and define your services in the built-in editor. Hit Save and the project appears in the sidebar ready to start.

Start a project
Select a project and click Start. All services launch in parallel with live terminal output side by side. Switch between service tabs or view them all at once.

Add an action
Add one-shot commands like linters, test runners, or deploy scripts directly in the editor. Actions appear as buttons you can trigger without leaving the app.

Switch between profiles
Define profiles to run different subsets of services. Toggle between them with the profile switcher in the header — pick default for everyday work or full when you need everything running.

Launch your AI agent in one click
Configure any command you want — Claude, Codex, Aider, a custom script, anything. Pick a project, click the button, and the terminal opens with your agent already running in the right directory. No cd, no setup, no excuses. From zero to coding in seconds.

Run agents in parallel on the same codebase
Duplicate a project to spin up a second (or third) checkout in seconds. Each copy gets its own services, terminals, and agents — so Claude can work on one feature while Codex ships another, without branch conflicts or context bleed.

Built for real dev workflows
Live terminal output
Watch every service stream in real time. Switch between service tabs or tile them side by side — all from a native window.
Parallel agents, same codebase
Duplicate any project to run Claude, Codex, or any agent in parallel — each on its own checkout, with its own services and terminals. No branch conflicts, no context bleed.
Commits and PRs, built in
Stage changes, generate commit messages, and open pull requests right from the app. Pair it with Claude or Codex to ship without ceremony.
Auto-detect frameworks
Automatically detects Rails, Next.js, Go, Django, Flask, and Docker Compose projects.
Instant project switching
Stop one project and start another in a single command. No manual cleanup needed.
Service profiles
Run subsets of your services. Start just the API, or spin up the full stack.
Native macOS app
A desktop app with live terminal output, built-in config editor, and dark mode.
Works with any stack
If it runs in a terminal, lpm can manage it. No Docker or containers required.
One config file. That's it.
Define your services, group them into profiles, and add one-shot actions. Edit below to see it live.
myapp
No active terminals
Click Start to run myapp, or open a terminal.
name: myapp
root: ~/Projects/myapp
# Long-running services — started with lpm start
services:
api:
cmd: python manage.py runserver
cwd: ./backend
port: 8000
frontend:
cmd: npm run dev
cwd: ./frontend
worker: celery -A backend worker
# Named subsets of services
profiles:
default: [api, frontend]
full: [api, frontend, worker]
# One-shot commands — run from app or CLI
actions:
test: pytest
migrate:
cmd: python manage.py migrate
cwd: ./backend
confirm: true
deploy: ./scripts/deploy.sh
Services
Long-running processes. Use string shorthand or full config with cwd, port, env.
Profiles
Named groups of services. Pick a profile from the header and start only that subset.
Actions
One-shot commands. Appear as buttons in the app — trigger tests, migrations, or deploys in one click.
Get lpm
Free and open source. Available for macOS (Apple Silicon & Intel).
Signed & notarized by Apple