diff --git a/.forgejo/workflows/CI.yml b/.forgejo/workflows/CI.yml
index 79673c2..34fbbe4 100644
--- a/.forgejo/workflows/CI.yml
+++ b/.forgejo/workflows/CI.yml
@@ -9,27 +9,52 @@ on:
 jobs:
   test:
     runs-on: docker
-    
+
     strategy:
       matrix:
         lisp:
           - sbcl-bin
-          
+
     env:
       LISP: ${{ matrix.lisp }}
 
     steps:
       - uses: actions/checkout@v4
-      - name: Install Roswell
+      
+      - name: Restore cache
+        id: restore-cache
+        uses: actions/cache/restore@v4
+        with:
+          path: |
+            /usr/local/bin/ros
+            ~/.roswell
+            ~/.config/common-lisp/source-registry.conf.d
+            ~/lisp
+          key: roswell-${{ runner.os }}-${{ matrix.lisp }}
+
+      - name: Install Roswell and Qlot
+        if: steps.restore-cache.outputs.cache-hit != 'true'
         env:
           LISP: ${{ matrix.lisp }}
         run: |
           curl -L https://raw.githubusercontent.com/roswell/roswell/master/scripts/install-for-ci.sh | sh
-      - name: Install Qlot
-        run: ros install fukamachi/qlot
+          ros install fukamachi/qlot
+
+      - name: Save cache
+        id: save-cache
+        uses: actions/cache/save@v4
+        with:
+          path: |
+            /usr/local/bin/ros
+            ~/.roswell
+            ~/.config/common-lisp/source-registry.conf.d
+            ~/lisp
+          key: ${{ steps.restore-cache.outputs.cache-primary-key }}
+
       - name: Install dependencies
         run: |
           PATH="~/.roswell/bin:$PATH"
           qlot install
+      
       - name: Run tests
         run: .qlot/bin/rove hsx.asd