diff --git a/.gitlab-ci.yml b/.gitlab-ci.yml
index b0f3b697cb3391a9ed5e3ca6f291ad80755f8c24..3350986f6819635fe18fe2b847c655a334f4004a 100644
--- a/.gitlab-ci.yml
+++ b/.gitlab-ci.yml
@@ -3,6 +3,7 @@ stages:
   - test
   - pack
   - docker
+  - stress-test
 
 workflow:
   # See https://docs.gitlab.com/ee/ci/jobs/job_control.html#avoid-duplicate-pipelines
@@ -428,3 +429,33 @@ deploy-docker:
         docker --config $CI_PROJECT_DIR/.docker push ${REGISTRY}/${image}:${BASE_IMAGE_LATEST}
         ci-log-section end "deploy-docker-${image}"
       done
+
+# Stages of independent stress testing in downstream pipeline
+
+# We cannot move artefacts to the downstream pipeline, so we need to build and upload them to our repo
+upload-picodata-to-binary:
+  stage: stress-test
+  tags:
+    - picodata-docker
+  image:
+    name: ${BASE_IMAGE}:${BASE_IMAGE_LATEST}
+  variables:
+    VER: $CI_COMMIT_SHORT_SHA
+    GIT_DEPTH: 100
+    GIT_SUBMODULE_STRATEGY: recursive
+  script:
+    - cargo build --locked --release --features webui
+    - mv target/release/picodata target/release/picodata-$VER
+    - curl -v --upload-file target/release/picodata-$VER $RAW_NT_REGISTRY
+
+downstream-stress-test:
+# See https://docs.gitlab.com/ee/ci/pipelines/downstream_pipelines.html
+  stage: stress-test
+  trigger:
+    project: picodata/devops/proxmox/sbroad-nt
+    branch: main
+    strategy: depend
+  variables:
+    VER: $CI_COMMIT_SHORT_SHA
+  needs:
+    - job: upload-picodata-to-binary