diff --git a/.gitlab-ci.yml b/.gitlab-ci.yml
index d0396a27478175a6353b288037de0588631e38e8..2d268f8b3b7c9b3949c24bb3bd4c6d1e8f65ca58 100644
--- a/.gitlab-ci.yml
+++ b/.gitlab-ci.yml
@@ -28,6 +28,7 @@ include:
   - local: 'ecal/ecal_config.yml'
   - local: 'tracking/tracking_config.yml'
   - local: 'clustering/clustering_config.yml'
+    #  - local: 'rich/rich_config.yml'
 
 
 final_report:
diff --git a/rich/forward_hadrons.sh b/rich/forward_hadrons.sh
new file mode 100644
index 0000000000000000000000000000000000000000..b78033f4598963d5b9d518afb0f8e203894a830f
--- /dev/null
+++ b/rich/forward_hadrons.sh
@@ -0,0 +1,58 @@
+#!/bin/bash
+
+if [[ ! -n  "${JUGGLER_DETECTOR}" ]] ; then 
+  export JUGGLER_DETECTOR="topside"
+fi
+
+if [[ ! -n  "${JUGGLER_N_EVENTS}" ]] ; then 
+  export JUGGLER_N_EVENTS=100
+fi
+
+if [[ ! -n  "${JUGGLER_INSTALL_PREFIX}" ]] ; then 
+  export JUGGLER_INSTALL_PREFIX="/usr/local"
+fi
+
+export JUGGLER_FILE_NAME_TAG="forward_hadrons"
+export JUGGLER_GEN_FILE="${JUGGLER_FILE_NAME_TAG}.hepmc"
+
+export JUGGLER_SIM_FILE="sim_${JUGGLER_FILE_NAME_TAG}.root"
+export JUGGLER_REC_FILE="rec_${JUGGLER_FILE_NAME_TAG}.root"
+
+echo "JUGGLER_N_EVENTS = ${JUGGLER_N_EVENTS}"
+echo "JUGGLER_DETECTOR = ${JUGGLER_DETECTOR}"
+
+
+## Build the detector constructors.
+git clone https://eicweb.phy.anl.gov/EIC/detectors/${JUGGLER_DETECTOR}.git
+mkdir ${JUGGLER_DETECTOR}/build
+pushd ${JUGGLER_DETECTOR}/build
+cmake ../. -DCMAKE_INSTALL_PREFIX=/usr/local && make -j30 install
+popd
+#
+## generate the input events
+## note datasets is now only used to develop datasets.
+##git clone https://eicweb.phy.anl.gov/EIC/datasets.git datasets
+root -b -q "rich/scripts/gen_forward_hadrons.cxx(${JUGGLER_N_EVENTS}, \"${JUGGLER_FILE_NAME_TAG}.hepmc\")"
+#
+pushd ${JUGGLER_DETECTOR}
+#ls -l
+## run geant4 simulations
+npsim --runType batch \
+      --part.minimalKineticEnergy 1000*GeV  \
+      -v WARNING \
+      --numberOfEvents ${JUGGLER_N_EVENTS} \
+      --compactFile ${JUGGLER_DETECTOR}.xml \
+      --inputFiles ../${JUGGLER_FILE_NAME_TAG}.hepmc \
+      --outputFile  ${JUGGLER_SIM_FILE}
+
+# Need to figure out how to pass file name to juggler from the commandline
+xenv -x ${JUGGLER_INSTALL_PREFIX}/Juggler.xenv gaudirun.py ../rich/options/rich_reconstruction.py
+ls -l
+popd
+
+pwd
+mkdir -p results
+
+# run analysis scripts
+
+
diff --git a/rich/options/rich_reconstruction.py b/rich/options/rich_reconstruction.py
new file mode 100644
index 0000000000000000000000000000000000000000..e69de29bb2d1d6434b8b29ae775ad8c2e48c5391
diff --git a/rich/rich_config.yml b/rich/rich_config.yml
new file mode 100644
index 0000000000000000000000000000000000000000..7120956942c3e3066cc1a032f3f6cf0f43bc1b40
--- /dev/null
+++ b/rich/rich_config.yml
@@ -0,0 +1,14 @@
+rich_job_x:
+  image: eicweb.phy.anl.gov:4567/eic/juggler/juggler:latest
+  tags:
+    - silicon
+  needs: ["get_data"]
+  timeout: 24 hours
+  artifacts:
+    expire_in: 20 weeks
+    paths:
+      - results/
+  stage: run
+  script:
+    - bash rich/rich_test.sh
+
diff --git a/rich/scripts/gen_forward_hadrons.cxx b/rich/scripts/gen_forward_hadrons.cxx
new file mode 100644
index 0000000000000000000000000000000000000000..e69de29bb2d1d6434b8b29ae775ad8c2e48c5391