diff --git a/.gitlab-ci.yml b/.gitlab-ci.yml
index 10d41ac7bc2730597c0bfea7d67561fc7db29804..3a501c1dd3793df362e0f9df68c05f3afa3f7f76 100644
--- a/.gitlab-ci.yml
+++ b/.gitlab-ci.yml
@@ -78,6 +78,8 @@ aggregate-docs:
         CI_ONIRO_MANIFEST_BRANCH: "$CI_COMMIT_REF_NAME"
     - if: '$CI_COMMIT_TAG'
       # XXX: This needs CI_ONIRO_MANIFEST_BRANCH as well, most likely.
+    - if: '$CI_ONIRO_BB_LOCAL_CONF_TOOLCHAIN == "clang"'
+      allow_failure: true
 
 
 # The three jobs defined below override the definitions from build-generic.yaml
diff --git a/.oniro-ci/build-generic.yaml b/.oniro-ci/build-generic.yaml
index 67abc4ad1cf53831e130d9b753b15cbc8b932e16..e5547d12a334bf8d48350069a40d513fa197dd04 100644
--- a/.oniro-ci/build-generic.yaml
+++ b/.oniro-ci/build-generic.yaml
@@ -214,13 +214,25 @@
         time bitbake "$target"
         du -sh tmp
       done
+  parallel:
+    matrix:
+      - CI_ONIRO_BB_LOCAL_CONF_TOOLCHAIN: "clang"
+        CI_ONIRO_BB_LOCAL_CONF_RUNTIME: "llvm"
+      - CI_ONIRO_BB_LOCAL_CONF_TOOLCHAIN: "gcc"
+        CI_ONIRO_BB_LOCAL_CONF_RUNTIME: "gnu"
 
 # This job is documented in docs/ci/hidden-jobs/build-linux-marix.rst
 .build-linux-matrix:
   extends: .build-linux
   parallel:
     matrix:
-      - CI_ONIRO_BITBAKE_TARGETS: ["oniro-image-base-tests", "oniro-image-extra-tests"]
+      - CI_ONIRO_BB_LOCAL_CONF_TOOLCHAIN: "clang"
+        CI_ONIRO_BB_LOCAL_CONF_RUNTIME: "llvm"
+        CI_ONIRO_BITBAKE_TARGETS: ["oniro-image-base-tests", "oniro-image-extra-tests"]
+      - CI_ONIRO_BB_LOCAL_CONF_TOOLCHAIN: "gcc"
+        CI_ONIRO_BB_LOCAL_CONF_RUNTIME: "gnu"
+        CI_ONIRO_BITBAKE_TARGETS: ["oniro-image-base-tests", "oniro-image-extra-tests"]
+
 
 # This job is documented in docs/ci/hidden-jobs/build-zephyr.rst
 .build-zephyr:
@@ -238,7 +250,16 @@
       for target in $CI_ONIRO_BITBAKE_TARGETS; do
         time bitbake "$target"
       done
-
+  parallel:
+    matrix:
+      - CI_ONIRO_BB_LOCAL_CONF_TOOLCHAIN: "clang"
+        CI_ONIRO_BB_LOCAL_CONF_RUNTIME: "llvm"
+      - CI_ONIRO_BB_LOCAL_CONF_TOOLCHAIN: "gcc"
+        CI_ONIRO_BB_LOCAL_CONF_RUNTIME: "gnu"
+  rules:
+    - if: '$CI_ONIRO_BB_LOCAL_CONF_TOOLCHAIN == "clang"'
+      when: manual
+      
 # This job is documented in docs/ci/hidden-jobs/build-freertos.rst
 .build-freertos:
   extends: .bitbake-workspace
@@ -249,6 +270,15 @@
   script:
     - !reference [.bitbake-workspace, script]
     - time bitbake freertos-demo
+  rules:
+    - if: '$CI_ONIRO_BB_LOCAL_CONF_TOOLCHAIN == "clang"'
+      when: manual
+  parallel:
+    matrix:
+      - CI_ONIRO_BB_LOCAL_CONF_TOOLCHAIN: "clang"
+        CI_ONIRO_BB_LOCAL_CONF_RUNTIME: "llvm"
+      - CI_ONIRO_BB_LOCAL_CONF_TOOLCHAIN: "gcc"
+        CI_ONIRO_BB_LOCAL_CONF_RUNTIME: "gnu"
 
 # This job is documented in docs/ci/hidden-jobs/build-recipe.rst
 .build-recipe:
@@ -295,6 +325,12 @@
   artifacts:
     paths:
       - artifacts/
+  parallel:
+    matrix:
+      - CI_ONIRO_BB_LOCAL_CONF_TOOLCHAIN: "clang"
+        CI_ONIRO_BB_LOCAL_CONF_RUNTIME: "llvm"
+      - CI_ONIRO_BB_LOCAL_CONF_TOOLCHAIN: "gcc"
+        CI_ONIRO_BB_LOCAL_CONF_RUNTIME: "gnu"
 
 .build-wic-image:
   extends: .build-image
@@ -302,6 +338,12 @@
     CI_ONIRO_JOB_ARTIFACTS: "*.wic.* *.bmap"
   script:
     - !reference [.build-image, script]
+  parallel:
+    matrix:
+      - CI_ONIRO_BB_LOCAL_CONF_TOOLCHAIN: "clang"
+        CI_ONIRO_BB_LOCAL_CONF_RUNTIME: "llvm"
+      - CI_ONIRO_BB_LOCAL_CONF_TOOLCHAIN: "gcc"
+        CI_ONIRO_BB_LOCAL_CONF_RUNTIME: "gnu"
 
 .build-rauc-bundle:
   extends: .build-image