diff --git a/cloneall.bash b/cloneall.bash
new file mode 100644
index 0000000000000000000000000000000000000000..f8cfecaa512b03fd509ff21a9cff9bd907bdc255
--- /dev/null
+++ b/cloneall.bash
@@ -0,0 +1,65 @@
+#!/bin/bash
+set -vex
+
+REPOS=(gitlab-profile core io integrate octree domain PM)
+SESSION_NAME=how
+
+while getopts "csapt" opt
+do
+   case "$opt" in
+      c ) clona=1 ;;
+      s ) tmuxa=1 ;;
+      a ) attaccha=1 ;;
+      p ) installa=1 ;;
+      t ) testa=1 ;;
+   esac
+done
+
+if [ -z "$clona" ] && [ -z "$tmuxa" ] && [ -z "$attaccha" ];then
+    echo 'usage: ./cloneall.bash -c (clone repos) -p (pip install) -t (python tests) -s (create screen tmux session) -a (attach to tmux)'
+    exit 1
+fi
+
+if [ ! -z "$clona" ]; then
+    [[ ! -d "venv" ]] && python3 -mvenv venv
+    . venv/bin/activate
+    pip install autopep8
+    pip install matplotlib
+    touch .env
+    
+    for REPO in "${REPOS[@]}"; do
+
+	[[ ! -d "$REPO" ]] && git clone ssh://git@git.ia2.inaf.it/hotwheels/$REPO.git
+        pushd $REPO
+        git switch dev || echo no dev branch
+	if [[ "$REPO" != "gitlab-profile" ]]; then
+	    [ ! -z "$installa" ] && python -mpip install -e .
+	    [ ! -z "$testa" ] && python -m hotwheels.checkup hotwheels/
+	fi
+        popd
+    done
+fi
+
+if [ ! -z "$tmuxa" ]; then
+    
+    if ! tmux has-session -t $SESSION_NAME ; then
+	# Create a new tmux session
+	tmux new-session -d -s $SESSION_NAME -c $PWD
+	
+	for index in "${!REPOS[@]}"; do
+            value="${REPOS[index]}"
+	    
+            # Initialize the environment in the first window
+            tmux send-keys -t $SESSION_NAME:$index ". .env" C-m
+            tmux send-keys -t $SESSION_NAME:$index ". venv/bin/activate" C-m
+            tmux send-keys -t $SESSION_NAME:$index "cd $PWD/$value" C-m
+            tmux new-window -t $SESSION_NAME -c $PWD
+	done
+    fi
+fi
+
+if [ ! -z "$attaccha" ]; then
+    tmux attach-session -t $SESSION_NAME
+fi
+
+echo done