diff --git a/infra/bots/bazel.py b/infra/bots/bazel.py
new file mode 100644
index 0000000..420220c
--- /dev/null
+++ b/infra/bots/bazel.py
@@ -0,0 +1,66 @@
+#!/usr/bin/env python3
+#
+# Copyright 2021 Google Inc.
+#
+# Use of this source code is governed by a BSD-style license that can be
+# found in the LICENSE file.
+
+import os
+import subprocess
+import sys
+import tempfile
+
+
+def call(cmd):
+  print("Executing: " + " ".join(cmd))
+  subprocess.check_call(cmd)
+
+
+def main():
+  build_or_test = sys.argv[1]
+  assert build_or_test in ["build", "test"]
+
+  local_or_rbe = sys.argv[2]
+  assert local_or_rbe in ["local", "rbe"]
+
+  print("Hello from {platform} in {cwd}!".format(platform=sys.platform,
+                                                 cwd=os.getcwd()))
+
+  # Create a temporary directory for the Bazel cache.
+  #
+  # We cannot use the default Bazel cache location ($HOME/.cache/bazel) because:
+  #
+  #  - The cache can be large (>10G).
+  #  - Swarming bots have limited storage space on the root partition (15G).
+  #  - Because the above, the Bazel build fails with a "no space left on
+  #    device" error.
+  #  - The Bazel cache under $HOME/.cache/bazel lingers after the tryjob
+  #    completes, causing the Swarming bot to be quarantined due to low disk
+  #    space.
+  #  - Generally, it's considered poor hygiene to leave a bot in a different
+  #    state.
+  #
+  # The temporary directory created by the below function call lives under
+  # /mnt/pd0, which has significantly more storage space, and will be wiped
+  # after the tryjob completes.
+  #
+  # Reference: https://docs.bazel.build/versions/master/output_directories.html#current-layout.
+  with tempfile.TemporaryDirectory(prefix="bazel-cache-",
+                                   dir=os.environ["TMPDIR"]) as cache_dir:
+    def bazel(args):
+      cmd = ["bazel", "--output_user_root=" + cache_dir] + args
+      call(cmd)
+
+    # Print the Bazel version.
+    bazel(["version"])
+
+    # Run the requested Bazel command.
+    os.chdir("skcms")
+    cmd = [build_or_test, "//..."]
+    if local_or_rbe == "rbe":
+      cmd += ["--config=linux-rbe", "--google_default_credentials"]
+    bazel(cmd)
+
+
+if __name__ == "__main__":
+  main()
diff --git a/infra/bots/tasks.json b/infra/bots/tasks.json
index a936cf3..4165f68 100644
--- a/infra/bots/tasks.json
+++ b/infra/bots/tasks.json
@@ -11,7 +11,13 @@
   },
   "jobs": {
     "skcms": {
-      "tasks": ["skcms-Linux", "skcms-Mac", "skcms-Win"]
+      "tasks": [
+        "skcms-Linux",
+        "skcms-Mac",
+        "skcms-Win",
+        "skcms-Linux-Bazel-Build-RBE",
+        "skcms-Linux-Bazel-Test-RBE"
+      ]
     },
     "skcms-Linux": {
       "tasks": ["skcms-Linux"]
@@ -21,6 +27,12 @@
     },
     "skcms-Win": {
       "tasks": ["skcms-Win"]
+    },
+    "skcms-Linux-Bazel-Build-RBE": {
+      "tasks": ["skcms-Linux-Bazel-Build-RBE"]
+    },
+    "skcms-Linux-Bazel-Test-RBE": {
+      "tasks": ["skcms-Linux-Bazel-Test-RBE"]
     }
   },
   "tasks": {
@@ -140,6 +152,100 @@
       "dimensions": ["os:Windows-Server-17763", "gpu:none", "pool:Skia"],
       "max_attempts": 1,
       "service_account": "skia-external-compile-tasks@skia-swarming-bots.iam.gserviceaccount.com"
+    },
+    "skcms-Linux-Bazel-Build-RBE": {
+      "caches": [
+        {
+          "name": "vpython",
+          "path": "cache/vpython"
+        }
+      ],
+      "casSpec": "whole-repo",
+      "cipd_packages": [
+        {
+          "name": "infra/3pp/tools/cpython3/linux-amd64",
+          "path": "cipd_bin_packages/cpython3",
+          "version": "version:2@3.8.10.chromium.19"
+        },
+        {
+          "name": "skia/bots/bazel",
+          "path": "bazel",
+          "version": "version:3"
+        }
+      ],
+      "command": [
+        "cipd_bin_packages/cpython3/bin/python3",
+        "skcms/infra/bots/bazel.py",
+        "build",
+        "rbe"
+      ],
+      "dimensions": [
+        "pool:Skia",
+        "os:Debian-10.3",
+        "gpu:none",
+        "cpu:x86-64-Haswell_GCE",
+        "machine_type:n1-highcpu-64",
+        "docker_installed:true"
+      ],
+      "env_prefixes": {
+        "PATH": [
+          "cipd_bin_packages/cpython3",
+          "cipd_bin_packages/cpython3/bin",
+          "bazel/bin"
+        ],
+        "VPYTHON_VIRTUALENV_ROOT": [
+          "cache/vpython"
+        ]
+      },
+      "max_attempts": 1,
+      "service_account": "skia-external-compile-tasks@skia-swarming-bots.iam.gserviceaccount.com"
+    },
+    "skcms-Linux-Bazel-Test-RBE": {
+      "caches": [
+        {
+          "name": "vpython",
+          "path": "cache/vpython"
+        }
+      ],
+      "casSpec": "whole-repo",
+      "cipd_packages": [
+        {
+          "name": "infra/3pp/tools/cpython3/linux-amd64",
+          "path": "cipd_bin_packages/cpython3",
+          "version": "version:2@3.8.10.chromium.19"
+        },
+        {
+          "name": "skia/bots/bazel",
+          "path": "bazel",
+          "version": "version:3"
+        }
+      ],
+      "command": [
+        "cipd_bin_packages/cpython3/bin/python3",
+        "skcms/infra/bots/bazel.py",
+        "test",
+        "rbe"
+      ],
+      "dimensions": [
+        "pool:Skia",
+        "os:Debian-10.3",
+        "gpu:none",
+        "cpu:x86-64-Haswell_GCE",
+        "machine_type:n1-highcpu-64",
+        "docker_installed:true"
+      ],
+      "env_prefixes": {
+        "PATH": [
+          "cipd_bin_packages/cpython3",
+          "cipd_bin_packages/cpython3/bin",
+          "bazel/bin"
+        ],
+        "VPYTHON_VIRTUALENV_ROOT": [
+          "cache/vpython"
+        ]
+      },
+      "max_attempts": 1,
+      "service_account": "skia-external-compile-tasks@skia-swarming-bots.iam.gserviceaccount.com"
     }
   }
 }
