diff --git a/docs/developer/scripts/k3d-dev.sh b/docs/developer/scripts/k3d-dev.sh
index 328d39f3dac08dda2dd138bdbf0f41257d947723..0c12d3ae5af8ee3f2c4c1122f8d1f7c4da5de1a3 100755
--- a/docs/developer/scripts/k3d-dev.sh
+++ b/docs/developer/scripts/k3d-dev.sh
@@ -1,5 +1,29 @@
 #!/bin/bash
 
+#### Preflight Checks
+# check for tools
+tooldependencies=(jq sed aws ssh ssh-keygen scp kubectl)
+for tooldependency in "${tooldependencies[@]}"
+  do
+    command -v $tooldependency >/dev/null 2>&1 || { echo >&2 " $tooldependency is not installed.";  missingtool=1; }
+  done
+sed_gsed="sed"
+# verify sed version if mac
+uname="$(uname -s)"
+if [[ "${uname}" == "Darwin" ]]; then
+  if [[ $(command -v gsed) ]]; then
+    sed_gsed="gsed"
+  else
+    missingtool=1
+    echo ' gnu-sed is not installed. "brew install gnu-sed"'
+  fi
+fi
+# if tool missing, exit
+if [[ "${missingtool}" == 1 ]]; then
+  echo " Please install required tools. Aborting."
+  exit 1
+fi
+
 # getting AWs user name
 AWSUSERNAME=$( aws sts get-caller-identity --query Arn --output text | cut -f 2 -d '/' )
 
@@ -376,7 +400,7 @@ then
 	echo
 	echo "copy kubeconfig"
 	scp -i ~/.ssh/${KeyName}.pem -o StrictHostKeyChecking=no ubuntu@${PublicIP}:/home/ubuntu/.kube/config ~/.kube/${AWSUSERNAME}-dev-config
-	sed -i "s/0\.0\.0\.0/${PrivateIP}/g" ~/.kube/${AWSUSERNAME}-dev-config
+	$sed_gsed -i "s/0\.0\.0\.0/${PrivateIP}/g" ~/.kube/${AWSUSERNAME}-dev-config
 
 elif [[ "$PRIVATE_IP" == true ]]
 then
@@ -387,7 +411,7 @@ then
 	echo
 	echo "copy kubeconfig"
 	scp -i ~/.ssh/${KeyName}.pem -o StrictHostKeyChecking=no ubuntu@${PublicIP}:/home/ubuntu/.kube/config ~/.kube/${AWSUSERNAME}-dev-config
-	sed -i "s/0\.0\.0\.0/${PrivateIP}/g" ~/.kube/${AWSUSERNAME}-dev-config
+	$sed_gsed -i "s/0\.0\.0\.0/${PrivateIP}/g" ~/.kube/${AWSUSERNAME}-dev-config
 
 else # default is public ip
 	ssh -i ~/.ssh/${KeyName}.pem -o StrictHostKeyChecking=no ubuntu@${PublicIP} "k3d cluster create  --servers 1  --agents 3 --volume /etc/machine-id:/etc/machine-id  --k3s-server-arg "--disable=traefik"  --k3s-server-arg "--disable=metrics-server" --k3s-server-arg "--tls-san=${PublicIP}" --port 80:80@loadbalancer --port 443:443@loadbalancer --api-port 6443"
@@ -398,7 +422,7 @@ else # default is public ip
 	echo
 	echo "copy kubeconfig"
 	scp -i ~/.ssh/${KeyName}.pem -o StrictHostKeyChecking=no ubuntu@${PublicIP}:/home/ubuntu/.kube/config ~/.kube/${AWSUSERNAME}-dev-config
-	sed -i "s/0\.0\.0\.0/${PublicIP}/g" ~/.kube/${AWSUSERNAME}-dev-config
+	$sed_gsed -i "s/0\.0\.0\.0/${PublicIP}/g" ~/.kube/${AWSUSERNAME}-dev-config
 fi
 
 # add tools