diff --git a/.gitlab-ci.yml b/.gitlab-ci.yml
index 8f54957277d33720dcab081783ab767bc8701e8a..42e85535f48947ecfb7f14ac57856f76db6376bb 100644
--- a/.gitlab-ci.yml
+++ b/.gitlab-ci.yml
@@ -72,9 +72,6 @@ build gui:
   stage: build
   extends: .build_image
   variables:
-    GIT_SUBMODULE_STRATEGY: recursive
-    GIT_SUBMODULE_UPDATE_FLAGS: --jobs 4
-    GIT_SUBMODULE_PATHS: gui/*
     TARGET: dev_node
     DESTINATION: "${CI_REGISTRY_IMAGE}/dev_node:${DOCKER_TAG}"
 
@@ -92,9 +89,6 @@ build python:
   stage: build
   extends: .build_image
   variables:
-    GIT_SUBMODULE_STRATEGY: recursive
-    GIT_SUBMODULE_UPDATE_FLAGS: --jobs 4
-    GIT_SUBMODULE_PATHS: gui/*
     TARGET: dev_python
     DESTINATION: "${CI_REGISTRY_IMAGE}/dev_python:${DOCKER_TAG}"
 
@@ -128,8 +122,6 @@ check helm chart:
 python linting:
   stage: test
   image: ${CI_REGISTRY_IMAGE}/dev_python:${DOCKER_TAG}
-  variables:
-    GIT_SUBMODULE_STRATEGY: none
   script:
     - ruff check nomad tests
     - ruff format nomad tests --check
@@ -158,9 +150,6 @@ python package clean up:
 check python dependencies:
   stage: test
   image: python:3.9
-  variables:
-    GIT_SUBMODULE_STRATEGY: recursive
-    GIT_SUBMODULE_UPDATE_FLAGS: --jobs 4
   before_script:
     - pip install --upgrade uv
   script:
@@ -186,9 +175,6 @@ check python dependencies:
     - name: mongo:5.0.6
       alias: mongo
   variables:
-    GIT_SUBMODULE_STRATEGY: recursive
-    GIT_SUBMODULE_DEPTH: 1
-    GIT_SUBMODULE_UPDATE_FLAGS: --jobs 4
     RABBITMQ_ERLANG_COOKIE: SWQOKODSQALRPCLNMEQG
     RABBITMQ_DEFAULT_USER: rabbitmq
     RABBITMQ_DEFAULT_PASS: rabbitmq
@@ -305,10 +291,6 @@ gui tests:
 check gui artifacts:
   stage: test
   image: ${CI_REGISTRY_IMAGE}/dev_python:${DOCKER_TAG}
-  variables:
-    GIT_SUBMODULE_STRATEGY: recursive
-    GIT_SUBMODULE_DEPTH: 1
-    GIT_SUBMODULE_UPDATE_FLAGS: --jobs 4
   script:
     - uv pip install ".[dev,parsing,infrastructure]"
     - uv pip install -r requirements-plugins.txt -c requirements-dev.txt # remove this after moving to distro
@@ -327,9 +309,6 @@ check gui artifacts:
 build python package:
   stage: test
   variables:
-    GIT_SUBMODULE_STRATEGY: recursive
-    GIT_SUBMODULE_DEPTH: 1
-    GIT_SUBMODULE_UPDATE_FLAGS: --jobs 4
     SETUPTOOLS_SCM_PRETEND_VERSION: "${SETUPTOOLS_SCM_PRETEND_VERSION}"
   extends: .build_image
   script:
@@ -356,9 +335,6 @@ build final image:
   stage: test
   needs: ["build python package", "update_scm_pretend_version"]
   variables:
-    GIT_SUBMODULE_STRATEGY: recursive
-    GIT_SUBMODULE_DEPTH: 1
-    GIT_SUBMODULE_UPDATE_FLAGS: --jobs 4
     SETUPTOOLS_SCM_PRETEND_VERSION: "${SETUPTOOLS_SCM_PRETEND_VERSION}"
     TARGET: final
     DESTINATION: "${CI_REGISTRY_IMAGE}:${DOCKER_TAG}"
diff --git a/.gitmodules b/.gitmodules
deleted file mode 100644
index f6a27bbae8b63c1cf5e7eb07642201998cf1578b..0000000000000000000000000000000000000000
--- a/.gitmodules
+++ /dev/null
@@ -1,9 +0,0 @@
-[submodule "examples/plugins/schema"]
-	path = examples/plugins/schema
-	url = https://github.com/nomad-coe/nomad-schema-plugin-example.git
-[submodule "examples/plugins/parser"]
-	path = examples/plugins/parser
-	url = https://github.com/nomad-coe/nomad-parser-plugin-example.git
-[submodule "examples/plugins/normalizer"]
-	path = examples/plugins/normalizer
-	url = https://github.com/nomad-coe/nomad-normalizer-plugin-example.git
diff --git a/docs/howto/develop/contrib.md b/docs/howto/develop/contrib.md
index 5d2c0ce0faf4aba8527b4a00207a0bb638535f19..c806ded6319a35b2319013c0f84febae9eca877b 100644
--- a/docs/howto/develop/contrib.md
+++ b/docs/howto/develop/contrib.md
@@ -82,28 +82,19 @@ See also the [documentation part](./code.md#documentation) in our code navigatio
 
 Also read the guide on [how to develop, publish, and distribute plugins](../plugins/plugins.md).
 
-### Built-in plugins (and submodules)
+### Built-in plugins
 
 Most plugins that are maintained by the NOMAD team are built-in plugins (e.g. all the
 parsers). These plugins are also available on the public NOMAD service.
 
-These plugins are tied to the main project's source code via submodules. They are included
-in the build and therefore automatically distributed as part of the NOMAD docker images
-and Python package.
+These plugins are tied to the main project's source code via dependencies.
 
 To contribute to these plugins, use the respective GitHub projects. See also the
 list of [parsers](../../reference/parsers.md) and the list of
-[built-in plugins](../../reference/plugins.md). The same rules apply there. A merge request
-to the main project will also be required to update the submodule.
-
-All these submodules are placed in the `dependencies` directory. After merging or
-checking out, you have to make sure that the modules are updated to not accidentally
-commit old submodule commits again. Usually you do the following to check if you really
-have a clean working directory:
+[built-in plugins](../../reference/plugins.md). The same rules apply there. 
 
 ```shell
 git checkout something-with-changes
-git submodule update --init --recursive
 git status
 ```
 
diff --git a/docs/howto/develop/setup.md b/docs/howto/develop/setup.md
index 1a22fcf5c0a2bf2332f94d19a277252fc0c4ab8b..f258468347da19f51dbc681a25d58ba996f5146f 100644
--- a/docs/howto/develop/setup.md
+++ b/docs/howto/develop/setup.md
@@ -45,15 +45,6 @@ git checkout -b <my-branch-name>
 
 This branch can be pushed to the repo, and then later may be merged to the relevant branch.
 
-### Install submodules
-
-Parts of the NOMAD software, such as parsers, are maintained in separate Git repositories.
-These are then connected to the main repository as Git submodules. To clone and initialize
-these submodules, run:
-
-```shell
-git submodule update --init
-```
 
 ## Installation
 
@@ -135,8 +126,7 @@ python -c "import magic"
 
 ### Install NOMAD
 
-The following command can be used to install all dependencies of all submodules
-and NOMAD itself.
+The following command can be used to install NOMAD.
 
 ```shell
 ./scripts/setup_dev_env.sh
@@ -145,12 +135,6 @@ and NOMAD itself.
 ??? note "Installation details"
     Here is more detailed rundown of the installation steps.
 
-    First we ensure that all submodules are up-to-date:
-
-    ```shell
-    git submodule update --init --recursive
-    ```
-
     Previous build is cleaned:
 
     ```shell
diff --git a/docs/howto/oasis/plugins_install.md b/docs/howto/oasis/plugins_install.md
index 22870b30fa8c0af9d7381d04a5bb8db262578ea0..ea782055edbd25a4feb4d93b1bf867e4a963c6c4 100644
--- a/docs/howto/oasis/plugins_install.md
+++ b/docs/howto/oasis/plugins_install.md
@@ -104,27 +104,4 @@ export COMPOSE_FILE=docker-compose.yaml:docker-compose.plugins.yaml
 docker compose up -d
 ```
 
-Here is a complete Oasis setup [nomad-oasis-with-plugins.zip](../../assets/nomad-oasis-with-plugins.zip). Simply download, extract, and start like any other Oasis:
-
-```sh
-unzip nomad-oasis-with-plugins.zip
-cd nomad-oasis-with-plugins
-sudo chown -R 1000 .volumes
-sudo chown -R 1000 nomad-schema-plugin-example
-sudo chown -R 1000 nomad-parser-plugin-example
-sudo chown -R 1000 nomad-normalizer-plugin-example
-export COMPOSE_FILE=docker-compose.yaml:docker-compose.plugins.yaml
-docker compose pull
-docker compose up -d
-curl localhost/nomad-oasis/alive
-```
-
-!!! warning "Attention"
-    It is important to set up the correct user rights for your volumes and
-    plugins. Our default `docker-compose` setup uses the user `1000` in group
-    `1000` to run the services, this is the reason for the `chown` commands
-    above that ensure that the processes have access to the data stored in
-    volumes and in the plugins. If you use another user/group to run the docker
-    services, update the commands accordingly.
-
 Read the [Oasis install guide](install.md) for more details.
diff --git a/examples/plugins/normalizer b/examples/plugins/normalizer
deleted file mode 160000
index 0d8b9116cb90c8d70b831ec93416d3302595f7c0..0000000000000000000000000000000000000000
--- a/examples/plugins/normalizer
+++ /dev/null
@@ -1 +0,0 @@
-Subproject commit 0d8b9116cb90c8d70b831ec93416d3302595f7c0
diff --git a/examples/plugins/parser b/examples/plugins/parser
deleted file mode 160000
index 3b246145b21484b72c67c6d4fb12207c1f869b0d..0000000000000000000000000000000000000000
--- a/examples/plugins/parser
+++ /dev/null
@@ -1 +0,0 @@
-Subproject commit 3b246145b21484b72c67c6d4fb12207c1f869b0d
diff --git a/examples/plugins/schema b/examples/plugins/schema
deleted file mode 160000
index 48752a78360e1369d7754fcfccae068bf932d428..0000000000000000000000000000000000000000
--- a/examples/plugins/schema
+++ /dev/null
@@ -1 +0,0 @@
-Subproject commit 48752a78360e1369d7754fcfccae068bf932d428
diff --git a/scripts/generate_docs_artifacts.sh b/scripts/generate_docs_artifacts.sh
index 3694cc3db5c3da84d6e9526ba9996425cbe2afc7..b8f8b7fd956e60acf441171ff5f7bbe9c92a5895 100755
--- a/scripts/generate_docs_artifacts.sh
+++ b/scripts/generate_docs_artifacts.sh
@@ -11,10 +11,4 @@ rm -rf $project_dir/docs/assets/nomad-oasis*
 zip -r $project_dir/docs/assets/nomad-oasis.zip nomad-oasis -x "**/.gitignore"
 zip -r $project_dir/docs/assets/nomad-oasis-with-keycloak.zip nomad-oasis-with-keycloak -x "**/.gitignore"
 
-rm -rf nomad-oasis-with-plugins/.volumes nomad-oasis-with-plugins/configs nomad-oasis-with-plugins/docker-compose.yaml nomad-oasis-with-plugins/nomad-*
-cp -r nomad-oasis/configs nomad-oasis/docker-compose.yaml nomad-oasis/.volumes nomad-oasis-with-plugins/
-git clone https://github.com/nomad-coe/nomad-schema-plugin-example.git ./nomad-oasis-with-plugins/nomad-schema-plugin-example
-git clone https://github.com/nomad-coe/nomad-parser-plugin-example.git ./nomad-oasis-with-plugins/nomad-parser-plugin-example
-git clone https://github.com/nomad-coe/nomad-normalizer-plugin-example.git ./nomad-oasis-with-plugins/nomad-normalizer-plugin-example
-cat nomad-oasis-with-plugins/nomad.yaml >> nomad-oasis-with-plugins/configs/nomad.yaml
-zip -r $project_dir/docs/assets/nomad-oasis-with-plugins.zip nomad-oasis-with-plugins -x "**/.gitignore" -x "nomad-oasis-with-plugins/nomad.yaml"
\ No newline at end of file
+cp -r nomad-oasis/configs nomad-oasis/docker-compose.yaml nomad-oasis/.volumes
diff --git a/scripts/setup_dev_env.sh b/scripts/setup_dev_env.sh
index 49f63bf6db05894364503e399e21bb114f734bee..6dfa3f90638e59f8b8370e503d1314fcda4be952 100755
--- a/scripts/setup_dev_env.sh
+++ b/scripts/setup_dev_env.sh
@@ -7,9 +7,6 @@ project_dir=$(dirname $(dirname $(realpath $0)))
 
 cd $project_dir
 
-# Initialise all of the submodules
-git submodule update --init --recursive
-
 # Clean up any previous build
 rm -rf nomad/app/static/docs
 rm -rf nomad/app/static/gui