diff --git a/.gitlab-ci.yml b/.gitlab-ci.yml
index 41445bf3804973253671adb4091c62785ce18164..6a59a0cf89383e3f8da066f11ce52a0b7a31429e 100644
--- a/.gitlab-ci.yml
+++ b/.gitlab-ci.yml
@@ -25,6 +25,7 @@ variables:
 stages:
   - build
   - lint
+  - release
 
 # Stage build
 
@@ -56,4 +57,26 @@ find:
   tags:
     - miosix
   script:
-    - ./scripts/linter.py --find src
\ No newline at end of file
+    - ./scripts/linter.py --find src
+
+# Stage release
+
+release:
+  stage: release
+  only:
+    - main
+  tags:
+    - qt
+  script:
+    - ./sbs
+    - cp build/groundstation linuxdeploy/
+    - cd linuxdeploy
+    - /opt/5.15.2/gcc_64/bin/linuxdeployqt groundstation -qmake=/opt/5.15.2/gcc_64/bin/qmake -appimage
+  artifacts:
+    name: Linux AppImage
+    paths:
+      - linuxdeploy/Ground_Station-${CI_COMMIT_SHORT_SHA::-1}-x86_64.AppImage
+  release:
+    tag_name: latest-$CI_COMMIT_SHORT_SHA
+    name: Continuous build
+    description: Latest build
diff --git a/.vscode/c_cpp_properties.json b/.vscode/c_cpp_properties.json
index 5180384afd2347367d6bd8c42f6f9ed1f65586ab..ba6a4c32415e53627cc23f5e75121432d1c84745 100644
--- a/.vscode/c_cpp_properties.json
+++ b/.vscode/c_cpp_properties.json
@@ -5,7 +5,7 @@
             "includePath": [
                 "${workspaceFolder}/src/shared",
                 "${workspaceFolder}/libs/mavlink-skyward-lib",
-                "~/Qt/5.15.2/**"
+                "/opt/5.15.2/gcc_64/include"
             ],
             "defines": [],
             "cStandard": "gnu17",
diff --git a/.vscode/settings.json b/.vscode/settings.json
index a68dd339b84a62ed3dc7bae3e4a9d77e403ba158..ab0ffa7b036c5978178a143a7e41ef839468ee62 100644
--- a/.vscode/settings.json
+++ b/.vscode/settings.json
@@ -164,7 +164,9 @@
         "qtnetworkauth": "cpp",
         "qtscript": "cpp",
         "qtsvg": "cpp",
-        "qtvirtualkeyboard": "cpp"
+        "qtvirtualkeyboard": "cpp",
+        "qabstractbutton": "cpp",
+        "qmetatype": "cpp"
     },
     "editor.defaultFormatter": "ms-vscode.cpptools",
     "[xml]": {
diff --git a/linuxdeploy/SkywardLogo.png b/linuxdeploy/SkywardLogo.png
new file mode 100644
index 0000000000000000000000000000000000000000..b25c015573f3ab47a4a63c20277e24dfb58b7fa7
Binary files /dev/null and b/linuxdeploy/SkywardLogo.png differ
diff --git a/linuxdeploy/groundstation.desktop b/linuxdeploy/groundstation.desktop
new file mode 100644
index 0000000000000000000000000000000000000000..0d7a6dc3b184695ba0cc514351e1296d98efc392
--- /dev/null
+++ b/linuxdeploy/groundstation.desktop
@@ -0,0 +1,8 @@
+[Desktop Entry]
+Type=Application
+Name=Ground Station
+Exec=groundstation
+Icon=SkywardLogo
+Categories=Utility;
+Terminal=false
+X-AppImage-Version=d16258c