Tutorial

Leave a worker running

In the morning, branches are waiting. You merge, you push a new lump, the worker picks it up. Nothing to deploy.

Start it once

On a clone you never develop in, run lumpcode start. It discovers every lump in the repo and works through them on a schedule.

Push a new lump

Nothing to deploy, register, or restart. The worker fetches your primary branch on its next pass and finds the new lump on its own.

Branches arrive

It works through each lump context by context and pushes a branch per run. You open the pull requests and merge from wherever you are.

1. First PR already done

If you have not run a lump by hand yet, do that first: From install to the first PR. This page is only the worker.

2. A second clone

Clone the same repo into a folder you never edit. Another directory on this laptop is enough, for example ~/lumpcode-worker. A small always-on box is later, not required.

3. Start it

.lumpcode/ is already in the repo, so do not run project-setup on the worker. Put the CLI on this clone, install project deps, write .lumpcode/local.json, then start. The worker also needs Node.js 22+, git origin fetch and push, and a CLI agent on PATH (already logged in).

.lumpcode/local.json
{
  "mode": "dedicated"
}

mode: dedicated wipes uncommitted work on this clone. Do not pick it for a checkout you also edit.

terminal
npm install -g @lumpcode/cli
npm install
lumpcode start
lumpcode daemon-status

lumpcode start with no filters discovers every lump on a schedule. You do not restart for new lumps.

Later: lumpcode daemon-status, lumpcode daemon-log, lumpcode stop.

Writing TypeScript lumps? Lump config.

4. Back to the laptop

Author as in the first PR. Preview with lumpcode lump-plan <lumpName>. Commit, push, and merge to the primary branch. The worker fetches that branch on its next pass.

  • Every finished context gets a LUMP: <lumpName> - <context> marker commit on a lump/… branch. Open a PR. If you squash, keep that line.
  • Merge what is good. The next pass skips finished contexts and picks another.
  • To pause a campaign, set disabled: true on the lump, push, and merge. The next pass soft-skips it. The worker stays up.

Depth: local.json, run vs start.