diff --git a/.gitlab-ci.yml b/.gitlab-ci.yml
index 1fa5906e438a73c8223b2130dbc9342ccef85948..b3a3d2dcadd11a7f9b3cad9c5b8345c7733327d8 100644
--- a/.gitlab-ci.yml
+++ b/.gitlab-ci.yml
@@ -7,11 +7,9 @@ stages:
   - publish images
 
 variables:
-  RELEASE_BASE: "bookworm"
-  DISTRO_BASE: debian
-  MIRROR: https://deb.debian.org/debian/
   RELEASE: "v2024dev2"
   DISTRO: apertis
+  MIRROR: https://repositories.apertis.org/apertis/
   STABLE: auto
   TEST_TAG: test-${CI_PIPELINE_ID}
 
@@ -62,7 +60,7 @@ build-base-rootfs:
   script:
     - >
       cd base &&
-      debos -t osname:${DISTRO_BASE} -t suite:${RELEASE_BASE} -t stable:$STABLE  -t mirror:"$MIRROR" rootfs.yaml
+      debos -t osname:${DISTRO} -t suite:${RELEASE} -t stable:$STABLE  -t mirror:"$MIRROR" rootfs.yaml
 
 .build-docker-image:
   image:
@@ -163,6 +161,87 @@ test-package-source-builder:
     - test "$(dpkg-parsechangelog -SDistribution)" = UNRELEASED
     - cd ..
 
+build-documentation-builder-docker-image:
+  extends: .build-docker-image
+  stage: derived images
+  variables:
+    image: documentation-builder
+
+build-image-builder-docker-image:
+  extends: .build-docker-image
+  stage: derived images
+  variables:
+    image: image-builder
+
+build-testcases-builder-docker-image:
+  extends: .build-docker-image
+  stage: derived images
+  variables:
+    image: testcases-builder
+
+build-flatdeb-builder-docker-image:
+  extends: .build-docker-image
+  stage: derived images
+  variables:
+    image: flatdeb-builder
+
+build-ostree-receive-image:
+  extends: .build-docker-image
+  stage: derived images
+  variables:
+    image: ostree-receive
+
+build-toolbox-image:
+  extends: .build-docker-image
+  stage: toolbox images
+  variables:
+    image: toolbox
+
+test-image-builder-shared-runner-default:
+  stage: image test
+  needs:
+    - build-image-builder-docker-image
+  image:
+    name: $CI_REGISTRY_IMAGE/${RELEASE}-image-builder:${TEST_TAG}
+    entrypoint: [ "" ]
+  variables:
+    DEBOS_ARGS: -t required_backend:kvm
+  before_script:
+    - ": Test that KVM is being picked up by default"
+  script:
+    - debos --verbose --show-boot -t osname:${DISTRO} -t suite:${RELEASE} -t mirror:"${MIRROR}" ${DEBOS_ARGS} image-builder/test-recipe.yaml
+
+test-image-builder-shared-runner-uml:
+  extends: test-image-builder-shared-runner-default
+  variables:
+    DEBOS_ARGS: --fakemachine-backend=uml -t required_backend:uml
+  before_script:
+    - ": Test that UML is still available for backward-compatibility"
+
+test-image-builder-kvm-runner:
+  extends: test-image-builder-shared-runner-default
+  tags:
+    - kvm
+  variables:
+    DEBOS_ARGS: -t required_backend:kvm
+  before_script:
+    - ": Test that KVM is available on the old KVM runner to be dismissed"
+
+test-flatdeb-builder:
+  stage: image test
+  needs:
+    - build-flatdeb-builder-docker-image
+  image:
+    name: $CI_REGISTRY_IMAGE/${RELEASE}-flatdeb-builder:${TEST_TAG}
+    entrypoint: [ "" ]
+  script:
+    - cd flatdeb-builder/
+    - cat suites/default.yaml.tpl | sed
+        -e "s|%MIRROR%|${MIRROR}|g"
+        -e "s|%DISTRO%|${DISTRO}|g"
+        | tee "suites/${RELEASE}.yaml"
+    - /opt/apertis-flatdeb/run.py --build-area=$(pwd)/flatdeb-builddir --ostree-repo=$(pwd)/flatdeb-builddir/ostree-repo --suite=${RELEASE} --arch=amd64 base
+
 publish-base-docker-image:
   extends: .publish-docker-image
   stage: publish images
@@ -174,3 +253,39 @@ publish-package-source-builder-docker-image:
   stage: publish images
   variables:
     image: package-source-builder
+
+publish-documentation-builder-docker-image:
+  extends: .publish-docker-image
+  stage: publish images
+  variables:
+    image: documentation-builder
+
+publish-testcases-builder-docker-image:
+  extends: .publish-docker-image
+  stage: publish images
+  variables:
+    image: testcases-builder
+
+publish-image-builder-docker-image:
+  extends: .publish-docker-image
+  stage: publish images
+  variables:
+    image: image-builder
+
+publish-flatdeb-builder-docker-image:
+  extends: .publish-docker-image
+  stage: publish images
+  variables:
+    image: flatdeb-builder
+
+publish-ostree-receive-docker-image:
+  extends: .publish-docker-image
+  stage: publish images
+  variables:
+    image: ostree-receive
+
+publish-toolbox-image:
+  extends: .publish-docker-image
+  stage: publish images
+  variables:
+    image: toolbox
diff --git a/base/Dockerfile b/base/Dockerfile
index eaab95f0101f6f1a1cc36d7698f2cf1476f4a7ea..a5ac53e1544ce4de047e9c10e861b48407508246 100644
--- a/base/Dockerfile
+++ b/base/Dockerfile
@@ -18,7 +18,7 @@
 
 FROM scratch
 
-ARG OSNAME=debian
+ARG OSNAME=apertis
 LABEL description="$OSNAME base image"
 
 ENV LANG=C.UTF-8
@@ -30,7 +30,4 @@ ARG OSPACK=rootfs.tar.gz
 ADD ${OSPACK} /
 
 # Always install procps in case the docker file gets used in jenkins
-RUN apt-get update && apt-get install  --no-install-recommends -y procps debian-archive-keyring
-
-RUN mkdir -p /etc/apt/trusted.gpg.d/
-COPY keyring/apertis-archive-keyring.gpg /etc/apt/trusted.gpg.d/
\ No newline at end of file
+RUN apt-get update && apt-get install  --no-install-recommends -y procps
diff --git a/base/keyring/debian-archive-keyring.gpg b/base/keyring/debian-archive-keyring.gpg
deleted file mode 100644
index e897ec52fbeb9379db9157389acc356ccda416d4..0000000000000000000000000000000000000000
Binary files a/base/keyring/debian-archive-keyring.gpg and /dev/null differ
diff --git a/base/rootfs.yaml b/base/rootfs.yaml
index d24f8c82fdc0c7d1f4d7d6bea9af297ead098cba..cbbdb6d0c115bd2c0186a052219f3341094d25ec 100644
--- a/base/rootfs.yaml
+++ b/base/rootfs.yaml
@@ -1,10 +1,10 @@
 {{- $architecture := or .architecture "amd64" }}
-{{- $mirror := or .mirror "https://deb.debian.org/debian/" -}}
-{{- $suite := or .suite "bookworm" -}}
+{{- $mirror := or .mirror "https://repositories.apertis.org/apertis/" -}}
+{{- $suite := or .suite "v2022dev2" -}}
 {{- $ospack := or .ospack "rootfs.tar.gz" -}}
 {{- $timestamp := or .timestamp "00000000.0" -}}
 {{- $stable := or .stable "" -}}
-{{- $osname := or .osname "debian" -}}
+{{- $osname := or .osname "apertis" -}}
 
 architecture: {{ $architecture }}
 
@@ -12,7 +12,7 @@ actions:
   - action: debootstrap
     suite: {{ $suite }}
     components:
-      - main
+      - target
     mirror: {{ $mirror }}
     variant: minbase
     keyring-package: {{ $osname }}-archive-keyring
@@ -22,6 +22,15 @@ actions:
   - action: overlay
     source: overlay
 
+  - action: run
+    description: "Add extra apt sources"
+    chroot: true
+    script: scripts/apt_source.sh -m {{ $mirror }} -r {{ $suite }} --sources {{if eq $stable "true"}} --updates --security {{end}} target hmi development sdk
+
+  - action: run
+    chroot: true
+    script: scripts/replace-gplv2-packages-for-dev-env.sh
+
   - action: run
     description: "Setting up image version metadata"
     chroot: true
diff --git a/image-builder/Dockerfile b/image-builder/Dockerfile
index d815888d02c67b18b148c48e8487d1d73b14f2c5..941892b23e3c1c4565707c38e1aa4c87367ad608 100644
--- a/image-builder/Dockerfile
+++ b/image-builder/Dockerfile
@@ -68,6 +68,11 @@ RUN apt-get update && \
 RUN apt-get update  && \
     apt-get install --no-install-recommends -y libnss-unknown
 
+# Install the LAVA submission tool
+RUN git clone https://gitlab.apertis.org/infrastructure/lava-phab-bridge /tmp/lava-phab-bridge && \
+    install -m755 /tmp/lava-phab-bridge/lava-submit.py /usr/bin/lava-submit && \
+    rm -rf /tmp/lava-phab-bridge
+
 # Allow to connect to unknown hosts for non-interactive ssh
 # NB: possible security issue
 RUN echo "    StrictHostKeyChecking no" >> /etc/ssh/ssh_config
diff --git a/image-builder/keyring/debian-archive-keyring.gpg b/image-builder/keyring/debian-archive-keyring.gpg
deleted file mode 100644
index e897ec52fbeb9379db9157389acc356ccda416d4..0000000000000000000000000000000000000000
Binary files a/image-builder/keyring/debian-archive-keyring.gpg and /dev/null differ
diff --git a/image-builder/test-recipe.yaml b/image-builder/test-recipe.yaml
index cd4de39a7f8332754986223a08ba4c30eecf5a80..9f6f9cab25a61e1b9a55bd6c96223c86577ad771 100644
--- a/image-builder/test-recipe.yaml
+++ b/image-builder/test-recipe.yaml
@@ -25,9 +25,9 @@ actions:
   - action: debootstrap
     suite: {{ $suite }}
     components:
-      - main
+      - target
     mirror: {{ $mirror }}
     variant: minbase
-    keyring-package: debian-archive-keyring
-    keyring-file: keyring/debian-archive-keyring.gpg
+    keyring-package: {{ $osname }}-archive-keyring
+    keyring-file: keyring/{{ $osname }}-archive-keyring.gpg
     merged-usr: true
diff --git a/package-source-builder/Dockerfile b/package-source-builder/Dockerfile
index a370a55908721a09b3cc0422f806ec0db8b09b5e..d476a3f63f31978a37edf04eba85dc6af341073b 100644
--- a/package-source-builder/Dockerfile
+++ b/package-source-builder/Dockerfile
@@ -28,8 +28,6 @@ ARG DEBIAN_FRONTEND=noninteractive
 
 ADD overlay/ /
 
-RUN echo "deb https://repositories.apertis.org/apertis v2024dev1 target development" >> /etc/apt/sources.list
-
 # gpgv is needed to replace sequoia-gpgv and be able to install gnupg packages
 RUN apt-get update && apt-get install -y gpgv