Docs/Config

Project config

.lumpcode/project.json is committed. It names the project and can set team defaults every lump inherits.

On this page
  1. Fields
  2. Merge
  3. What to commit

lumpcode project-setup writes this file next to .git. Commit it.

.lumpcode/project.json
{
  "projectName": "my-monorepo",
  "primaryBranch": "dev",
  "command": "cursor",
  "maximumNumberOfConcurrentBranches": 2
}

Fields

Field Required Notes
projectName yes Letters, digits, _, - only. Daemon filenames and ~/.lumpcode/project-copies/<projectName>/.
primaryBranch or primaryBranches yes after merge with local Integration line. Either this file or local.json may supply it; local wins. Deprecated alias: projectBaseBranch.
command no Lump default. Tag only, not a .ts path.
maximumNumberOfConcurrentBranches no Lump default.
keepHistory no Lump default.
refreshCommand no Dedicated worker only. Shell to run after fetch on each scan branch before lumps load (submodules, codegen). Local wins. Ignored by run and by shared mode.

Unknown keys fail. Do not put mode, workspaceStrategy, disabled, maxParallelRun, or verbose here. Those are local.

project-setup infers projectName from git remote get-url origin or the directory basename if you omit --projectName. --primaryBranch defaults to main.

Merge

Shared keys present on both project and local: local wins. After merge, a primary source is required.

Lump defaults (command, maximumNumberOfConcurrentBranches, keepHistory): lump > local > project, only when the lump leaves the field undefined.

A worker process reads this merge once at start. Restart the worker after you change either file.

What to commit

A project root is a directory that contains both .git/ and .lumpcode/. Commit project.json and lump folders with the product code. Gitignore local.json. project-setup already appends local.json, history/, .cache/, worktrees/, and contextStatusRecord.json to .gitignore.

Edit this page