diff --git a/inventory/service/host_vars/nb03.opendev.org.yaml b/inventory/service/host_vars/nb03.opendev.org.yaml
index d6658793af..4d46c29c62 100644
--- a/inventory/service/host_vars/nb03.opendev.org.yaml
+++ b/inventory/service/host_vars/nb03.opendev.org.yaml
@@ -1,4 +1,6 @@
 letsencrypt_certs:
   nb03-opendev-org-main:
     - nb03.opendev.org
-
+# This host only does ARM64 builds/uploads and is not super powerful.
+# Limit the uploads to happen one at a time.
+nodepool_builder_upload_workers: 1
diff --git a/playbooks/roles/nodepool-builder/README.rst b/playbooks/roles/nodepool-builder/README.rst
index 075a62e5bf..2d8651e1de 100644
--- a/playbooks/roles/nodepool-builder/README.rst
+++ b/playbooks/roles/nodepool-builder/README.rst
@@ -6,3 +6,8 @@ Deploy nodepool-builder container
    :default: unset
 
    Override tag for container deployment
+
+.. zuul:rolevar:: nodepool_builder_upload_workers
+   :default: 8
+
+   The number of upload workers
diff --git a/playbooks/roles/nodepool-builder/defaults/main.yaml b/playbooks/roles/nodepool-builder/defaults/main.yaml
index e69de29bb2..9c014a6a3f 100644
--- a/playbooks/roles/nodepool-builder/defaults/main.yaml
+++ b/playbooks/roles/nodepool-builder/defaults/main.yaml
@@ -0,0 +1 @@
+nodepool_builder_upload_workers: 8
diff --git a/playbooks/roles/nodepool-builder/templates/docker-compose.yaml.j2 b/playbooks/roles/nodepool-builder/templates/docker-compose.yaml.j2
index 5c02d9f609..0fa7f3c24e 100644
--- a/playbooks/roles/nodepool-builder/templates/docker-compose.yaml.j2
+++ b/playbooks/roles/nodepool-builder/templates/docker-compose.yaml.j2
@@ -6,7 +6,7 @@ services:
     network_mode: host
     restart: always
     stop_grace_period: 90s
-    command: nodepool-builder -f -c /etc/nodepool/nodepool.yaml -l /etc/nodepool/builder-logging.conf --upload-workers 8
+    command: nodepool-builder -f -c /etc/nodepool/nodepool.yaml -l /etc/nodepool/builder-logging.conf --upload-workers {{ nodepool_builder_upload_workers }}
 
     privileged: true