How an action reaches a worker
- Bazel checks the remote cache for the action. On a hit, nothing runs.
- On a miss, Bazel uploads any inputs the cache lacks and sends the action with its
exec_properties: its exec platform’s, merged with any the target sets. - The scheduler queues it for the pool whose platform properties equal that set exactly: same keys, same values.
- A worker in that pool fetches the inputs from the cache, runs the action in the pool’s container image, and writes the outputs back to the cache.
Worker pools
A deployment has as many pools as your build needs. You configure each one:
Actions can run Docker, so container-based integration tests run remotely too.
Scaling
Each pool scales on the depth of its own queue, between a floor and a ceiling you set. A floor of zero lets an idle pool scale to zero, and there’s no platform limit on the ceiling.Making a configuration change
You decide the pools; who applies the change depends on how the deployment is run:
Your repository changes alongside it: a new pool needs an exec platform in Bazel that requests its properties, and a toolchain that runs on its image.

