diff --git a/dawn-cli/staging b/dawn-cli/staging
index e0a9a3969ef7cac7323a53d4e6b07f42a91749bf..c262054d856d04aa3a79e82f097616eb0abbe822 100644
--- a/dawn-cli/staging
+++ b/dawn-cli/staging
@@ -44,6 +44,7 @@ pipeline {
         steps {
             sh '''
                 docker build -t dawn/dawn-cli .
+                docker build -t dawn/dawn-ngrok -f Dockerfile.ngrok
             '''
         }
     }
diff --git a/dawn-client/dev-env b/dawn-client/dev-env
new file mode 100644
index 0000000000000000000000000000000000000000..3804347a7f928bd425a0da177ee04dc5bea02c6e
--- /dev/null
+++ b/dawn-client/dev-env
@@ -0,0 +1,46 @@
+pipeline {
+  agent any
+  tools {
+        go 'go-1.16'
+  }
+  options {
+    buildDiscarder logRotator(artifactDaysToKeepStr: '', artifactNumToKeepStr: '5', daysToKeepStr: '', numToKeepStr: '5')
+  }
+  stages {
+      
+  stage('checkout') {
+        steps {
+            git branch: "main",
+                credentialsId: 'tucker-gitlab-login',
+                url: "https://gitlab.cs.umd.edu/dawn/dawn-client.git"
+        }
+    }
+     
+    stage('build') {
+      steps {
+        sh """
+            dawn-cli build-image -p .
+        """ 
+      }
+    }
+
+    stage('update backend services') {
+      steps {
+        sh '''
+            curl -o docker-compose-dev.yml --header "PRIVATE-TOKEN: y2FHtFXMC8X13onnEfiE" "https://gitlab.cs.umd.edu/api/v4/projects/16574/repository/files/docker-compose-dev.yml/raw?ref=main"
+            curl -o shared-compose.yml --header "PRIVATE-TOKEN: y2FHtFXMC8X13onnEfiE" "https://gitlab.cs.umd.edu/api/v4/projects/16574/repository/files/shread-compose.yml/raw?ref=main"
+            curl -o prometheus.yml --header "PRIVATE-TOKEN: y2FHtFXMC8X13onnEfiE" "https://gitlab.cs.umd.edu/api/v4/projects/16574/repository/files/prometheus.yml/raw?ref=main"
+            curl -o prometheus.rules.yml --header "PRIVATE-TOKEN: y2FHtFXMC8X13onnEfiE" "https://gitlab.cs.umd.edu/api/v4/projects/16574/repository/files/prometheus.rules.yml/raw?ref=main"
+            curl -o rabbitmq.conf --header "PRIVATE-TOKEN: y2FHtFXMC8X13onnEfiE" "https://gitlab.cs.umd.edu/api/v4/projects/16574/repository/files/rabbitmq.conf/raw?ref=main"
+            
+            mkdir elk_config || true
+            curl -o logstash-compose.yml --header "PRIVATE-TOKEN: y2FHtFXMC8X13onnEfiE" "https://gitlab.cs.umd.edu/api/v4/projects/16574/repository/files/logstash-compose.conf/raw?ref=main"
+            curl -o elk_config/elasticsearch.yml --header "PRIVATE-TOKEN: y2FHtFXMC8X13onnEfiE" "https://gitlab.cs.umd.edu/api/v4/projects/16574/repository/files/elk_config%2Felasticsearch.yml/raw?ref=main"
+            curl -o elk_config/filebeat.yml --header "PRIVATE-TOKEN: y2FHtFXMC8X13onnEfiE" "https://gitlab.cs.umd.edu/api/v4/projects/16574/repository/files/elk_config%2Ffilebeat.yml/raw?ref=main"
+        '''
+        sh "dawn-cli update -s dawn-client"
+      }
+    }
+
+  }
+}