diff --git a/.github/CODEOWNERS b/.github/CODEOWNERS
new file mode 100644
index 0000000..bbeed9a
--- /dev/null
+++ b/.github/CODEOWNERS
@@ -0,0 +1 @@
+/.github/workflows @quicksilver/developers
diff --git a/.github/workflows/cd.yml b/.github/workflows/cd.yml
new file mode 100644
index 0000000..c9c2b94
--- /dev/null
+++ b/.github/workflows/cd.yml
@@ -0,0 +1,25 @@
+---
+name: Deploy
+
+on:
+  push:
+    branches:
+      - main
+
+jobs:
+  deploy:
+    runs-on: ubuntu-22.04
+    steps:
+      - uses: actions/checkout@v2
+        with:
+          submodules: recursive
+      - name: Pull changes
+        env:
+          SERVER: ${{ secrets.SERVER }}
+          PORT: ${{ secrets.PORT }}
+          SSH_KEY: ${{secrets.SSH_KEY}}
+        run: |
+          echo "${SSH_KEY}" > /tmp/key
+          chmod 0600 /tmp/key
+
+          ssh -T "${SERVER}" -p "${PORT}" -i /tmp/key -o StrictHostKeyChecking=no "${GITHUB_REPOSITORY}"
diff --git a/.github/workflows/ci.yml b/.github/workflows/ci.yml
new file mode 100644
index 0000000..b78efe0
--- /dev/null
+++ b/.github/workflows/ci.yml
@@ -0,0 +1,19 @@
+---
+name: Check
+
+on:
+  push:
+
+jobs:
+  build:
+    runs-on: ubuntu-22.04
+    steps:
+      - uses: actions/checkout@v2
+        with:
+          submodules: recursive
+      - name: Build docs
+        run: |
+          python3 -m pip install --upgrade pip
+          python3 -m pip install -r requirements.txt
+          python3 plugindocs.py
+          python3 -m mkdocs build