diff --git a/.github/workflows/conda/environment_macos_linux.yml b/.github/workflows/conda/environment_macos_linux.yml
deleted file mode 100644
index 7180679c5043f03ff414628322fa1beb894c448c..0000000000000000000000000000000000000000
--- a/.github/workflows/conda/environment_macos_linux.yml
+++ /dev/null
@@ -1,24 +0,0 @@
-name: coal
-channels:
-  - conda-forge
-  - nodefaults
-dependencies:
-  - eigen
-  - octomap
-  - assimp
-  - numpy
-  - libboost-devel
-  - libboost-python-devel
-  - eigenpy
-  - python
-  - doxygen<1.9.8|>=1.11
-  - lxml
-  - pylatexenc
-  - qhull
-  - qhull-static
-  - cmake
-  - ccache
-  - cxx-compiler
-  - llvm-openmp
-  - pkg-config
-  - ninja
diff --git a/.github/workflows/conda/environment_windows.yml b/.github/workflows/conda/environment_windows.yml
deleted file mode 100644
index c1c99096ae8ea67c7f7bdb8a82f65504b8521b4b..0000000000000000000000000000000000000000
--- a/.github/workflows/conda/environment_windows.yml
+++ /dev/null
@@ -1,21 +0,0 @@
-name: coal
-channels:
-  - conda-forge
-  - nodefaults
-dependencies:
-  - eigen
-  - octomap
-  - assimp
-  - numpy
-  - libboost-devel
-  - libboost-python-devel
-  - eigenpy
-  - python
-  - doxygen<1.9.8|>=1.11
-  - lxml
-  - pylatexenc
-  - qhull
-  - cmake
-  - ccache
-  - pkg-config
-  - ninja
diff --git a/.github/workflows/macos-linux-conda.yml b/.github/workflows/macos-linux-conda.yml
deleted file mode 100644
index 913ed513b03343f08ed6addf74ed8ce62eb6fba4..0000000000000000000000000000000000000000
--- a/.github/workflows/macos-linux-conda.yml
+++ /dev/null
@@ -1,94 +0,0 @@
-name: Build Coal for Mac OS X/Linux via Conda
-
-on: [push,pull_request]
-
-jobs:
-  coal-conda:
-    name: CI on ${{ matrix.os }} with Conda Python ${{ matrix.python-version }} - ${{ matrix.build_type }} ${{ matrix.cxx_options }}
-    runs-on: ${{ matrix.os }}
-    env:
-      CCACHE_BASEDIR: "${GITHUB_WORKSPACE}"
-      CCACHE_DIR: "${GITHUB_WORKSPACE}/.ccache"
-      CCACHE_COMPRESS: true
-      CCACHE_COMPRESSLEVEL: 6
-
-    strategy:
-      fail-fast: false
-      matrix:
-        os: ["ubuntu-latest", "macos-latest"]
-        python-version: ["3.8", "3.12"]
-        cxx_options: ['', '-mavx2']
-        build_type: [Release, Debug]
-        exclude:
-          - build_type: Debug
-            cxx_options: -mavx2
-            os: macos-latest
-          - build_type: Release
-            cxx_options: -mavx2
-            os: macos-latest
-
-    steps:
-    - uses: actions/checkout@v4
-      with:
-        submodules: recursive
-
-    - uses: actions/cache@v3
-      with:
-        path: .ccache
-        key: ccache-macos-linux-conda-${{ matrix.os }}-${{ matrix.build_type }}-${{ matrix.cxx_options }}-${{ matrix.python-version }}-${{ github.sha }}
-        restore-keys: ccache-macos-linux-conda-${{ matrix.os }}-${{ matrix.build_type }}-${{ matrix.cxx_options }}-${{ matrix.python-version }}-
-
-    - uses: conda-incubator/setup-miniconda@v3
-      with:
-        activate-environment: coal
-        auto-update-conda: true
-        environment-file: .github/workflows/conda/environment_macos_linux.yml
-        python-version: ${{ matrix.python-version }}
-        auto-activate-base: false
-
-    - name: Build Coal
-      shell: bash -el {0}
-      run: |
-        conda list
-        echo $CONDA_PREFIX
-
-        mkdir build
-        cd build
-
-        cmake .. \
-          -G "Ninja" \
-          -DBUILD_DOCUMENTATION=ON \
-          -DINSTALL_DOCUMENTATION=ON \
-          -DCMAKE_CXX_COMPILER_LAUNCHER=ccache \
-          -DCMAKE_INSTALL_PREFIX=$CONDA_PREFIX \
-          -DCMAKE_BUILD_TYPE=${{ matrix.build_type }} \
-          -DCMAKE_CXX_FLAGS=${{ matrix.cxx_options }} \
-          -DPYTHON_EXECUTABLE=$(which python3) \
-          -DGENERATE_PYTHON_STUBS=ON \
-          -DCOAL_HAS_QHULL=ON \
-          -DBUILD_DOCUMENTATION=ON \
-          -DINSTALL_DOCUMENTATION=ON
-        cmake --build . -j2
-        ctest --output-on-failure
-        cmake --install .
-
-    - name: Uninstall Coal
-      shell: bash -el {0}
-      run: |
-        cd build
-        cmake --build . --target uninstall
-
-  check:
-    if: always()
-    name: check-macos-linux-conda
-
-    needs:
-    - coal-conda
-
-    runs-on: Ubuntu-latest
-
-    steps:
-    - name: Decide whether the needed jobs succeeded or failed
-      uses: re-actors/alls-green@release/v1
-      with:
-        jobs: ${{ toJSON(needs) }}
diff --git a/.github/workflows/macos-linux-windows-pixi.yml b/.github/workflows/macos-linux-windows-pixi.yml
new file mode 100644
index 0000000000000000000000000000000000000000..85ea37509bc8d7b9b2940ec14bdd560feae13fb3
--- /dev/null
+++ b/.github/workflows/macos-linux-windows-pixi.yml
@@ -0,0 +1,101 @@
+name: CI - MacOS/Linux/Windows via Pixi
+
+on:
+  push:
+    paths-ignore:
+      - .gitlab-ci.yml
+      - .gitignore
+      - '*.md'
+      - CITATION.*
+      - LICENSE
+      - colcon.pkg
+      - .pre-commit-config.yaml
+      - CHANGELOG.md
+      - development/*.md
+  pull_request:
+    paths-ignore:
+      - .gitlab-ci.yml
+      - .gitignore
+      - '*.md'
+      - CITATION.*
+      - LICENSE
+      - colcon.pkg
+      - .pre-commit-config.yaml
+      - CHANGELOG.md
+      - development/*.md
+concurrency:
+  group: ${{ github.workflow }}-${{ github.ref }}
+  cancel-in-progress: true
+
+jobs:
+  coal-pixi:
+    name: ${{ matrix.os }} - Env ${{ matrix.environment }} ${{ matrix.build_type }} ${{ matrix.cxx_options }}
+    runs-on: ${{ matrix.os }}
+    env:
+      CCACHE_BASEDIR: "${GITHUB_WORKSPACE}"
+      CCACHE_DIR: "${GITHUB_WORKSPACE}/.ccache"
+      CCACHE_COMPRESS: true
+      CCACHE_COMPRESSLEVEL: 6
+
+    strategy:
+      fail-fast: false
+      matrix:
+        os: [ubuntu-latest, macos-latest, macos-13]
+        environment: [all, all-py39]
+        build_type: [Release, Debug]
+        cxx_options: ['', '-mavx2']
+        exclude:
+          - os: macos-latest
+            cxx_options: '-mavx2'
+          - os: macos-13
+            cxx_options: '-mavx2'
+
+        include:
+          - os: windows-latest
+            environment: all
+            cxx_options: ''
+            build_type: Release
+          - os: windows-latest
+            environment: all-clang-cl
+            cxx_options: ''
+            build_type: Release
+
+    steps:
+    - uses: actions/checkout@v4
+      with:
+        submodules: recursive
+
+    - uses: actions/cache@v4
+      with:
+        path: .ccache
+        key: ccache-macos-linux-windows-pixi-${{ matrix.os }}-${{ matrix.build_type }}-${{ matrix.cxx_options }}-${{ matrix.environment }}-${{ github.sha }}
+        restore-keys: ccache-macos-linux-windows-pixi-${{ matrix.os }}-${{ matrix.build_type }}-${{ matrix.cxx_options }}-${{ matrix.environment }}-
+
+    - uses: prefix-dev/setup-pixi@v0.8.1
+      with:
+        pixi-version: v0.37.0
+        cache: true
+        environments: ${{ matrix.environment }}
+
+    - name: Build Coal [MacOS/Linux/Windows]
+      env:
+        CMAKE_BUILD_PARALLEL_LEVEL: 2
+        COAL_BUILD_TYPE: ${{ matrix.build_type }}
+        COAL_CXX_FLAGS: ${{ matrix.cxx_options }}
+      run: |
+        pixi run -e ${{ matrix.environment }} test
+
+  check:
+    if: always()
+    name: check-macos-linux-windows-pixi
+
+    needs:
+    - coal-pixi
+
+    runs-on: Ubuntu-latest
+
+    steps:
+    - name: Decide whether the needed jobs succeeded or failed
+      uses: re-actors/alls-green@release/v1
+      with:
+        jobs: ${{ toJSON(needs) }}
diff --git a/.github/workflows/windows-conda-clang.yml b/.github/workflows/windows-conda-clang.yml
deleted file mode 100644
index 2c76d7dcfd3d3381f767b1fb9d2468c83aa1397f..0000000000000000000000000000000000000000
--- a/.github/workflows/windows-conda-clang.yml
+++ /dev/null
@@ -1,92 +0,0 @@
-name: Build Coal for Windows (CLANG) via Conda
-on: [push,pull_request]
-
-jobs:
-  build:
-    runs-on: ${{ matrix.os }}
-    env:
-      CCACHE_BASEDIR: "${GITHUB_WORKSPACE}"
-      CCACHE_DIR: "${GITHUB_WORKSPACE}/.ccache"
-      CCACHE_COMPRESS: true
-      CCACHE_COMPRESSLEVEL: 6
-
-    strategy:
-      fail-fast: false
-      matrix:
-        name: [windows-latest-clang-cl]
-
-        include:
-          - name: windows-latest-clang-cl
-            os: windows-2019
-            compiler: clang-cl
-
-    steps:
-    - uses: actions/checkout@v4
-      with:
-        submodules: recursive
-
-    - uses: actions/cache@v3
-      with:
-        path: .ccache
-        key: ccache-windows-conda-clang-${{ matrix.os }}-${{ matrix.compiler }}-${{ github.sha }}
-        restore-keys: ccache-windows-conda-clang-${{ matrix.os }}-${{ matrix.compiler }}-
-
-    - uses: conda-incubator/setup-miniconda@v3
-      with:
-        activate-environment: coal
-        auto-update-conda: true
-        environment-file: .github/workflows/conda/environment_windows.yml
-        python-version: "3.10"
-        auto-activate-base: false
-
-    - name: Build Coal
-      shell: cmd /C CALL {0}
-      run: |
-        call "%programfiles(x86)%\Microsoft Visual Studio\2019\Enterprise\VC\Auxiliary\Build\vcvarsall.bat" amd64
-        :: Tell Ninja to use clang-cl
-        set CC=clang-cl
-        set CXX=clang-cl
-
-        :: Create build
-        mkdir build
-        pushd build
-
-        cmake ^
-          -G "Ninja" ^
-          -DCMAKE_INSTALL_PREFIX=%CONDA_PREFIX%\Library ^
-          -DCMAKE_CXX_COMPILER_LAUNCHER=ccache ^
-          -DCMAKE_BUILD_TYPE=Release ^
-          -DGENERATE_PYTHON_STUBS=ON ^
-          -DPYTHON_SITELIB=%CONDA_PREFIX%\Lib\site-packages ^
-          -DPYTHON_EXECUTABLE=%CONDA_PREFIX%\python.exe ^
-          -DCOAL_HAS_QHULL=ON ^
-          -DBUILD_PYTHON_INTERFACE=ON ^
-          ..
-        if errorlevel 1 exit 1
-
-        :: Build and Install
-        cmake --build . --config Release --target all
-        if errorlevel 1 exit 1
-
-        :: Testing
-        ctest --output-on-failure -C Release
-        if errorlevel 1 exit 1
-
-        :: Test Python import
-        cmake -E env PYTHONPATH=%cd%\python python -c "import coal"
-        if errorlevel 1 exit 1
-
-  check:
-    if: always()
-    name: check-windows-conda-clang
-
-    needs:
-    - build
-
-    runs-on: Ubuntu-latest
-
-    steps:
-    - name: Decide whether the needed jobs succeeded or failed
-      uses: re-actors/alls-green@release/v1
-      with:
-        jobs: ${{ toJSON(needs) }}
diff --git a/.github/workflows/windows-conda-v142.yml b/.github/workflows/windows-conda-v142.yml
deleted file mode 100644
index d4dddab19ab8e514e220c78af0d70a7f956b3d46..0000000000000000000000000000000000000000
--- a/.github/workflows/windows-conda-v142.yml
+++ /dev/null
@@ -1,89 +0,0 @@
-name: Build Coal for Windows (v142) via Conda
-on: [push,pull_request]
-
-jobs:
-  build:
-    runs-on: ${{ matrix.os }}
-    env:
-      CCACHE_BASEDIR: "${GITHUB_WORKSPACE}"
-      CCACHE_DIR: "${GITHUB_WORKSPACE}/.ccache"
-      CCACHE_COMPRESS: true
-      CCACHE_COMPRESSLEVEL: 6
-
-    strategy:
-      fail-fast: false
-      matrix:
-        name: [windows-latest]
-
-        include:
-          - name: windows-latest
-            os: windows-2019
-
-    steps:
-    - uses: actions/checkout@v4
-      with:
-        submodules: recursive
-
-    - uses: actions/cache@v3
-      with:
-        path: .ccache
-        key: ccache-windows-conda-vs-${{ matrix.os }}-${{ matrix.compiler }}-${{ github.sha }}
-        restore-keys: ccache-windows-conda-vs-${{ matrix.os }}-${{ matrix.compiler }}-
-
-    - uses: conda-incubator/setup-miniconda@v3
-      with:
-        activate-environment: coal
-        auto-update-conda: true
-        environment-file: .github/workflows/conda/environment_windows.yml
-        python-version: "3.10"
-        auto-activate-base: false
-
-    - name: Build Coal
-      shell: cmd /C CALL {0}
-      run: |
-        call "%programfiles(x86)%\Microsoft Visual Studio\2019\Enterprise\VC\Auxiliary\Build\vcvarsall.bat" amd64
-
-        :: Create build
-        mkdir build
-        pushd build
-
-        :: Configure
-        cmake ^
-          -G "Ninja" ^
-          -DCMAKE_INSTALL_PREFIX=%CONDA_PREFIX%\Library ^
-          -DCMAKE_CXX_COMPILER_LAUNCHER=ccache ^
-          -DCMAKE_BUILD_TYPE=Release ^
-          -DGENERATE_PYTHON_STUBS=ON ^
-          -DPYTHON_SITELIB=%CONDA_PREFIX%\Lib\site-packages ^
-          -DPYTHON_EXECUTABLE=%CONDA_PREFIX%\python.exe ^
-          -DCOAL_HAS_QHULL=ON ^
-          -DBUILD_PYTHON_INTERFACE=ON ^
-          ..
-        if errorlevel 1 exit 1
-
-        :: Build and Install
-        cmake --build . --config Release --target all
-        if errorlevel 1 exit 1
-
-        :: Testing
-        ctest --output-on-failure -C Release
-        if errorlevel 1 exit 1
-
-        :: Test Python import
-        cmake -E env PYTHONPATH=%cd%\python python -c "import coal"
-        if errorlevel 1 exit 1
-
-  check:
-    if: always()
-    name: check-windows-conda-v142
-
-    needs:
-    - build
-
-    runs-on: Ubuntu-latest
-
-    steps:
-    - name: Decide whether the needed jobs succeeded or failed
-      uses: re-actors/alls-green@release/v1
-      with:
-        jobs: ${{ toJSON(needs) }}