Project
~/.lpm/projects/, and it starts with the folder the code lives in.Edit the YAML and the app above it updates as you type.
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.
namestringThe project’s name — what the sidebar shows unless you set a
label, and what thelpmCLI calls it. Defaults to the config file’s name, somyapp.ymlis the projectmyapp. Changing it in the app’s config editor renames the file.root*stringThe 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 ansshblock instead.labelstringThe 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.sshmapMakes this an SSH project: services, actions, and terminals run on a remote machine instead of this computer.
hostanduserare required;portdefaults to 22;keypoints to an identity file (leave it out to use ssh-agent or your~/.ssh/config);diris the remote working folder. More in SSH projects on a Mac.claudeAccountstringId 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[]stringUp 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
defaultfor the main login. Ignored whenclaudeAccountis set.autoPullboolWhether 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.
| Field | Type | Description |
|---|---|---|
name | string | 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. |
label | string | 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. |
ssh | map | 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. |
claudeAccount | string | 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. |
autoPull | bool | 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.
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