diff --git a/recipe_modules/build/api.py b/recipe_modules/build/api.py
index d6e898f..40f47c4 100644
--- a/recipe_modules/build/api.py
+++ b/recipe_modules/build/api.py
@@ -13,39 +13,50 @@
 # the License.
 """Calls to build code."""
 
+import attr
 from recipe_engine import recipe_api
 
 
+@attr.s
+class Context:
+    _api = attr.ib()
+    checkout_root = attr.ib()
+    root = attr.ib()
+    options = attr.ib()
+
+
 class BuildApi(recipe_api.RecipeApi):
     """Calls to build code."""
 
     CAS_DIGEST_PROPERTY_NAME = 'cas_build_digest'
 
-    def __init__(self, *args, **kwargs):
-        super().__init__(*args, **kwargs)
-        self.dir = None
+    def create(self, checkout_root, options, root=None):
+        if not root:
+            root = checkout_root.join('out')
+        return Context(self.m, checkout_root, root, options)
 
-    def initialize(self):
-        self.dir = self.m.path['start_dir'].join('build')
+    def __call__(self, ctx):
+        self.gn_gen(ctx)
+        self.ninja(ctx)
 
-    def gn_gen(self, checkout_dir, options):
+    def gn_gen(self, ctx):
         cmd = ['gn', 'gen']
 
-        for gn_arg in options.gn_args:
+        for gn_arg in ctx.options.gn_args:
             cmd.append(f'--args={gn_arg}')
 
         # Infrequently needed but harmless to always add this.
         cmd.append('--export-compile-commands')
 
-        cmd.append(self.dir)
+        cmd.append(ctx.root)
 
-        with self.m.context(cwd=checkout_dir):
+        with self.m.context(cwd=ctx.checkout_root):
             self.m.step('gn gen', cmd)
 
-    def get_gn_args(self, checkout_root=None, test_data=None):
-        context_kwargs = {'cwd': checkout_root} if checkout_root else {}
+    def get_gn_args(self, ctx, test_data=None):
+        context_kwargs = {'cwd': ctx.checkout_root} if ctx.checkout_root else {}
         with self.m.context(**context_kwargs):
-            cmd = ['gn', 'args', self.dir, '--list', '--json']
+            cmd = ['gn', 'args', ctx.root, '--list', '--json']
             args = self.m.step(
                 'all gn args',
                 cmd,
@@ -56,24 +67,21 @@
             ).stdout
             return {x['name']: x for x in args or ()}
 
-    def ninja(self, options):
-        cmd = ['ninja', '-C', self.dir]
-        cmd.extend(options.ninja_targets)
+    def ninja(self, ctx):
+        cmd = ['ninja', '-C', ctx.root]
+        cmd.extend(ctx.options.ninja_targets)
         with self.m.default_timeout():
             self.m.step('ninja', cmd)
 
-    def __call__(self, checkout_dir, options):
-        self.gn_gen(checkout_dir, options)
-        self.ninja(options)
-
-    def archive_to_cas(self):
+    def archive_to_cas(self, ctx):
         # TODO(b/234879756) Only archive necessary files.
         with self.m.step.nest('archive to cas') as pres:
-            digest = self.m.cas.archive('archive', self.dir, self.dir)
+            digest = self.m.cas.archive('archive', ctx.root, ctx.root)
             pres.properties[self.CAS_DIGEST_PROPERTY_NAME] = digest
+            return digest
 
-    def download_from_cas(self, digest):
-        return self.m.cas.download('download from cas', digest, self.dir)
+    def download_from_cas(self, ctx, digest):
+        return self.m.cas.download('download from cas', digest, ctx.root)
 
     def log_longest_build_steps(self, ninja_log):
         """Parse the build log and log the longest-running build steps."""
@@ -107,9 +115,6 @@
         log_longest_build_steps() on it.
         """
 
-        if build_dir is None:
-            build_dir = self.dir
-
         globs = [
             '*.gn',
             '*.log',
diff --git a/recipe_modules/build/tests/full.expected/full.json b/recipe_modules/build/tests/full.expected/full.json
index b305558..e18dbad 100644
--- a/recipe_modules/build/tests/full.expected/full.json
+++ b/recipe_modules/build/tests/full.expected/full.json
@@ -5,7 +5,7 @@
       "gen",
       "--args=foo=true",
       "--export-compile-commands",
-      "[START_DIR]/build"
+      "[START_DIR]/checkout/out"
     ],
     "cwd": "[START_DIR]/checkout",
     "name": "gn gen"
@@ -21,7 +21,7 @@
     "cmd": [
       "ninja",
       "-C",
-      "[START_DIR]/build",
+      "[START_DIR]/checkout/out",
       "target"
     ],
     "luci_context": {
@@ -62,7 +62,7 @@
       "--json-output",
       "/path/to/tmp/json",
       "glob",
-      "[START_DIR]/build",
+      "[START_DIR]/checkout/out",
       "*.gn",
       "--hidden"
     ],
@@ -81,7 +81,7 @@
       "--json-output",
       "/path/to/tmp/json",
       "glob",
-      "[START_DIR]/build",
+      "[START_DIR]/checkout/out",
       "*.log",
       "--hidden"
     ],
@@ -89,9 +89,9 @@
     "name": "save logs.logs.glob.*.log",
     "~followup_annotations": [
       "@@@STEP_NEST_LEVEL@3@@@",
-      "@@@STEP_LOG_LINE@glob@[START_DIR]/build/.ninja_log@@@",
-      "@@@STEP_LOG_LINE@glob@[START_DIR]/build/failure-summary.log@@@",
-      "@@@STEP_LOG_LINE@glob@[START_DIR]/build/links.json@@@",
+      "@@@STEP_LOG_LINE@glob@[START_DIR]/checkout/out/.ninja_log@@@",
+      "@@@STEP_LOG_LINE@glob@[START_DIR]/checkout/out/failure-summary.log@@@",
+      "@@@STEP_LOG_LINE@glob@[START_DIR]/checkout/out/links.json@@@",
       "@@@STEP_LOG_END@glob@@@"
     ]
   },
@@ -103,7 +103,7 @@
       "--json-output",
       "/path/to/tmp/json",
       "glob",
-      "[START_DIR]/build",
+      "[START_DIR]/checkout/out",
       "*.json",
       "--hidden"
     ],
@@ -122,7 +122,7 @@
       "--json-output",
       "/path/to/tmp/json",
       "glob",
-      "[START_DIR]/build",
+      "[START_DIR]/checkout/out",
       "*.compdb",
       "--hidden"
     ],
@@ -141,7 +141,7 @@
       "--json-output",
       "/path/to/tmp/json",
       "glob",
-      "[START_DIR]/build",
+      "[START_DIR]/checkout/out",
       "*.graph",
       "--hidden"
     ],
@@ -160,7 +160,7 @@
       "--json-output",
       "/path/to/tmp/json",
       "glob",
-      "[START_DIR]/build",
+      "[START_DIR]/checkout/out",
       "*_log",
       "--hidden"
     ],
@@ -179,7 +179,7 @@
       "--json-output",
       "/path/to/tmp/json",
       "copy",
-      "[START_DIR]/build/.ninja_log",
+      "[START_DIR]/checkout/out/.ninja_log",
       "/path/to/tmp/"
     ],
     "infra_step": true,
@@ -202,7 +202,7 @@
       "--json-output",
       "/path/to/tmp/json",
       "copy",
-      "[START_DIR]/build/failure-summary.log",
+      "[START_DIR]/checkout/out/failure-summary.log",
       "/path/to/tmp/"
     ],
     "infra_step": true,
@@ -222,7 +222,7 @@
       "--json-output",
       "/path/to/tmp/json",
       "copy",
-      "[START_DIR]/build/links.json",
+      "[START_DIR]/checkout/out/links.json",
       "/path/to/tmp/"
     ],
     "infra_step": true,
@@ -291,7 +291,7 @@
       "ensure-directory",
       "--mode",
       "0777",
-      "[START_DIR]/build/export/build_logs"
+      "[START_DIR]/checkout/out/export/build_logs"
     ],
     "infra_step": true,
     "name": "save logs.mkdir build_logs",
@@ -314,8 +314,8 @@
       "--json-output",
       "/path/to/tmp/json",
       "copy",
-      "[START_DIR]/build/.ninja_log",
-      "[START_DIR]/build/export/build_logs/.ninja_log"
+      "[START_DIR]/checkout/out/.ninja_log",
+      "[START_DIR]/checkout/out/export/build_logs/.ninja_log"
     ],
     "infra_step": true,
     "name": "save logs.copy..ninja_log",
@@ -331,8 +331,8 @@
       "--json-output",
       "/path/to/tmp/json",
       "copy",
-      "[START_DIR]/build/failure-summary.log",
-      "[START_DIR]/build/export/build_logs/failure-summary.log"
+      "[START_DIR]/checkout/out/failure-summary.log",
+      "[START_DIR]/checkout/out/export/build_logs/failure-summary.log"
     ],
     "infra_step": true,
     "name": "save logs.copy.failure-summary.log",
@@ -348,8 +348,8 @@
       "--json-output",
       "/path/to/tmp/json",
       "copy",
-      "[START_DIR]/build/links.json",
-      "[START_DIR]/build/export/build_logs/links.json"
+      "[START_DIR]/checkout/out/links.json",
+      "[START_DIR]/checkout/out/export/build_logs/links.json"
     ],
     "infra_step": true,
     "name": "save logs.copy.links.json",
@@ -361,10 +361,11 @@
     "cmd": [
       "gn",
       "args",
-      "[START_DIR]/build",
+      "[START_DIR]/checkout/out",
       "--list",
       "--json"
     ],
+    "cwd": "[START_DIR]/checkout",
     "name": "all gn args",
     "~followup_annotations": [
       "@@@STEP_LOG_LINE@json.output@[]@@@",
@@ -461,7 +462,7 @@
       "-dump-digest",
       "/path/to/tmp/",
       "-paths-json",
-      "[[\"[START_DIR]/build\", \".\"]]"
+      "[[\"[START_DIR]/checkout/out\", \".\"]]"
     ],
     "infra_step": true,
     "name": "archive to cas.archive",
@@ -479,7 +480,7 @@
       "-digest",
       "digest",
       "-dir",
-      "[START_DIR]/build"
+      "[START_DIR]/checkout/out"
     ],
     "infra_step": true,
     "name": "download from cas"
diff --git a/recipe_modules/build/tests/full.py b/recipe_modules/build/tests/full.py
index f1e0647..ed2863a 100644
--- a/recipe_modules/build/tests/full.py
+++ b/recipe_modules/build/tests/full.py
@@ -26,12 +26,19 @@
 
 
 def RunSteps(api, props):
-    api.build(api.path['start_dir'].join('checkout'), props.build_options)
+    build = api.build.create(
+        api.path['start_dir'].join('checkout'), props.build_options,
+    )
+    api.build(build)
     with api.step.nest('save logs') as pres:
-        api.build.save_logs(export_dir=api.build.dir.join('export'), pres=pres)
-    api.build.get_gn_args()
-    api.build.archive_to_cas()
-    api.build.download_from_cas('digest')
+        api.build.save_logs(
+            build_dir=build.root,
+            export_dir=build.root.join('export'),
+            pres=pres,
+        )
+    api.build.get_gn_args(build)
+    api.build.archive_to_cas(build)
+    api.build.download_from_cas(build, 'digest')
 
 
 def GenTests(api):  # pylint: disable=invalid-name
diff --git a/recipe_modules/environment/__init__.py b/recipe_modules/environment/__init__.py
index 2c15d03..5684b7c 100644
--- a/recipe_modules/environment/__init__.py
+++ b/recipe_modules/environment/__init__.py
@@ -16,7 +16,6 @@
 
 DEPS = [
     'fuchsia/macos_sdk',
-    'pigweed/build',
     'pigweed/default_timeout',
     'recipe_engine/buildbucket',
     'recipe_engine/cas',
diff --git a/recipe_modules/environment/api.py b/recipe_modules/environment/api.py
index 468ae91..d049889 100644
--- a/recipe_modules/environment/api.py
+++ b/recipe_modules/environment/api.py
@@ -149,7 +149,7 @@
             '--shell-file',
             shell_file,
             '--virtualenv-gn-out-dir',
-            self.m.build.dir,
+            env.dir.join('out'),
             '--use-existing-cipd',
             '--strict',
         ]
diff --git a/recipe_modules/environment/tests/full.expected/doctor-fail.json b/recipe_modules/environment/tests/full.expected/doctor-fail.json
index fe14c29..f2a504c 100644
--- a/recipe_modules/environment/tests/full.expected/doctor-fail.json
+++ b/recipe_modules/environment/tests/full.expected/doctor-fail.json
@@ -97,7 +97,7 @@
       "--shell-file",
       "[START_DIR]/environment/setup.sh",
       "--virtualenv-gn-out-dir",
-      "[START_DIR]/build",
+      "[START_DIR]/environment/out",
       "--use-existing-cipd",
       "--strict",
       "--skip-submodule-check",
diff --git a/recipe_modules/environment/tests/full.expected/normal.json b/recipe_modules/environment/tests/full.expected/normal.json
index 6ffd1bb..361ab55 100644
--- a/recipe_modules/environment/tests/full.expected/normal.json
+++ b/recipe_modules/environment/tests/full.expected/normal.json
@@ -291,7 +291,7 @@
       "--shell-file",
       "[START_DIR]/environment/setup.sh",
       "--virtualenv-gn-out-dir",
-      "[START_DIR]/build",
+      "[START_DIR]/environment/out",
       "--use-existing-cipd",
       "--strict",
       "--skip-submodule-check",
diff --git a/recipe_modules/environment/tests/full.expected/override-cas.json b/recipe_modules/environment/tests/full.expected/override-cas.json
index 6138d27..2837bf3 100644
--- a/recipe_modules/environment/tests/full.expected/override-cas.json
+++ b/recipe_modules/environment/tests/full.expected/override-cas.json
@@ -96,7 +96,7 @@
       "--shell-file",
       "[START_DIR]/environment/setup.sh",
       "--virtualenv-gn-out-dir",
-      "[START_DIR]/build",
+      "[START_DIR]/environment/out",
       "--use-existing-cipd",
       "--strict",
       "--skip-submodule-check",
diff --git a/recipe_modules/environment/tests/full.expected/override-cipd.json b/recipe_modules/environment/tests/full.expected/override-cipd.json
index 3275b43..31e3165 100644
--- a/recipe_modules/environment/tests/full.expected/override-cipd.json
+++ b/recipe_modules/environment/tests/full.expected/override-cipd.json
@@ -96,7 +96,7 @@
       "--shell-file",
       "[START_DIR]/environment/setup.sh",
       "--virtualenv-gn-out-dir",
-      "[START_DIR]/build",
+      "[START_DIR]/environment/out",
       "--use-existing-cipd",
       "--strict",
       "--skip-submodule-check",
diff --git a/recipe_modules/environment/tests/full.expected/windows.json b/recipe_modules/environment/tests/full.expected/windows.json
index 0630d7b..cd43c2e 100644
--- a/recipe_modules/environment/tests/full.expected/windows.json
+++ b/recipe_modules/environment/tests/full.expected/windows.json
@@ -96,7 +96,7 @@
       "--shell-file",
       "[START_DIR]\\environment\\setup.sh",
       "--virtualenv-gn-out-dir",
-      "[START_DIR]\\build",
+      "[START_DIR]\\environment\\out",
       "--use-existing-cipd",
       "--strict",
       "--unpin-pip-packages",
diff --git a/recipes/build.expected/basic.json b/recipes/build.expected/basic.json
index f642d1a..65005a0 100644
--- a/recipes/build.expected/basic.json
+++ b/recipes/build.expected/basic.json
@@ -1504,7 +1504,7 @@
       "gen",
       "--args=gnarg",
       "--export-compile-commands",
-      "[START_DIR]/build"
+      "[START_DIR]/co/out"
     ],
     "cwd": "[START_DIR]/co",
     "env": {
@@ -1535,7 +1535,7 @@
     "cmd": [
       "ninja",
       "-C",
-      "[START_DIR]/build"
+      "[START_DIR]/co/out"
     ],
     "env": {
       "PW_TEST_VAR": "test_value"
@@ -1693,7 +1693,7 @@
       "-dump-digest",
       "/path/to/tmp/",
       "-paths-json",
-      "[[\"[START_DIR]/build\", \".\"]]"
+      "[[\"[START_DIR]/co/out\", \".\"]]"
     ],
     "env": {
       "PW_TEST_VAR": "test_value"
@@ -1721,7 +1721,7 @@
     "cmd": [],
     "name": "result",
     "~followup_annotations": [
-      "@@@SET_BUILD_PROPERTY@digest@null@@@"
+      "@@@SET_BUILD_PROPERTY@digest@\"e3b0c44298fc1c149afbf4c8996fb92427ae41e4649b934ca495991b7852b855/0\"@@@"
     ]
   },
   {
diff --git a/recipes/build.expected/skip_archive.json b/recipes/build.expected/skip_archive.json
index b328ad7..b9381d8 100644
--- a/recipes/build.expected/skip_archive.json
+++ b/recipes/build.expected/skip_archive.json
@@ -1504,7 +1504,7 @@
       "gen",
       "--args=gnarg",
       "--export-compile-commands",
-      "[START_DIR]/build"
+      "[START_DIR]/co/out"
     ],
     "cwd": "[START_DIR]/co",
     "env": {
@@ -1535,7 +1535,7 @@
     "cmd": [
       "ninja",
       "-C",
-      "[START_DIR]/build"
+      "[START_DIR]/co/out"
     ],
     "env": {
       "PW_TEST_VAR": "test_value"
@@ -1559,6 +1559,10 @@
     "name": "ninja"
   },
   {
+    "cmd": [],
+    "name": "result"
+  },
+  {
     "name": "$result"
   }
 ]
\ No newline at end of file
diff --git a/recipes/build.py b/recipes/build.py
index 1a3425c..1e14680 100644
--- a/recipes/build.py
+++ b/recipes/build.py
@@ -29,15 +29,17 @@
 def RunSteps(api, props):
     checkout = api.checkout(props.checkout_options)
     env = api.environment.init(checkout, props.environment_options)
+    digest = None
 
     with env():
-        api.build(checkout.root, props.build_options)
-        if props.skip_archive:
-            return
-        digest = api.build.archive_to_cas()
+        build = api.build.create(checkout.root, props.build_options)
+        api.build(build)
+        if not props.skip_archive:
+            digest = api.build.archive_to_cas(build)
 
     with api.step.nest('result') as pres:
-        pres.properties['digest'] = digest
+        if digest:
+            pres.properties['digest'] = digest
 
 
 def GenTests(api):
diff --git a/recipes/docs_builder.expected/docs.json b/recipes/docs_builder.expected/docs.json
index ae4219c..7bdbe94 100644
--- a/recipes/docs_builder.expected/docs.json
+++ b/recipes/docs_builder.expected/docs.json
@@ -1018,7 +1018,7 @@
       "gn",
       "gen",
       "--export-compile-commands",
-      "[START_DIR]/build"
+      "[START_DIR]/co/out"
     ],
     "cwd": "[START_DIR]/co",
     "env": {
@@ -1037,7 +1037,7 @@
     "cmd": [
       "ninja",
       "-C",
-      "[START_DIR]/build"
+      "[START_DIR]/co/out"
     ],
     "env": {
       "PW_TEST_VAR": "test_value"
@@ -1155,7 +1155,7 @@
       "-m",
       "cp",
       "-r",
-      "[START_DIR]/build/docs/gen/docs/html",
+      "[START_DIR]/co/out/docs/gen/docs/html",
       "gs://pigweed-docs/HASH"
     ],
     "infra_step": true,
@@ -1199,7 +1199,7 @@
       "/path/to/tmp/json",
       "copy",
       "HASH",
-      "[START_DIR]/build/HEAD"
+      "[START_DIR]/co/out/HEAD"
     ],
     "infra_step": true,
     "name": "write HEAD",
@@ -1216,7 +1216,7 @@
       "-o",
       "GSUtil:software_update_check_period=0",
       "cp",
-      "[START_DIR]/build/HEAD",
+      "[START_DIR]/co/out/HEAD",
       "gs://pigweed-docs/HEAD"
     ],
     "infra_step": true,
@@ -1235,7 +1235,7 @@
       "-m",
       "rsync",
       "-r",
-      "[START_DIR]/build/docs/gen/docs/html",
+      "[START_DIR]/co/out/docs/gen/docs/html",
       "gs://pigweed-docs/latest"
     ],
     "infra_step": true,
diff --git a/recipes/docs_builder.expected/docs_dry_run.json b/recipes/docs_builder.expected/docs_dry_run.json
index a0e49f8..275bad6 100644
--- a/recipes/docs_builder.expected/docs_dry_run.json
+++ b/recipes/docs_builder.expected/docs_dry_run.json
@@ -1018,7 +1018,7 @@
       "gn",
       "gen",
       "--export-compile-commands",
-      "[START_DIR]/build"
+      "[START_DIR]/co/out"
     ],
     "cwd": "[START_DIR]/co",
     "env": {
@@ -1037,7 +1037,7 @@
     "cmd": [
       "ninja",
       "-C",
-      "[START_DIR]/build"
+      "[START_DIR]/co/out"
     ],
     "env": {
       "PW_TEST_VAR": "test_value"
@@ -1155,7 +1155,7 @@
       "-m",
       "cp",
       "-r",
-      "[START_DIR]/build/docs/gen/docs/html",
+      "[START_DIR]/co/out/docs/gen/docs/html",
       "gs://pigweed-docs/testing/swarming-fake-task-id/HASH"
     ],
     "infra_step": true,
diff --git a/recipes/docs_builder.py b/recipes/docs_builder.py
index 504e1d0..0ff91c9 100644
--- a/recipes/docs_builder.py
+++ b/recipes/docs_builder.py
@@ -38,11 +38,12 @@
 
     checkout = api.checkout(props.checkout_options)
     env = api.environment.init(checkout, props.environment_options)
+    build = api.build.create(checkout.root, props.build_options)
 
     with env():
-        api.build(checkout.root, props.build_options)
+        api.build(build)
 
-    html = api.build.dir.join('docs', 'gen', 'docs', 'html')
+    html = build.root.join('docs', 'gen', 'docs', 'html')
 
     if props.dry_run:
         path = f'testing/swarming-{api.swarming.task_id}/{checkout.revision()}'
@@ -65,7 +66,7 @@
     ).json.output
 
     if change['branch'] in ('master', 'main') and not props.dry_run:
-        head = api.build.dir.join('HEAD')
+        head = build.root.join('HEAD')
         api.file.write_text('write HEAD', head, checkout.revision())
         api.gsutil.upload(bucket=bucket, src=head, dst='HEAD')
 
diff --git a/recipes/target_to_cipd.expected/success.json b/recipes/target_to_cipd.expected/success.json
index 41ab641..be4da78 100644
--- a/recipes/target_to_cipd.expected/success.json
+++ b/recipes/target_to_cipd.expected/success.json
@@ -1131,65 +1131,6 @@
   },
   {
     "cmd": [
-      "gn",
-      "gen",
-      "--export-compile-commands",
-      "[START_DIR]/build"
-    ],
-    "cwd": "[START_DIR]/co",
-    "env": {
-      "PW_TEST_VAR": "test_value"
-    },
-    "luci_context": {
-      "realm": {
-        "name": "project:ci"
-      },
-      "resultdb": {
-        "current_invocation": {
-          "name": "invocations/build:8945511751514863184",
-          "update_token": "token"
-        },
-        "hostname": "rdbhost"
-      }
-    },
-    "name": "gn gen"
-  },
-  {
-    "cmd": [],
-    "name": "timeout 11h 4m 34s",
-    "~followup_annotations": [
-      "@@@STEP_SUMMARY_TEXT@soft_deadline: -120.0@@@"
-    ]
-  },
-  {
-    "cmd": [
-      "ninja",
-      "-C",
-      "[START_DIR]/build"
-    ],
-    "env": {
-      "PW_TEST_VAR": "test_value"
-    },
-    "luci_context": {
-      "deadline": {
-        "grace_period": 30.0,
-        "soft_deadline": -120.0
-      },
-      "realm": {
-        "name": "project:ci"
-      },
-      "resultdb": {
-        "current_invocation": {
-          "name": "invocations/build:8945511751514863184",
-          "update_token": "token"
-        },
-        "hostname": "rdbhost"
-      }
-    },
-    "name": "ninja"
-  },
-  {
-    "cmd": [
       "vpython3",
       "-u",
       "RECIPE_MODULE[recipe_engine::file]/resources/fileutil.py",
@@ -1227,7 +1168,7 @@
       "--json-output",
       "/path/to/tmp/json",
       "glob",
-      "[START_DIR]/build",
+      "[START_DIR]/co/out",
       "foo/bar/baz"
     ],
     "infra_step": true,
@@ -1246,7 +1187,7 @@
     "name": "foo/bar/baz.glob",
     "~followup_annotations": [
       "@@@STEP_NEST_LEVEL@1@@@",
-      "@@@STEP_LOG_LINE@glob@[START_DIR]/build/foo/bar/baz@@@",
+      "@@@STEP_LOG_LINE@glob@[START_DIR]/co/out/foo/bar/baz@@@",
       "@@@STEP_LOG_END@glob@@@"
     ]
   },
@@ -1255,7 +1196,7 @@
     "name": "foo/bar/baz.source",
     "~followup_annotations": [
       "@@@STEP_NEST_LEVEL@1@@@",
-      "@@@STEP_SUMMARY_TEXT@[START_DIR]/build/foo/bar/baz\n[START_DIR]/build\n[START_DIR]/cipd-package/foo/replacement/baz@@@"
+      "@@@STEP_SUMMARY_TEXT@[START_DIR]/co/out/foo/bar/baz\n[START_DIR]/co/out\n[START_DIR]/cipd-package/foo/replacement/baz@@@"
     ]
   },
   {
@@ -1296,7 +1237,7 @@
       "--json-output",
       "/path/to/tmp/json",
       "copy",
-      "[START_DIR]/build/foo/bar/baz",
+      "[START_DIR]/co/out/foo/bar/baz",
       "[START_DIR]/cipd-package/foo/replacement/baz"
     ],
     "infra_step": true,
@@ -1312,7 +1253,7 @@
         "hostname": "rdbhost"
       }
     },
-    "name": "foo/bar/baz.copy [START_DIR]/build/foo/bar/baz [START_DIR]/cipd-package/foo/replacement/baz",
+    "name": "foo/bar/baz.copy [START_DIR]/co/out/foo/bar/baz [START_DIR]/cipd-package/foo/replacement/baz",
     "~followup_annotations": [
       "@@@STEP_NEST_LEVEL@1@@@"
     ]
@@ -1516,7 +1457,7 @@
       }
     },
     "name": "trigger ROLL",
-    "stdin": "{\"batches\": [{\"jobs\": [{\"job\": \"ROLL\", \"project\": \"project\"}], \"trigger\": {\"gitiles\": {\"ref\": \"refs/heads/main\", \"repo\": \"https://pigweed.googlesource.com/pigweed/manifest\", \"revision\": \"2d72510e447ab60a9728aeea2362d8be2cbd7789\", \"tags\": [\"parent_buildername:builder\", \"user_agent:recipe\"]}, \"id\": \"6a0a73b0-070b-492b-9135-9f26a2a00001\", \"title\": \"builder/0\"}}], \"timestamp\": 1337000007500000}",
+    "stdin": "{\"batches\": [{\"jobs\": [{\"job\": \"ROLL\", \"project\": \"project\"}], \"trigger\": {\"gitiles\": {\"ref\": \"refs/heads/main\", \"repo\": \"https://pigweed.googlesource.com/pigweed/manifest\", \"revision\": \"2d72510e447ab60a9728aeea2362d8be2cbd7789\", \"tags\": [\"parent_buildername:builder\", \"user_agent:recipe\"]}, \"id\": \"6a0a73b0-070b-492b-9135-9f26a2a00001\", \"title\": \"builder/0\"}}], \"timestamp\": 1337000006000000}",
     "~followup_annotations": [
       "@@@STEP_LOG_LINE@input@{@@@",
       "@@@STEP_LOG_LINE@input@    \"batches\": [@@@",
@@ -1542,7 +1483,7 @@
       "@@@STEP_LOG_LINE@input@            }@@@",
       "@@@STEP_LOG_LINE@input@        }@@@",
       "@@@STEP_LOG_LINE@input@    ], @@@",
-      "@@@STEP_LOG_LINE@input@    \"timestamp\": 1337000007500000@@@",
+      "@@@STEP_LOG_LINE@input@    \"timestamp\": 1337000006000000@@@",
       "@@@STEP_LOG_LINE@input@}@@@",
       "@@@STEP_LOG_END@input@@@"
     ]
diff --git a/recipes/target_to_cipd.py b/recipes/target_to_cipd.py
index f0fc41c..b5d3439 100644
--- a/recipes/target_to_cipd.py
+++ b/recipes/target_to_cipd.py
@@ -38,9 +38,8 @@
 
     with env():
         if props.artifacts:
-            api.build(checkout.root, props.build_options)
-            build_dir = api.build.dir
-            export_dir = build_dir.join(
+            build = api.build.create(checkout.root, props.build_options)
+            export_dir = build.root.join(
                 props.pw_presubmit_options.export_dir_name
             )
 
@@ -75,17 +74,17 @@
         for glob in props.artifacts:
             with api.step.nest(glob):
                 sources = api.file.glob_paths(
-                    'glob', api.build.dir, glob, test_data=(glob,)
+                    'glob', build.root, glob, test_data=(glob,)
                 )
                 if not sources:  # pragma: no cover
-                    api.file.listdir('ls build', api.build.dir, recursive=True)
+                    api.file.listdir('ls build', build.root, recursive=True)
                     raise api.step.StepFailure(f'no matches for {glob}')
                 for source in sources:
                     with api.step.nest('source') as pres:
                         pres.step_summary_text = '\n'.join(
-                            (str(source), str(api.build.dir))
+                            (str(source), str(build.root))
                         )
-                        relpath = api.path.relpath(source, api.build.dir)
+                        relpath = api.path.relpath(source, build.root)
                         for replacement in props.replacements:
                             relpath = relpath.replace(
                                 replacement.old, replacement.new
diff --git a/recipes/tokendb_updater.expected/dry-run.json b/recipes/tokendb_updater.expected/dry-run.json
index ea7a9b6..9e45551 100644
--- a/recipes/tokendb_updater.expected/dry-run.json
+++ b/recipes/tokendb_updater.expected/dry-run.json
@@ -1018,7 +1018,7 @@
       "gn",
       "gen",
       "--export-compile-commands",
-      "[START_DIR]/build"
+      "[START_DIR]/co/out"
     ],
     "cwd": "[START_DIR]/co",
     "env": {
@@ -1037,7 +1037,7 @@
     "cmd": [
       "ninja",
       "-C",
-      "[START_DIR]/build"
+      "[START_DIR]/co/out"
     ],
     "env": {
       "PW_TEST_VAR": "test_value"
diff --git a/recipes/tokendb_updater.expected/separate-repo.json b/recipes/tokendb_updater.expected/separate-repo.json
index bd59f51..a21d320 100644
--- a/recipes/tokendb_updater.expected/separate-repo.json
+++ b/recipes/tokendb_updater.expected/separate-repo.json
@@ -1555,7 +1555,7 @@
       "gn",
       "gen",
       "--export-compile-commands",
-      "[START_DIR]/build"
+      "[START_DIR]/co/out"
     ],
     "cwd": "[START_DIR]/co",
     "env": {
@@ -1574,7 +1574,7 @@
     "cmd": [
       "ninja",
       "-C",
-      "[START_DIR]/build"
+      "[START_DIR]/co/out"
     ],
     "env": {
       "PW_TEST_VAR": "test_value"
diff --git a/recipes/tokendb_updater.expected/simple.json b/recipes/tokendb_updater.expected/simple.json
index 2adb5b7..0286292 100644
--- a/recipes/tokendb_updater.expected/simple.json
+++ b/recipes/tokendb_updater.expected/simple.json
@@ -1018,7 +1018,7 @@
       "gn",
       "gen",
       "--export-compile-commands",
-      "[START_DIR]/build"
+      "[START_DIR]/co/out"
     ],
     "cwd": "[START_DIR]/co",
     "env": {
@@ -1037,7 +1037,7 @@
     "cmd": [
       "ninja",
       "-C",
-      "[START_DIR]/build"
+      "[START_DIR]/co/out"
     ],
     "env": {
       "PW_TEST_VAR": "test_value"
diff --git a/recipes/tokendb_updater.py b/recipes/tokendb_updater.py
index a531b31..552adb9 100644
--- a/recipes/tokendb_updater.py
+++ b/recipes/tokendb_updater.py
@@ -95,9 +95,10 @@
         )
 
     env = api.environment.init(checkout, props.environment_options)
+    build = api.build.create(checkout.root, props.build_options)
 
     with env():
-        api.build(checkout.root, props.build_options)
+        api.build(build)
 
     tokendb_path = tokendb_repo.join(*re.split(r'/+', props.tokendb_path))
 
diff --git a/recipes/update_python_versions.expected/simple.json b/recipes/update_python_versions.expected/simple.json
index 74aff94..427a455 100644
--- a/recipes/update_python_versions.expected/simple.json
+++ b/recipes/update_python_versions.expected/simple.json
@@ -1018,7 +1018,7 @@
       "gn",
       "gen",
       "--export-compile-commands",
-      "[START_DIR]/build"
+      "[START_DIR]/co/out"
     ],
     "cwd": "[START_DIR]/co",
     "env": {
@@ -1030,7 +1030,7 @@
     "cmd": [
       "gn",
       "args",
-      "[START_DIR]/build",
+      "[START_DIR]/co/out",
       "--list",
       "--json"
     ],
diff --git a/recipes/update_python_versions.py b/recipes/update_python_versions.py
index f92b403..0137e2d 100644
--- a/recipes/update_python_versions.py
+++ b/recipes/update_python_versions.py
@@ -40,13 +40,14 @@
     with env():
         constraint_file = props.path_to_constraint_file
         if not constraint_file:
-            api.build.gn_gen(checkout.root, props.build_options)
+            build = api.build.create(checkout.root, props.build_options)
+            api.build.gn_gen(build)
 
             # pw_build_PIP_CONSTRAINTS is a GN arg that points to a pip
             # constraint file. For more see
             # https://pigweed.googlesource.com/pigweed/pigweed/+/main/pw_build/python.gni
             gn_args = api.build.get_gn_args(
-                checkout_root=checkout.root,
+                build,
                 test_data=[
                     {
                         'name': 'pw_build_PIP_CONSTRAINTS',
diff --git a/recipes/xrefs.expected/dry_run.json b/recipes/xrefs.expected/dry_run.json
index 4196511..0c1e921 100644
--- a/recipes/xrefs.expected/dry_run.json
+++ b/recipes/xrefs.expected/dry_run.json
@@ -1018,7 +1018,7 @@
       "gn",
       "gen",
       "--export-compile-commands",
-      "[START_DIR]/build"
+      "[START_DIR]/co/out"
     ],
     "cwd": "[START_DIR]/co",
     "env": {
@@ -1062,9 +1062,9 @@
       "-extractor",
       "[START_DIR]/kythe/extractors/cxx_extractor",
       "-path",
-      "[START_DIR]/build/compile_commands.json"
+      "[START_DIR]/co/out/compile_commands.json"
     ],
-    "cwd": "[START_DIR]/build",
+    "cwd": "[START_DIR]/co/out",
     "env": {
       "KYTHE_CORPUS": "pigweed.googlesource.com/pigweed/pigweed",
       "KYTHE_OUTPUT_DIRECTORY": "[START_DIR]/kythe-output",
diff --git a/recipes/xrefs.expected/kythe.json b/recipes/xrefs.expected/kythe.json
index baf578b..d3cda06 100644
--- a/recipes/xrefs.expected/kythe.json
+++ b/recipes/xrefs.expected/kythe.json
@@ -1018,7 +1018,7 @@
       "gn",
       "gen",
       "--export-compile-commands",
-      "[START_DIR]/build"
+      "[START_DIR]/co/out"
     ],
     "cwd": "[START_DIR]/co",
     "env": {
@@ -1062,9 +1062,9 @@
       "-extractor",
       "[START_DIR]/kythe/extractors/cxx_extractor",
       "-path",
-      "[START_DIR]/build/compile_commands.json"
+      "[START_DIR]/co/out/compile_commands.json"
     ],
-    "cwd": "[START_DIR]/build",
+    "cwd": "[START_DIR]/co/out",
     "env": {
       "KYTHE_CORPUS": "pigweed.googlesource.com/pigweed/pigweed",
       "KYTHE_OUTPUT_DIRECTORY": "[START_DIR]/kythe-output",
diff --git a/recipes/xrefs.expected/tryjob.json b/recipes/xrefs.expected/tryjob.json
index 09c606e..2f3d742 100644
--- a/recipes/xrefs.expected/tryjob.json
+++ b/recipes/xrefs.expected/tryjob.json
@@ -1768,7 +1768,7 @@
       "gn",
       "gen",
       "--export-compile-commands",
-      "[START_DIR]/build"
+      "[START_DIR]/co/out"
     ],
     "cwd": "[START_DIR]/co",
     "env": {
@@ -1848,9 +1848,9 @@
       "-extractor",
       "[START_DIR]/kythe/extractors/cxx_extractor",
       "-path",
-      "[START_DIR]/build/compile_commands.json"
+      "[START_DIR]/co/out/compile_commands.json"
     ],
-    "cwd": "[START_DIR]/build",
+    "cwd": "[START_DIR]/co/out",
     "env": {
       "KYTHE_CORPUS": "pigweed.googlesource.com/pigweed/pigweed",
       "KYTHE_OUTPUT_DIRECTORY": "[START_DIR]/kythe-output",
diff --git a/recipes/xrefs.py b/recipes/xrefs.py
index b4e6f92..643a570 100644
--- a/recipes/xrefs.py
+++ b/recipes/xrefs.py
@@ -54,8 +54,10 @@
 
     api.kythe.kythe_libs_dir = api.kythe.kythe_dir
 
+    build = api.build.create(checkout.root, props.build_options)
+
     with env():
-        api.build.gn_gen(checkout.root, props.build_options)
+        api.build.gn_gen(build)
 
     assert checkout.options.branch in ('master', 'main')
     url = urllib.parse.urlparse(checkout.options.remote)
@@ -75,7 +77,7 @@
 
     api.kythe.extract_and_upload(
         checkout_dir=checkout.root,
-        build_dir=api.build.dir,
+        build_dir=build.root,
         corpus=corpus,
         gcs_bucket=gcs_bucket,
         gcs_filename=final_kzip_name,
