Introduction
A high-performance, local toolchain for managing monorepos.
Lattice is one CLI that runs tasks across the workspaces of a monorepo and pins
the tool versions those tasks run with. Both halves read one lattice.json at
the repo root, and either half works without the other. A workspace with no
engines still runs and caches tasks. A workspace with no tasks of its own can
still pin a tool version.
Start here
These pages get you from an empty repo to a cached run.
- Installation gets the
latticebinary onto your machine and shows what a pinned version does. - Getting started runs
lattice init, thenlattice run buildtwice, so the second run comes back from cache. - Upgrading covers moving a repo to a new Lattice version.
Do one thing in your own repo
Each guide solves one problem and assumes you already have a repo.
- Adopting Lattice declares an existing monorepo one workspace at a time.
- A multi-language monorepo wires JavaScript, Rust, and Python workspaces into one task graph.
- Nested repos covers a repo that contains
another repo with its own
lattice.json. - Pinning tool versions constrains and provisions a compiler, linter, or package manager.
- Dev servers and watchers runs processes that never exit.
- Continuous integration wires
lattice runinto a CI job and shares the cache. - Troubleshooting works backward from a symptom.
- The desktop app opens a project in a window instead of a terminal.
Understand how it decides
These pages explain the models behind the behavior. Read them when the output surprises you.
- Workspaces is the unit everything else is scoped to.
- Task graph covers
dependsOn, the^prefix, and what runs in parallel. - Caching covers what makes a task hit or miss.
- Driver detection covers how Lattice picks the tool that runs a workspace’s tasks, and when it stops to ask.
- Engines and provisioning covers the three things a version constraint can mean.
- Selecting what runs covers
--filterand stacked tasks. - Persistent tasks covers tasks that run until you stop them.
- Output and logging covers the interactive display and the raw stream.
Look something up
- Configuration is the field reference for
lattice.json. - CLI reference is every command, flag, and exit code.
- Toolchains is the built-in driver table and the well-known engine list.
- Environment variables is what Lattice reads from the environment and what it sets for a task.
- Errors is every error message and what causes it.
- Cache internals is the exact key composition and on-disk layout.
- Architecture is the crate layout, for contributors.
- Glossary defines every term these pages use.
- Changelog is what changed in each release.