Glossary
The vocabulary you need to read the rest of the docs.
Action
A single unit of build work. Encodes a command line, input file digests, the platform requirements, and the expected outputs. Hashing an action produces a stable identifier; identical actions have identical hashes.
ActionResult
What an action produces. Output file digests, exit code, captured stdout/stderr, timing metadata.
Action Cache (AC)
A keyed store: hash(Action) → ActionResult. Cache hits skip the
work entirely.
CAS — Content-Addressable Storage
Stores every blob (source file, intermediate output, final binary) under its SHA-256 hash. The same byte sequence stored from anywhere collapses to one entry.
Digest
A content hash plus a size. Used everywhere instead of file paths.
Hermetic build
A build whose outputs depend only on its declared inputs. Same inputs → same outputs, on any machine, any time. See How do I make my Bazel setup hermetic?.
Instance name
A namespace inside a NativeLink cluster. Action hashes from different instance names never collide. Lets one cluster serve multiple isolated environments.
LRE — Local Remote Execution
NativeLink running on localhost, with a Nix-pinned toolchain, so
local builds are bit-identical to remote ones. See
LRE.
Platform properties
Key/value tags attached to an action ("this action needs Linux, x86_64, a GPU") and to a worker ("this worker has Linux, x86_64, a GPU"). The scheduler matches them.
Remote Execution API (RE-API)
The standard gRPC protocol every supported build system speaks. Spec.
Scheduler
The dispatcher. Receives Execute calls, picks workers, tracks
in-flight actions.
Worker
The process that runs an action. Fetches inputs from CAS, runs the command in a sandbox, uploads outputs to CAS.
Sandbox
The isolated environment a worker runs an action in. On Linux,
typically bwrap or landlock; on macOS, sandbox-exec. The
sandbox makes hermeticity enforceable.
Toolchain
The bundle of binaries an action needs to run — compiler, linker, standard library, etc. See What are toolchains?.