Skip to content
DocsProject

Project

A project is one app you work on with lpm — a website, an API, a blog, anything you’d normally start in a terminal. Each one is a file in ~/.lpm/projects/, and it starts with the folder the code lives in.

Edit the YAML.

~/.lpm/projects/myapp.ymlvalid
name: myapp
root: ~/Projects/myapp
services:
  web: npm run dev

You don’t have to write this from scratch

Click + in the sidebar and pick a folder, or clone a repository. lpm creates this file for you and fills in the services it finds in the project’s own files — see automatic service detection. Edit it later in the app, as a form or as YAML.

  • namestring

    The project’s name — what the sidebar shows unless you set a label, and what the lpm CLI calls it. Defaults to the config file’s name, so myapp.yml is the project myapp. Changing it in the app’s config editor renames the file.

  • root*string

    The folder on your computer where this project lives. Every relative path in the config (like cwd) is resolved from here. ~ is a shortcut for your home directory (e.g. ~/Projects/myapp). Required for local projects; an SSH project has an ssh block instead.

  • labelstring

    The name the app shows for the project, when you want something friendlier than name. Renaming a project in the app changes this, not the file name.

  • sshmap

    Makes this an SSH project: services, actions, and terminals run on a remote machine instead of this computer. host and user are required; port defaults to 22; key points to an identity file (leave it out to use ssh-agent or your ~/.ssh/config); dir is the remote working folder. More in SSH projects on a Mac.

  • claudeAccountstring

    Id of the Claude account this project’s terminals, actions, and AI features always use. Accounts are managed in the desktop app under Settings → Accounts & usage, which also writes this field for you via the project menu. Set it to an empty string to always use your main Claude login; leave it out to use your main accounts. Not applied to SSH projects — the remote host has its own Claude login. See multiple Claude Code accounts.

  • claudeAccounts[]string

    Up to three Claude account ids, in order, for this project’s new sessions to take turns on when account switching is turned on in Settings. Each new session starts on the first listed account that is under 90% of its 5-hour and weekly limits; sessions already running stay where they are. Use default for the main login. Ignored when claudeAccount is set.

  • autoPullbool

    Whether lpm fast-forwards this project by itself when origin has new commits. It only pulls when the branch has no uncommitted changes and no commits of yours to push, and waits while an agent is working. The desktop app writes this field from the project’s Git menu → Auto pull. Leave it out to follow the parent project (for a duplicate or worktree), then Settings → Git → Auto pull.

* required

SSH projects. Swap root for an ssh block and the same services, actions, and terminals run on a remote machine. Adding an SSH host in the app writes this for you, with one shell service that opens a login shell on the host. lpm doesn’t scan remote folders for services, so add your own.

~/.lpm/projects/staging.yml
name: staging
ssh:
  host: staging.example.com
  user: deploy
  dir: ~/apps/shop
services:
  shell: exec "$SHELL" -l     # what adding an SSH host writes
  api: npm run start
actions:
  logs:
    cmd: tail -f log/production.log
    type: terminal