diff --git a/.devcontainer/control/Dockerfile b/.devcontainer/control/Dockerfile
index aad8418b1094ac5aa7df4a689c2fb082b6a9624b..77178b62c8b1bb1f2dbb18ea42679a1b44ece48d 100644
--- a/.devcontainer/control/Dockerfile
+++ b/.devcontainer/control/Dockerfile
@@ -57,7 +57,7 @@ RUN bash install_dependency.sh stack-of-tasks/eigenpy/v3.10.0/1 \
     && bash install_dependency.sh humanoid-path-planner/hpp-environments/v6.0.0/1 \
     && bash install_dependency.sh humanoid-path-planner/hpp-pinocchio/v6.0.0/1 \
     && bash install_dependency.sh humanoid-path-planner/hpp-constraints/v6.0.0/1 \
-    # For some reason without `sudo` proxsuite doesn't find nanobind
+    # For some reason without `sudo` ProxSuite doesn't find nanobind
     && sudo bash install_dependency.sh Simple-Robotics/proxsuite/devel/1 \
     && bash install_dependency.sh humanoid-path-planner/hpp-core/v6.0.0/1 \
     && bash install_dependency.sh humanoid-path-planner/hpp-corbaserver/v6.0.0/1 \
@@ -73,7 +73,8 @@ RUN bash install_dependency.sh stack-of-tasks/eigenpy/v3.10.0/1 \
     # Remove folders with meshes and binary data to reduce image size
     && rm -rf example-robot-data \
     && rm -rf pinocchio/models \
-    && rm -rf proxsuite/test/data
+    # ProxSuite files require `sudo` to be removed
+    && sudo rm -rf proxsuite/test/data
 
 ENV PATH=/usr/local/bin:${PATH}
 ENV LD_LIBRARY_PATH=/usr/local/lib:${LD_LIBRARY_PATH}
diff --git a/.devcontainer/control/devcontainer.json b/.devcontainer/control/devcontainer.json
index fa0b5aa33aa1f0f87a08d145b03b05cdf887ddbf..e63a76959455534ba24fe0df2a28f7c1607f6f07 100644
--- a/.devcontainer/control/devcontainer.json
+++ b/.devcontainer/control/devcontainer.json
@@ -30,7 +30,7 @@
             "target": "/home/gepetto/ros2_ws/setup.sh",
             "type": "bind"
         },
-        // Enable sceen acess
+        // Enable screen access
         {
             "source": "/tmp/.X11-unix",
             "target": "/tmp/.X11-unix",
diff --git a/.devcontainer/vision/devcontainer.json b/.devcontainer/vision/devcontainer.json
index 4fe58ac484650a8440353ee7fe163bbfd982ba54..9b07f4e946e68448aff7388d12d0d41b38dc2f32 100644
--- a/.devcontainer/vision/devcontainer.json
+++ b/.devcontainer/vision/devcontainer.json
@@ -30,7 +30,7 @@
             "target": "/home/gepetto/ros2_ws/setup.sh",
             "type": "bind"
         },
-        // Enable sceen acess
+        // Enable screen access
         {
             "source": "/tmp/.X11-unix",
             "target": "/tmp/.X11-unix",
diff --git a/.devcontainer/vision_cuda/devcontainer.json b/.devcontainer/vision_cuda/devcontainer.json
new file mode 100644
index 0000000000000000000000000000000000000000..c9b29e491a941806138f7232ca1bf31d25ba3628
--- /dev/null
+++ b/.devcontainer/vision_cuda/devcontainer.json
@@ -0,0 +1,89 @@
+{
+    "name": "gepetto-devcontainer",
+    // Uncomment ``build`` and comment out ``image`` to build from source
+    // "build": {
+    //     "dockerfile": "Dockerfile",
+    //     "context": "."
+    // },
+    "image": "gitlab.laas.fr:4567/agimus-project/agimus_dev_container:humble-devel-vision-cuda",
+    "initializeCommand": "xhost +local:docker",
+    "containerEnv": {
+        "DISPLAY": "${localEnv:DISPLAY}",
+        "QT_X11_NO_MITSHM": "1",
+        // NVIDIA related ENV variables make no difference
+        // in case no discrete GPU is present in the system
+        "NVIDIA_DRIVER_CAPABILITIES": "all",
+        "__NV_PRIME_RENDER_OFFLOAD": "1",
+        "__GLX_VENDOR_LIBRARY_NAME": "nvidia"
+    },
+    "remoteUser": "gepetto",
+    "privileged": true,
+    "mounts": [
+        // Mount the workspace
+        {
+            "source": "${localWorkspaceFolder}/.devcontainer/scripts/build.sh",
+            "target": "/home/gepetto/ros2_ws/build.sh",
+            "type": "bind"
+        },
+        {
+            "source": "${localWorkspaceFolder}/.devcontainer/scripts/setup.sh",
+            "target": "/home/gepetto/ros2_ws/setup.sh",
+            "type": "bind"
+        },
+        // Enable screen access
+        {
+            "source": "/tmp/.X11-unix",
+            "target": "/tmp/.X11-unix",
+            "type": "bind"
+        },
+        {
+            "source": "/dev/dri",
+            "target": "/dev/dri",
+            "type": "bind"
+        },
+        // Presist bash history
+        {
+            "source": "${localWorkspaceFolderBasename}-bashhistory",
+            "target": "/commandhistory",
+            "type": "volume"
+        }
+
+    ],
+    "workspaceFolder": "/home/gepetto/ros2_ws/src",
+    "workspaceMount": "source=${localWorkspaceFolder},target=/home/gepetto/ros2_ws/src,type=bind,consistency=cached",
+    "runArgs": [
+        "--ipc=host",
+        "--net=host"
+    ],
+    "hostRequirements": {
+        "gpu": true
+    },
+    "customizations": {
+        "vscode": {
+            "settings": {
+                "terminal.integrated.profiles.linux": {
+                    "bash": {
+                        "path": "bash"
+                    }
+                },
+                "terminal.integrated.defaultProfile.linux": "bash"
+            },
+            "extensions": [
+                "ms-vscode.cpptools-extension-pack",
+                "ms-python.python",
+                "ms-python.black-formatter",
+                "ms-python.isort",
+                "ms-toolsai.jupyter",
+                "ms-iot.vscode-ros",
+                "redhat.vscode-yaml",
+                "redhat.vscode-xml",
+                "twxs.cmake",
+                "ajshort.msg",
+                "xaver.clang-format",
+                "njpwerner.autodocstring",
+                "cschlosser.doxdocgen",
+                "streetsidesoftware.code-spell-checker"
+            ]
+        }
+    }
+}