diff --git a/deploy_mock/build.sh b/deploy_mock/build.sh
new file mode 100644
index 0000000000000000000000000000000000000000..f36fc7c859d22a776f6d81d2b7ec3abbfeea2e11
--- /dev/null
+++ b/deploy_mock/build.sh
@@ -0,0 +1,11 @@
+#!/bin/bash
+
+# Create .env file
+echo "NBCLIENTS=$1" | cat > scripts/.env
+
+# create a folders with data and script
+python scripts/setup.py --clients $1
+
+
+
+
diff --git a/deploy_mock/scripts/setup.py b/deploy_mock/scripts/setup.py
new file mode 100644
index 0000000000000000000000000000000000000000..16b1501c68dd85fc5bfa6a35df2e7cf51345db15
--- /dev/null
+++ b/deploy_mock/scripts/setup.py
@@ -0,0 +1,61 @@
+"""Python script to generate experiment folders"""
+
+import csv
+import os
+import shutil
+from pathlib import Path
+from typing import Optional
+
+import fire
+
+FILEDIR = os.path.dirname(__file__)
+
+
+def generate_folders(clients: int):
+
+    """Generate the server folder and the appropriate number of client folders,
+    with appropriate scripts and simulated, unique data"""
+
+    # Clear existing files
+    dest_dir = os.path.join(Path(FILEDIR).resolve().parents[0], "nodes")
+    shutil.rmtree(dest_dir, ignore_errors=True)
+
+    # Get grpc directory
+    grpc_dir = os.path.join(Path(FILEDIR).resolve().parents[0], "comms")
+
+    # create server folder
+    write_dir(dest_dir, grpc_dir, "server", dotenv=True)
+
+    # create client folders
+    for clt in range(clients):
+        clt_dir = write_dir(dest_dir, grpc_dir, "client", clt)
+        file_path = os.path.join(clt_dir, "data.csv")
+        with open(file_path, "w", encoding="UTF8") as f:
+            writer = csv.writer(f)
+            writer.writerow([0, 1])
+            writer.writerow([clt / 2, clt / 2])
+
+
+def write_dir(
+    dest_dir: str,
+    grpc_dir: str,
+    dir_type: str,
+    client_nb: Optional[int] = None,
+    dotenv: bool = False,
+) -> str:
+
+    opj = os.path.join  # local alias to shorten code
+    name = f"{dir_type}_{client_nb}" if client_nb is not None else dir_type
+    out_dir = opj(dest_dir, name)
+    os.makedirs(out_dir, exist_ok=True)
+    shutil.copyfile(opj(FILEDIR, f"{dir_type}.py"), opj(out_dir, "run.py"))
+    shutil.copyfile(opj(FILEDIR, f"{dir_type}.sh"), opj(out_dir, "run.sh"))
+    shutil.copytree(grpc_dir, opj(out_dir, "comms"))
+    if dotenv:
+        shutil.copyfile(opj(FILEDIR, ".env"), opj(out_dir, ".env"))
+
+    return out_dir
+
+
+if __name__ == "__main__":
+    fire.Fire(generate_folders)