diff --git a/.github/workflows/mpremote.yml b/.github/workflows/mpremote.yml
new file mode 100644
index 0000000000000000000000000000000000000000..e5fd47350f59836ef06e6b8397486386aed6a86d
--- /dev/null
+++ b/.github/workflows/mpremote.yml
@@ -0,0 +1,31 @@
+name: Package mpremote
+
+on:
+  push:
+  pull_request:
+    paths:
+      - '.github/workflows/*.yml'
+      - 'tools/**'
+
+jobs:
+  build:
+    runs-on: ubuntu-latest
+    steps:
+    - uses: actions/checkout@v2
+      with:
+        # Version is determined from git,
+        # should be deep enough to get to latest tag
+        fetch-depth: '1000'
+    - run: |
+        git fetch --prune --unshallow --tags
+    - uses: actions/setup-python@v1
+    - name: Install build tools
+      run: pip install build
+    - name: Build mpremote wheel
+      run: cd tools/mpremote && python -m build --wheel
+    - name: Archive mpremote wheel
+      uses: actions/upload-artifact@v2
+      with:
+        name: mpremote
+        path: |
+          tools/mpremote/dist/mpremote*.whl