diff --git a/README.md b/README.md
index 11312b083f7c2f178d5320d52413a3485f573e62..d73460e0853a6cb5e6a3087488670409d93f9d1c 100644
--- a/README.md
+++ b/README.md
@@ -25,9 +25,20 @@ This is a collection of customized Jupyter images to be used in the JupyterHub r
   - Added Notebook git Puller ([nbgitpuller](https://hub.jupyter.org/nbgitpuller))
   - Provide default home directory contents including VS Code Extensions and settings in `/etc/skel/`. Can be copied on first startup using [post start hook](https://z2jh.jupyter.org/en/stable/jupyterhub/customizing/user-environment.html#about-user-storage-and-adding-files-to-it).
 
+## keras3-cpu
+
+- Based on: `jupyter/tensorflow-notebook:latest` ([quay.io](https://quay.io/repository/jupyter/tensorflow-notebook), [src](https://github.com/jupyter/docker-stacks/tree/main/images/tensorflow-notebook), [doc](https://jupyter-docker-stacks.readthedocs.io/en/latest/using/selecting.html#jupyter-tensorflow-notebook))
+- Available as: [`christofkaufmann/keras3-cpu-notebook:latest`](https://hub.docker.com/repository/docker/christofkaufmann/keras3-cpu-notebook)
+- Features:
+  - Jupyter enabled
+  - Contains Keras3 with tensorflow as backend
+  - Added VS Code via code-server as web UI and via VS Code CLI for tunnels
+  - Added Notebook git Puller ([nbgitpuller](https://hub.jupyter.org/nbgitpuller))
+  - Provide default home directory contents including VS Code Extensions and settings in `/etc/skel/`. Can be copied on first startup using [post start hook](https://z2jh.jupyter.org/en/stable/jupyterhub/customizing/user-environment.html#about-user-storage-and-adding-files-to-it).
+
 ## keras3-gpu
 
-- Based on: `jupyter/tensorflow-notebook:cuda-latest` ([quay.io](https://quay.io/repository/jupyter/tensorflow-notebook), [src](https://github.com/jupyter/docker-stacks/tree/main/images/tensorflow-notebook/cuda), [doc](https://jupyter-docker-stacks.readthedocs.io/en/latest/using/selecting.html#cuda-enabled-variant))
+- Based on: `jupyter/tensorflow-notebook:cuda-latest` ([quay.io](https://quay.io/repository/jupyter/tensorflow-notebook), [src](https://github.com/jupyter/docker-stacks/tree/main/images/tensorflow-notebook/cuda), [doc](https://jupyter-docker-stacks.readthedocs.io/en/latest/using/selecting.html#cuda-enabled-variants))
 - Available as: [`christofkaufmann/keras3-gpu-notebook:latest`](https://hub.docker.com/repository/docker/christofkaufmann/keras3-gpu-notebook)
 - Features:
   - Jupyter enabled
diff --git a/keras3-cpu/Dockerfile b/keras3-cpu/Dockerfile
index c4715c848df3c5e3a3060f5ab8ab0ae43e3b0444..d3fbf0670d2474894cffa60639398bc2cba0d897 100644
--- a/keras3-cpu/Dockerfile
+++ b/keras3-cpu/Dockerfile
@@ -57,7 +57,7 @@ RUN mamba install --yes --no-update-deps \
 USER root
 
 # install code-server and extensions
-ENV CODE_VERSION=4.91.0
+ENV CODE_VERSION=4.93.1
 RUN wget --no-hsts -q https://github.com/coder/code-server/releases/download/v$CODE_VERSION/code-server_${CODE_VERSION}_amd64.deb && \
     dpkg -i code-server_${CODE_VERSION}_amd64.deb && \
     rm -f code-server_${CODE_VERSION}_amd64.deb && \
@@ -81,7 +81,7 @@ RUN wget --no-hsts -q -O vscode_cli.tar.gz 'https://code.visualstudio.com/sha/do
 
 # install some packages
 USER ${NB_UID}
-RUN mamba install --yes --no-update-deps \
+RUN mamba install --yes \
     # umap + hdbscan
     'umap-learn' \
     'hdbscan' \
@@ -140,6 +140,7 @@ RUN mamba install --yes --no-update-deps \
 USER root
 # activate extensions by default
 COPY plugin.jupyterlab-settings "/home/${NB_USER}/.jupyter/lab/user-settings/@jupyterlab/extensionmanager-extension/"
+COPY plugin.jupyterlab-settings "/home/${NB_USER}/.jupyter/lab/user-settings/@jupyter-server/resource-usage/"
 RUN chown -R ${NB_USER} "/home/${NB_USER}/.jupyter" && \
     # history search with Page Up/Down
     sed -i "s/^# \(.*history-search.*\)/\1/" /etc/inputrc && \
diff --git a/keras3-cpu/topbar-item.jupyterlab-setting b/keras3-cpu/topbar-item.jupyterlab-setting
new file mode 100644
index 0000000000000000000000000000000000000000..1c5d81f9b33e181ca60efb52b59d29f92a4f2b34
--- /dev/null
+++ b/keras3-cpu/topbar-item.jupyterlab-setting
@@ -0,0 +1,10 @@
+{
+    "enable": true,
+    "refreshRate": 2500,
+    "memory": {
+        "label": "Mem: "
+    },
+    "cpu": {
+        "label": "CPU: "
+    }
+}
diff --git a/keras3-gpu/Dockerfile b/keras3-gpu/Dockerfile
index 341312f9c2af4f3af94da1b03b6db1d3045aa55e..0c25dade3ffa52411a4d87a3575013c3fa5d0b8e 100644
--- a/keras3-gpu/Dockerfile
+++ b/keras3-gpu/Dockerfile
@@ -1,5 +1,6 @@
 # syntax=docker/dockerfile:1
 
+# tensorflow-notebook:cuda-latest installs tensorflow[and-cuda] from PyPI
 FROM quay.io/jupyter/tensorflow-notebook:cuda-latest AS build
 
 # fix: https://github.com/hadolint/hadolint/wiki/DL4006
@@ -9,7 +10,7 @@ SHELL ["/bin/bash", "-o", "pipefail", "-c"]
 USER root
 
 # install code-server and extensions
-ENV CODE_VERSION=4.91.0
+ENV CODE_VERSION=4.93.1
 RUN wget --no-hsts -q https://github.com/coder/code-server/releases/download/v$CODE_VERSION/code-server_${CODE_VERSION}_amd64.deb && \
     dpkg -i code-server_${CODE_VERSION}_amd64.deb && \
     rm -f code-server_${CODE_VERSION}_amd64.deb && \
@@ -31,7 +32,7 @@ RUN wget --no-hsts -q -O vscode_cli.tar.gz 'https://code.visualstudio.com/sha/do
 
 # install some packages
 USER ${NB_UID}
-RUN mamba install --yes --no-update-deps \
+RUN mamba install --yes \
     # umap + hdbscan
     'umap-learn' \
     'hdbscan' \
@@ -70,10 +71,9 @@ RUN mamba install --yes --no-update-deps \
     # some improvements of jupyterlab
     'jupyterlab_execute_time' \
     'jupyter-archive' \
-    # 'jupyterlab-system-monitor'  disabled, since not yet available for JupyterLab 4
-    'jupyter-resource-usage' && \
+    'jupyter-resource-usage' \
     # install opencv via fastai, headless version not available in conda-forge
-    mamba install --quiet --yes --no-update-deps -c fastai 'opencv-python-headless' && \
+    'fastai::opencv-python-headless' && \
     printf '%s\n' \
            "" \
            "# track CPU usage, prevent known bug with prometheus, set default limits if not set by MEM_LIMIT and CPU_LIMIT" \
@@ -145,7 +145,7 @@ LABEL org.opencontainers.image.revision=$LABEL_REVISION
 LABEL org.opencontainers.image.vendor="UAS Bochum"
 LABEL org.opencontainers.image.licenses=BSD-3-Clause
 LABEL org.opencontainers.image.title="Jupyter Notebook Keras 3 GPU image"
-LABEL org.opencontainers.image.description="This image includes TensorFlow ${TF_VERSION} and Keras 3 with GPU support, VS Code CLI, code-server and nbgitpuller."
+LABEL org.opencontainers.image.description="This image includes TensorFlow and Keras 3 with GPU support, VS Code CLI, code-server and nbgitpuller."
 LABEL org.opencontainers.image.base.name=quay.io/jupyter/tensorflow-notebook:cuda-latest
 
 # switch back to jovyan to avoid accidental container runs as root
diff --git a/tensorflow-cpu-with-vscode/Dockerfile b/tensorflow-cpu-with-vscode/Dockerfile
index b3b05bed5dc3ce79bc8f1903b9d31e6841242346..38b0c43b167203fd6c1d834fde6713ecfc4a97ea 100644
--- a/tensorflow-cpu-with-vscode/Dockerfile
+++ b/tensorflow-cpu-with-vscode/Dockerfile
@@ -56,7 +56,7 @@ RUN mamba install --yes --no-update-deps \
 USER root
 
 # install code-server and extensions
-ENV CODE_VERSION=4.91.0
+ENV CODE_VERSION=4.93.1
 RUN wget --no-hsts -q https://github.com/coder/code-server/releases/download/v$CODE_VERSION/code-server_${CODE_VERSION}_amd64.deb && \
     dpkg -i code-server_${CODE_VERSION}_amd64.deb && \
     rm -f code-server_${CODE_VERSION}_amd64.deb && \
@@ -106,7 +106,6 @@ RUN mamba install --yes --no-update-deps \
     'jupyterlab_execute_time' \
     'jupyter-archive' \
     'jupyterlab-git' \
-    # 'jupyterlab-system-monitor'  disabled, since not yet available for JupyterLab 4
     'jupyter-resource-usage' && \
     printf '%s\n' \
            "" \
diff --git a/tensorflow-gpu-with-vscode/Dockerfile b/tensorflow-gpu-with-vscode/Dockerfile
index 2880ba9a88fa8492970676d63d8a0dc212480350..295da2233f9883286a41f7dd03c4b6d4816e07a4 100644
--- a/tensorflow-gpu-with-vscode/Dockerfile
+++ b/tensorflow-gpu-with-vscode/Dockerfile
@@ -9,7 +9,7 @@ SHELL ["/bin/bash", "-o", "pipefail", "-c"]
 USER root
 
 # install code-server and extensions
-ENV CODE_VERSION=4.91.0
+ENV CODE_VERSION=4.93.1
 RUN wget --no-hsts -q https://github.com/coder/code-server/releases/download/v$CODE_VERSION/code-server_${CODE_VERSION}_amd64.deb && \
     dpkg -i code-server_${CODE_VERSION}_amd64.deb && \
     rm -f code-server_${CODE_VERSION}_amd64.deb && \
@@ -31,7 +31,7 @@ RUN wget --no-hsts -q -O vscode_cli.tar.gz 'https://code.visualstudio.com/sha/do
 
 # install some packages
 USER ${NB_UID}
-RUN mamba install --yes --no-update-deps \
+RUN mamba install --yes \
     # umap + hdbscan
     'umap-learn' \
     'hdbscan' \
@@ -71,7 +71,6 @@ RUN mamba install --yes --no-update-deps \
     # some improvements of jupyterlab
     'jupyterlab_execute_time' \
     'jupyter-archive' \
-    # 'jupyterlab-system-monitor'  disabled, since not yet available for JupyterLab 4
     'jupyter-resource-usage' && \
     # install opencv via fastai, headless version not available in conda-forge
     mamba install --quiet --yes --no-update-deps -c fastai 'opencv-python-headless' && \