diff --git a/.gitlab-ci.yml b/.gitlab-ci.yml
deleted file mode 100644
index 8d226545dd91721cd7788b9439938f7cd0a0e46e..0000000000000000000000000000000000000000
--- a/.gitlab-ci.yml
+++ /dev/null
@@ -1,90 +0,0 @@
-image: ghcr.io/siemens/kas/kas:latest-release
-
-stages:
-  - prep
-  - build
-
-# Common job fragment to get a worker ready
-.setup:
-  stage: build
-  interruptible: true
-  variables:
-    KAS_WORK_DIR: $CI_PROJECT_DIR/work
-    KAS_REPO_REF_DIR: $CI_BUILDS_DIR/persist/repos
-    SSTATE_DIR: $CI_BUILDS_DIR/persist/sstate
-    DL_DIR: $CI_BUILDS_DIR/persist/downloads
-    BB_LOGCONFIG: $CI_PROJECT_DIR/ci/logging.yml
-  before_script:
-    - echo KAS_WORK_DIR = $KAS_WORK_DIR
-    - echo SSTATE_DIR = $SSTATE_DIR
-    - echo DL_DIR = $DL_DIR
-    - rm -rf $KAS_WORK_DIR
-    - mkdir --verbose --parents $KAS_WORK_DIR $KAS_REPO_REF_DIR $SSTATE_DIR $DL_DIR
-
-# Generalised fragment to do a Kas build
-.build:
-  extends: .setup
-  script:
-    - KASFILES=$(./ci/jobs-to-kas "$CI_JOB_NAME")
-    - kas shell --update --force-checkout $KASFILES -c 'cat conf/*.conf'
-    - kas build $KASFILES
-    - ./ci/check-warnings $KAS_WORK_DIR/build/warnings.log
-  artifacts:
-    name: "logs"
-    when: on_failure
-    paths:
-      - $CI_PROJECT_DIR/work/build/tmp/work*/**/temp/log.do_*.*
-
-#
-# Prep stage, update repositories once
-#
-update-repos:
-  extends: .setup
-  stage: prep
-  script:
-    - flock --verbose --timeout 60 $KAS_REPO_REF_DIR ./ci/update-repos
-
-
-#
-# Bootstrap stage, machine coverage
-#
-
-# What percentage of machines in the layer do we build
-machine-coverage:
-  stage: prep
-  interruptible: true
-  script:
-    - ./ci/check-machine-coverage
-  coverage: '/Coverage: \d+/'
-
-
-#
-# Build stage, the actual build jobs
-#
-
-96b-avenger96:
-  extends: .build
-
-96b-nitrogen:
-  extends: .build
-
-arduino-nano-33-ble:
-  extends: .build
-
-intel-x86-64:
-  extends: .build
-
-nrf52840dk-nrf52840:
-  extends: .build
-
-qemu-cortex-m3/testimage:
-  extends: .build
-
-qemu-nios2:
-  extends: .build
-
-qemu-x86/testimage:
-  extends: .build
-
-stm32mp157c-dk2:
-  extends: .build
diff --git a/ci/96b-avenger96.yml b/ci/96b-avenger96.yml
deleted file mode 100644
index bcdccf34b501f3c5ffa668f9633f391e842e033e..0000000000000000000000000000000000000000
--- a/ci/96b-avenger96.yml
+++ /dev/null
@@ -1,6 +0,0 @@
-header:
-  version: 9
-  includes:
-    - ci/base.yml
-
-machine: 96b-avenger96
diff --git a/ci/96b-nitrogen.yml b/ci/96b-nitrogen.yml
deleted file mode 100644
index 9b685fe7476dd84dc33d7f3042e69b830ed175c2..0000000000000000000000000000000000000000
--- a/ci/96b-nitrogen.yml
+++ /dev/null
@@ -1,20 +0,0 @@
-header:
-  version: 9
-  includes:
-    - ci/base.yml
-
-machine: 96b-nitrogen
-
-target:
-  - zephyr-blinky
-  - zephyr-coap-client
-  - zephyr-coap-server
-  - zephyr-echo-client
-  - zephyr-hci-uart
-  - zephyr-helloworld
-  - zephyr-http-client
-  - zephyr-kernel-test-all
-  - zephyr-mqtt-publisher
-  - zephyr-peripheral-esp
-  - zephyr-peripheral-hr
-  - zephyr-philosophers
diff --git a/ci/arduino-nano-33-ble.yml b/ci/arduino-nano-33-ble.yml
deleted file mode 100644
index 103511837f0bbec3c73ecbb51a69db30b752f10a..0000000000000000000000000000000000000000
--- a/ci/arduino-nano-33-ble.yml
+++ /dev/null
@@ -1,21 +0,0 @@
-header:
-  version: 9
-  includes:
-    - ci/base.yml
-
-machine: arduino-nano-33-ble
-
-target:
-  - zephyr-blinky
-  - zephyr-coap-client
-  - zephyr-coap-server
-  - zephyr-echo-client
-  - zephyr-helloworld
-  - zephyr-http-client
-  - zephyr-kernel-test-all
-  - zephyr-mqtt-publisher
-  - zephyr-openthread-echo-client
-  - zephyr-openthread-rcp
-  - zephyr-peripheral-esp
-  - zephyr-peripheral-hr
-  - zephyr-philosophers
diff --git a/ci/base.yml b/ci/base.yml
deleted file mode 100644
index bab03d3c4889c5f776824f72f203d49ac593ab76..0000000000000000000000000000000000000000
--- a/ci/base.yml
+++ /dev/null
@@ -1,38 +0,0 @@
-header:
-  version: 11
-  includes:
-    - ci/meta-openembedded.yml
-
-distro: zephyr
-
-defaults:
-  repos:
-    refspec: kirkstone 
-
-repos:
-  meta-zephyr:
-    layers:
-      meta-zephyr-core:
-      meta-zephyr-bsp:
-
-  poky:
-    url: https://git.yoctoproject.org/git/poky
-    layers:
-      meta:
-      meta-poky:
-
-env:
-  BB_LOGCONFIG: ""
-
-local_conf_header:
-  base: |
-    BB_SERVER_TIMEOUT = "60"
-    CONF_VERSION = "2"
-    INHERIT += "rm_work"
-
-machine: unset
-
-target:
-  - zephyr-helloworld
-  - zephyr-kernel-test-all
-  - zephyr-philosophers
diff --git a/ci/check-machine-coverage b/ci/check-machine-coverage
deleted file mode 100755
index 19f9571a889e5cf3b1659bb1248650a9c7d9e471..0000000000000000000000000000000000000000
--- a/ci/check-machine-coverage
+++ /dev/null
@@ -1,26 +0,0 @@
-#! /usr/bin/env python3
-
-from pathlib import Path
-import sys
-
-metazephyr = Path.cwd()
-
-if metazephyr.name != "meta-zephyr":
-    print("Not running inside meta-zephyr")
-    sys.exit(1)
-
-# All machine configurations
-machines = metazephyr.glob("meta-zephyr-bsp/conf/machine/*.conf")
-machines = set(p.stem for p in machines)
-
-# All kas files
-kas = metazephyr.glob("ci/*.yml")
-kas = set(p.stem for p in kas)
-
-missing = machines - kas
-print(f"The following machines are missing: {', '.join(sorted(missing))}.")
-
-covered = len(machines) - len(missing)
-total = len(machines)
-percent = int(covered / total * 100)
-print(f"Coverage: {percent}%")
diff --git a/ci/check-warnings b/ci/check-warnings
deleted file mode 100755
index 9d080103b50b77dd21d41536819ddba661906120..0000000000000000000000000000000000000000
--- a/ci/check-warnings
+++ /dev/null
@@ -1,19 +0,0 @@
-#! /bin/bash
-
-# Expects the path to a log file as $1, and if this file has any content
-# then display the contents and exit with an error code.
-
-set -e -u
-
-LOGFILE=$1
-
-LINES=$(grep --invert-match "relocations in \.text" $LOGFILE | wc -l)
-if test "$LINES" -ne 0; then
-    echo ==============================
-    echo The build had warnings/errors:
-    echo ==============================
-    cat $LOGFILE
-    exit 1
-fi
-
-exit 0
diff --git a/ci/intel-x86-64.yml b/ci/intel-x86-64.yml
deleted file mode 100644
index 23e711ceac91dfecd5dad321547d5f55f58e4a28..0000000000000000000000000000000000000000
--- a/ci/intel-x86-64.yml
+++ /dev/null
@@ -1,6 +0,0 @@
-header:
-  version: 9
-  includes:
-    - ci/base.yml
-
-machine: intel-x86-64
diff --git a/ci/jobs-to-kas b/ci/jobs-to-kas
deleted file mode 100755
index 70579703bc07f4486507f59cd2d035faa495730e..0000000000000000000000000000000000000000
--- a/ci/jobs-to-kas
+++ /dev/null
@@ -1,19 +0,0 @@
-#! /bin/bash
-
-# Read a GitLab CI job name on $1 and transform it to a
-# list of Kas yaml files
-
-set -e -u
-
-# Read Job namne from $1 and split on /
-IFS=/ read -r -a PARTS<<<$1
-
-# Prefix each part with ci/
-PARTS=("${PARTS[@]/#/ci/}")
-
-# Suffix each part with .yml
-PARTS=("${PARTS[@]/%/.yml}")
-
-# Print colon-separated
-IFS=":"
-echo "${PARTS[*]}"
diff --git a/ci/logging.yml b/ci/logging.yml
deleted file mode 100644
index 3af10295f8f302a49f2dc764f79089509202aeae..0000000000000000000000000000000000000000
--- a/ci/logging.yml
+++ /dev/null
@@ -1,13 +0,0 @@
-# Python logging configuration to write all warnings to a separate file
-version: 1
-
-handlers:
-  warnings:
-    class: logging.FileHandler
-    level: WARNING
-    filename: warnings.log
-    formatter: BitBake.logfileFormatter
-
-loggers:
-  BitBake:
-    handlers: [warnings]
diff --git a/ci/meta-openembedded.yml b/ci/meta-openembedded.yml
deleted file mode 100644
index bed338dae05c2b424386904a3a08c295a4f5dee0..0000000000000000000000000000000000000000
--- a/ci/meta-openembedded.yml
+++ /dev/null
@@ -1,11 +0,0 @@
-header:
-  version: 11
-
-repos:
-  meta-openembedded:
-    url: https://git.openembedded.org/meta-openembedded
-    layers:
-      meta-filesystems:
-      meta-networking:
-      meta-oe:
-      meta-python:
diff --git a/ci/nrf52840dk-nrf52840.yml b/ci/nrf52840dk-nrf52840.yml
deleted file mode 100644
index a0c1587e1d445faf9e8c3f218f0815cab8b1f409..0000000000000000000000000000000000000000
--- a/ci/nrf52840dk-nrf52840.yml
+++ /dev/null
@@ -1,20 +0,0 @@
-header:
-  version: 9
-  includes:
-    - ci/base.yml
-
-machine: nrf52840dk-nrf52840
-
-target:
-  - zephyr-blinky
-  - zephyr-coap-client
-  - zephyr-coap-server
-  - zephyr-echo-client
-  - zephyr-helloworld
-  - zephyr-http-client
-  - zephyr-kernel-test-all
-  - zephyr-lvgl
-  - zephyr-mqtt-publisher
-  - zephyr-peripheral-esp
-  - zephyr-peripheral-hr
-  - zephyr-philosophers
diff --git a/ci/qemu-cortex-m3.yml b/ci/qemu-cortex-m3.yml
deleted file mode 100644
index b01480c81dd731133e81f1fd60b310ccbc609758..0000000000000000000000000000000000000000
--- a/ci/qemu-cortex-m3.yml
+++ /dev/null
@@ -1,12 +0,0 @@
-header:
-  version: 11
-  includes:
-    - ci/base.yml
-
-local_conf_header:
-  nonbuilding_tests: |
-    ZEPHYRTESTS:remove = "common context pending poll sleep"
-  qemu_opts: |
-    QB_OPT_APPEND = "-icount shift=3,align=off,sleep=on -rtc clock=vm"
-
-machine: qemu-cortex-m3
diff --git a/ci/qemu-nios2.yml b/ci/qemu-nios2.yml
deleted file mode 100644
index b818371c8be0a15f14a5cd5e51e1d79832a22058..0000000000000000000000000000000000000000
--- a/ci/qemu-nios2.yml
+++ /dev/null
@@ -1,10 +0,0 @@
-header:
-  version: 9
-  includes:
-    - ci/base.yml
-
-local_conf_header:
-  nonbuilding_tests: |
-    ZEPHYRTESTS:remove = "interrupt"
-
-machine: qemu-nios2
diff --git a/ci/qemu-x86.yml b/ci/qemu-x86.yml
deleted file mode 100644
index df744a1206fa82dcca3dd446d80cfd475d4122f9..0000000000000000000000000000000000000000
--- a/ci/qemu-x86.yml
+++ /dev/null
@@ -1,10 +0,0 @@
-header:
-  version: 9
-  includes:
-    - ci/base.yml
-
-local_conf_header:
-  failing_tests: |
-    ZEPHYRTESTS:remove = "pending"
-
-machine: qemu-x86
diff --git a/ci/stm32mp157c-dk2.yml b/ci/stm32mp157c-dk2.yml
deleted file mode 100644
index 3dc04a5fe823d6262c54091460903dfe9acb6667..0000000000000000000000000000000000000000
--- a/ci/stm32mp157c-dk2.yml
+++ /dev/null
@@ -1,13 +0,0 @@
-header:
-  version: 9
-  includes:
-    - ci/base.yml
-
-machine: stm32mp157c-dk2
-
-target:
-  - zephyr-blinky
-  - zephyr-helloworld
-  - zephyr-kernel-test-all
-  - zephyr-philosophers
-  - zephyr-openamp-rsc-table
diff --git a/ci/testimage.yml b/ci/testimage.yml
deleted file mode 100644
index 83e17a70d50644a987eb38937af6dd3eb6c8818d..0000000000000000000000000000000000000000
--- a/ci/testimage.yml
+++ /dev/null
@@ -1,9 +0,0 @@
-header:
-  version: 11
-
-local_conf_header:
-  testimage: |
-    IMAGE_CLASSES += "testimage"
-    TEST_TARGET = "QemuTargetZephyr"
-    TEST_SUITES = "zephyr"
-    TESTIMAGE_AUTO = "1"
diff --git a/ci/update-repos b/ci/update-repos
deleted file mode 100755
index fa638aad2efbe0bc8ff34af92393a65faaf9ee9b..0000000000000000000000000000000000000000
--- a/ci/update-repos
+++ /dev/null
@@ -1,40 +0,0 @@
-#! /usr/bin/env python3
-
-# Update clones of the repositories we need in KAS_REPO_REF_DIR to speed up fetches
-
-import sys
-import os
-import subprocess
-import pathlib
-
-def repo_shortname(url):
-    # Taken from Kas (Repo.__getattr__) to ensure the logic is right
-    from urllib.parse import urlparse
-    url = urlparse(url)
-    return ('{url.netloc}{url.path}'
-            .format(url=url)
-            .replace('@', '.')
-            .replace(':', '.')
-            .replace('/', '.')
-            .replace('*', '.'))
-
-repositories = (
-    "https://git.yoctoproject.org/git/poky",
-    "https://git.openembedded.org/meta-openembedded",
-)
-
-if __name__ == "__main__":
-    if "KAS_REPO_REF_DIR" not in os.environ:
-        print("KAS_REPO_REF_DIR needs to be set")
-        sys.exit(1)
-
-    base_repodir = pathlib.Path(os.environ["KAS_REPO_REF_DIR"])
-
-    for repo in repositories:
-        repodir = base_repodir / repo_shortname(repo)
-        if repodir.exists():
-            print("Updating %s..." % repo)
-            subprocess.run(["git", "-C", repodir, "fetch"], check=True)
-        else:
-            print("Cloning %s..." % repo)
-            subprocess.run(["git", "clone", "--bare", repo, repodir], check=True)