diff --git a/.github/workflows/ccpp.yml b/.github/workflows/ccpp.yml
index 1536cc9f2273ed0c7ddd89821b4fb01ee1f5eef5..10e1f0a90b24cd6e416a4f41e014a94e61af4299 100644
--- a/.github/workflows/ccpp.yml
+++ b/.github/workflows/ccpp.yml
@@ -1,9 +1,10 @@
 name: C/C++ CI
 
-on: [push]
+on: [push, pull_request]
 
 jobs:
-  build:
+  build-ubuntu:
+    name: Ubuntu/GCC build
     runs-on: ubuntu-latest
     steps:
     - uses: actions/checkout@v3
@@ -27,3 +28,39 @@ jobs:
       run: make
     - name: make check
       run: make check
+
+  build-macos:
+    name: macOS/Clang build
+    runs-on: macos-11
+    steps:
+    - uses: actions/checkout@v3
+    - name: deps
+      run: |
+        brew install msgpack-cxx asio gnutls nettle readline fmt jsoncpp argon2 openssl http-parser cppunit
+    
+    - name: restinio
+      run: |
+        mkdir restinio && cd restinio
+        wget https://github.com/aberaud/restinio/archive/e0a261dd8488246a3cb8bbb3ea781ea5139c3c94.tar.gz
+        ls -l && tar -xzf e0a261dd8488246a3cb8bbb3ea781ea5139c3c94.tar.gz
+        cd restinio-e0a261dd8488246a3cb8bbb3ea781ea5139c3c94/dev
+        cmake -DCMAKE_INSTALL_PREFIX=/usr/local -DRESTINIO_TEST=OFF -DRESTINIO_SAMPLE=OFF \
+                -DRESTINIO_INSTALL_SAMPLES=OFF -DRESTINIO_BENCH=OFF -DRESTINIO_INSTALL_BENCHES=OFF \
+                -DRESTINIO_FIND_DEPS=ON -DRESTINIO_ALLOW_SOBJECTIZER=Off -DRESTINIO_USE_BOOST_ASIO=none .
+        make -j8 && sudo make install
+        cd ../../.. && rm -rf restinio
+
+    - name: cmake
+      run: |
+        mkdir build && cd build
+        export PATH="/opt/homebrew/opt/openssl@3/bin:$PATH"
+        export LDFLAGS="-L/usr/local/opt/openssl@3/lib"
+        export CPPFLAGS="-I/usr/local/opt/openssl@3/include"
+        export PKG_CONFIG_PATH="/usr/local/opt/openssl@3/lib/pkgconfig"
+        cmake .. -DCMAKE_INSTALL_PREFIX=/usr/local -DCMAKE_BUILD_TYPE=Debug \
+                 -DOPENDHT_C=On -DOPENDHT_TESTS=On -DOPENDHT_PEER_DISCOVERY=On -DOPENDHT_PYTHON=Off \
+                 -DOPENDHT_TOOLS=On -DOPENDHT_PROXY_SERVER=On -DOPENDHT_PROXY_CLIENT=On
+
+    - name: make
+      run: cd build && make
+