diff --git a/configure.py b/configure.py
index 9ba1bbf..faed0c1 100755
--- a/configure.py
+++ b/configure.py
@@ -1,6 +1,7 @@
 #!/usr/bin/env python3
 import re, glob, json
 import yaml
+import subprocess
 import argparse, logging, shutil, sys, os, collections
 from git_utils import install_artifacts
 import git
@@ -47,6 +48,9 @@
         filler = False
         filler_id = 0
         for index in range(args.limit_num_projects):
+            if args.single and args.single != index:
+                continue
+
             try:
                 git_url = self.project_urls[index]
             except IndexError:
@@ -68,6 +72,9 @@
             # fill projects will load from the fill project's directory
             project.load_yaml()
 
+            if args.harden:
+                project.harden()
+
             if args.update_caravel:
                 logging.debug("copying files to caravel")
                 if filler is False:
@@ -238,6 +245,15 @@
         # do a pull
         pass
 
+    def harden(self):
+        cwd = os.getcwd()
+        os.chdir(self.local_dir)
+        # requires PDK_ROOT, OPENLANE_ROOT & OPENLANE_IMAGE_NAME to be set in local environment
+        harden_cmd = 'docker run --rm -v $OPENLANE_ROOT:/openlane -v $PDK_ROOT:$PDK_ROOT -v $(pwd):/work -e PDK_ROOT=$PDK_ROOT -u $(id -u $USER):$(id -g $USER) $OPENLANE_IMAGE_NAME /bin/bash -c "./flow.tcl -overwrite -design /work/src -run_path /work/runs -tag wokwi"'
+        env = os.environ.copy()
+        subprocess.run(harden_cmd, shell=True, env=env)
+        os.chdir(cwd)
+
     def __str__(self):
         return f"[{self.index:03} : {self.git_url}]"
 
@@ -646,7 +662,9 @@
 
     parser.add_argument('--list', help="list projects", action='store_const', const=True)
     parser.add_argument('--clone-all', help="clone all projects", action="store_const", const=True)
+    parser.add_argument('--single', help="do action on single project", type=int)
     parser.add_argument('--update-caravel', help='configure caravel for build', action='store_const', const=True)
+    parser.add_argument('--harden', help="harden project", action="store_const", const=True)
     parser.add_argument('--limit-num-projects', help='only configure for the first n projects', type=int, default=DEFAULT_NUM_PROJECTS)
     parser.add_argument('--test', help='use test projects', action='store_const', const=True)
     parser.add_argument('--debug', help="debug logging", action="store_const", dest="loglevel", const=logging.DEBUG, default=logging.INFO)
