lattice build

Lattice Build

A high-performance, local toolchain for managing monorepos.

A repo with a Go service, a React app and a Python worker in it usually means three different build commands and three different ways of getting them wrong. Lattice runs all of it, in dependency order, off one file.

It hashes what went into each task: the command, the files, the environment, the lockfiles. When nothing has moved, the old result comes back instead. Change one file and only what depends on it runs again.

  • Builds and tests every project in the repo from one command, in the right order, in parallel.
  • Skips anything whose inputs have not changed. The result comes back out of the cache instead.
  • Works out how each project builds from what is already in its directory. Override any command in lattice.json.
  • Pins the version of node, rust, go or whatever else a project needs, and provisions it if it is missing.
  • A folder that already has its own task runner drops in as a single workspace.
{
  "workspaces": ["apps/api", "apps/web", "libs/core"],
  "engines": { "node": "22.x", "rust": "1.83" },
  "pipeline": {
    "build": { "dependsOn": ["^build"], "outputs": ["dist/**"] },
    "test": { "dependsOn": ["build"] }
  }
}