HowTo 2026

2026 OpenClaw MeshMac : Matrix Webhook sur Mac distant — états de build partagés et notification multi-nœuds

2026.04.01 Équipe Meshmac 9 min de lecture

Sur un pool MeshMac, la CI peut s’exécuter sur n’importe quel nœud : l’équipe a besoin d’une seule salle Matrix qui reflète l’état des builds sans ouvrir SSH à chaque fois. Ce guide propose un chemin minimal reproductible : passerelle OpenClaw, jetons et secrets, webhook Matrix ou Application Service, signature ou moindre privilège, un tableau de correspondance des champs CI, puis une FAQ quand rien n’apparaît dans le fil — en gardant la collaboration multi-nœuds visible pour tous les observateurs.

Sommaire

Objectif : notifier la collaboration multi-nœuds dans un seul salon

L’erreur fréquente est de laisser chaque Mac poster sous un compte ou un pont différent : la timeline devient illisible et les états se contredisent. La bonne pratique 2026 consiste à centraliser l’émission Matrix dans une passerelle unique qui consomme la même file de tâches que tous les workers, comme dans notre guide déploiement unifié et synchronisation de la file sur MeshMac. Ainsi, que le build tourne sur le nœud A ou B, l’équipe voit la même progression et les mêmes transitions queuedrunningsucceeded ou failed.

Pour cadrer les webhooks HTTP en amont (validation, Bearer, idempotence), recoupez avec webhook OpenClaw MeshMac : build partagé et notifications : les mêmes garde-fous s’appliquent avant d’atteindre Matrix.

Webhook Matrix entrant ou Application Service : que choisir ?

Démarrez par un POST HTTP vers un bridge qui transforme le JSON en m.room.message : c’est le plus rapide sur un homeserver unique. Passez à une Application Service lorsque vous avez besoin d’utilisateurs fantômes, de transactions riches ou d’un routage multi-salles stable — au prix d’un fichier d’enregistrement yaml, de paires de jetons et d’une discipline de rechargement Synapse.

Modèle Idéal pour Compromis
HTTP entrant → bridgeMise en route immédiate, une salle d’état CIPeu de contrôle de schéma côté Matrix ; validez le JSON vous-même avant émission
Application Service enregistréeRoutage stable, utilisateurs dédiés, charge utile structuréePlus de pièces mobiles : yaml, as_token / hs_token, espaces de noms

Installation de la passerelle et jetons

Exécutez la passerelle OpenClaw sur un hôte stable joignable depuis Synapse et depuis la sortie réseau de votre CI. Fixez OPENCLAW_CONFIG_ROOT, montez la configuration en lecture seule et gardez les secrets Matrix hors Git. Créez un utilisateur « bot » de build, faites-le rejoindre la salle d’équipe une fois, stockez son jeton d’accès avec des permissions fichiers du type 0440 pour l’utilisateur système de la passerelle uniquement : les workers sur les Mac du pool restent sans jeton Matrix et ne font qu’exécuter la file. Redémarrez la passerelle après chaque rotation de secret pour que tous les nœuds partagent le même chemin de notification. La cadence de rotation et le lien avec les canaux type IM sont détaillés dans canaux d’alerte, rotation des jetons et droits minimaux.

  • URL du homeserver : TLS vérifié ; en auto-hébergé, épinglage d’empreinte si besoin.
  • Identifiant de salle : préférer l’id complet !xxx:domain à seul un alias.
  • Identifiant de corrélation : propagez de la CI → OpenClaw → corps Matrix pour joindre les journaux multi-nœuds.

Étapes Matrix Webhook et Application Service

  1. Exposer une route TLS du type /hooks/matrix/build-status derrière votre reverse proxy.
  2. Enregistrer l’intégration via le gestionnaire d’intégrations ou app_service_config_files pointant vers votre yaml d’Application Service.
  3. Renseigner id, url, as_token, hs_token, et les espaces de noms (ex. préfixe local buildbot_).
  4. Recharger Synapse, envoyer un POST de test signé ou authentifié, vérifier la présence d’un m.room.message dans la salle cible.
  5. Documenter dans le sujet ou le pin que chaque notification doit inclure mesh_node_id pour la lisibilité du pool multi-Mac.

Signature des messages ou validation à moindre privilège

Chaque POST vers la passerelle doit être authentifié : calculez un HMAC-SHA256 sur les octets bruts du corps et comparez avec une primitive en temps constant (équivalent de crypto.timingSafeEqual). Si le fournisseur CI ne signe pas, combinez secret Bearer et liste d’IP de sortie des runners. Rejetez les horodatages trop anciens (par ex. plus de cinq minutes) pour limiter la relecture.

Côté Matrix, restreignez le jeton utilisateur à l’envoi dans une seule salle : pas d’invitations globales ni d’administration de comptes. Ne logguez jamais l’en-tête Authorization en clair. Effectuez la vérification uniquement sur la passerelle, pas sur chaque nœud exécuteur : les Mac distants restent des workers à faible surface d’attaque.

Tableau de correspondance des champs d’état CI

Normalisez le JSON fournisseur (GitHub Actions, GitLab CI, outil interne) avant de formater le message Matrix en Markdown ou texte brut. Le tableau suivant fixe une convention unique pour toute l’équipe et pour tous les nœuds du pool.

Champ source CI Clé passerelle Usage dans le message Matrix
Nom du workflow / pipelineworkflowPremière ligne en gras pour identifier l’automatisation
Statut ou conclusionstateMapper vers file, en cours, succès ou échec avec emojis convenus par l’équipe
Branche ou ref de têtebranchDeuxième ligne : visibilité release vs fonctionnalité
SHA de commitcommitPréfixe court (7 caractères) lié à l’URL du run
html_url / URL web du jobrun_urlLien cliquable pour creuser les journaux du nœud
Nom du runner ou label MeshMacmesh_node_idPied de message : quel Mac du pool a exécuté le job

FAQ dépannage : aucun message reçu

La CI indique 200/202 mais la salle Matrix reste vide
Vérifiez l’appartenance du bot à la salle, les journaux du bridge (corps vide, template avec conclusion nulle), et rejouez avec un workflow de test minimal.
Erreurs de signature Application Service
Diff des valeurs hs_token entre Synapse et le yaml disque, supprimez les retours ligne parasites dans les secrets, testez en curl depuis l’hôte homeserver pour écarter un proxy TLS intermédiaire.
Seuls certains nœuds « notifient »
Des runners contournent la passerelle partagée : unifiez la variable d’environnement d’URL webhook et restreignez la sortie CI vers l’ingress approuvé.
Doublons à chaque transition
Dédupliquez avec une clé run_id + state conservée environ 72 h dans Redis ou SQLite avant d’émettre le texte Matrix.

En bref

Émettez vers Matrix uniquement depuis la passerelle, vérifiez chaque appelant HTTP, mappez les champs CI une fois pour toutes et affichez systématiquement mesh_node_id pour que la collaboration multi-nœuds reste lisible. Pour la suite : accueil Meshmac, blog, centre d’aide et page OpenClaw.

Matrix · MeshMac multi-nœuds

Une salle Matrix pour tout le pool Mac

Branchez Matrix une fois : chaque nœud distant contribue à la même timeline d’état de build. Parcourez l’accueil pour comparer les offres, le blog pour les guides cluster, le centre d’aide pour SSH/VNC, puis louez le Mac adapté à votre équipe.

Notifications partagées Multi-nœuds MeshMac Guides & aide
Louer un Mac