OpenClaw multi-locataire sur clustervps cesse d’être un prototype dès que chaque Mac partage le même contrat de chemins, le même identifiant de build et une définition unique de « prêt à recevoir du trafic ». Le cluster minimal reproductible, c’est une convention de répertoires plus une sonde fusionnée qui sait déjà lire la sortie Doctor et la fenêtre digest des échecs webhook sans saturer l’astreinte.

Ce guide suppose trois Mac clustervps qui coopèrent : deux passerelles orientées locataires et un nœud notificateur qui agrège les échecs webhook sur des fenêtres glissantes. L’installation reste volontairement ennuyeuse : mêmes comptes système, mêmes modèles launchd issus de votre image de référence, puis seulement après vous superposez les fragments YAML par client. L’orchestration veut dire un git pull étiqueté suivi d’un rechargement contrôlé, jamais un copier-coller nocturne hors journal d’audit. Pour le dépannage, gardez cet ordre : dérive des répertoires, décalage de version, JSON de sonde, fenêtre de chevauchement des jetons. En parallèle, reliez la couche réseau au guide OpenClaw multi-AZ sur clustervps et croisez vos marges disque avec les forfaits Mac publiés. Si vous synchronisez déjà des artefacts entre workers, la matrice rsync multi-nœuds reste le complément naturel pour éviter que la promotion des fichiers ne contredise vos fragments locataires.

Conventions de répertoires

Traitez chaque locataire comme une tranche, pas comme une branche logicielle divergente. Sur chaque hôte, reflétez /etc/openclaw/tenants/<locataire>/{gateway,doctor,webhook}.d/ afin que les fichiers partiels se composent dans un ordre déterministe. Les fragments passerelle décrivent écouteurs, timeouts et pondérations amont ; les fragments Doctor listent les invariants que launchd doit prouver toutes les cinq minutes ; les fragments webhook ne contiennent que des URL, budgets de retry et politiques d’idempotence. Ne mélangez jamais les secrets dans le dépôt YAML : montez /var/db/openclaw/secrets/<locataire> avec ACL POSIX afin que git diff reste lisible pour les opérateurs sans exposer de bearer.

  • Ordre d’inclusion : préfixez les fichiers 10-, 20- pour que deux équipes livrant le même locataire prévoient la même fusion finale.
  • Parité des nœuds : rsync des fragments depuis un Mac de build vers les passerelles avant launchctl kickstart ; laissez les files SQLite locales hors du chemin synchronisé.
  • Retour arrière : conservez le répertoire précédent derrière un lien symbolique .prev pour qu’un mauvais merge se résume à ln -nfs et un redémarrage contrôlé.

Photographiez l’arbre attendu à côté des captures d’écran de la base d’aide afin que les nouvelles recrues arrêtent d’inventer des chemins parallèles. Besoin d’un siège bare metal supplémentaire pour un locataire de préproduction ? Le tunnel achat reste accessible sans imposer une connexion console préalable.

Verrouillage de version

La CLI et le démon OpenClaw évoluent vite ; un mélange silencieux de builds entre passerelles est le raccourci vers des schémas de fragments incompatibles. Écrivez openclaw.lock à côté du dépôt d’infra avec le hash du binaire, la build Swift et la version de l’agent satellite. Votre script de déploiement doit refuser tout reload si la sortie de openclaw version --json sur le Mac cible ne recoupe pas le lockfile — y compris après une maintenance Apple automatique.

Verrouillez la toolchain Swift et les outils en ligne de commande Xcode le même jour que vous montez de version OpenClaw : les mises à jour macOS silencieuses qui sautent de version Swift ont tué davantage de clusters que des pics de trafic.

Flux de promotion : bump du lock sur une passerelle canari, exécution de Doctor avec --tenant acme, rejouer des fixtures webhook enregistrées, puis diffusion du lockfile vers les pairs via votre outil de gestion de configuration. Si un nœud dérive, bloquez le trafic côté équilibreur plutôt que d’espérer que YAML « passe quand même ».

Fusion des sondes de santé

Équilibreurs, agents Kubernetes et humains doivent tous interroger une seule URL de readiness par passerelle. Ce gestionnaire fusionne trois signaux : la sortie JSON de Doctor, la pression disque et file locale, puis le dernier bloc digest du notificateur pour transformer une panne partenaire systémique en quelques lignes lisibles au lieu de centaines de retries bruts. Le digest n’est pas une seconde sonde : c’est une vue en lecture seule maintenue par le notificateur et consommée ici.

#!/usr/bin/env bash
set -euo pipefail
/usr/local/bin/openclaw doctor --tenant "${TENANT}" --json >/tmp/doctor.json
/usr/bin/curl -fsS --max-time 3 "http://127.0.0.1:9099/v1/webhook-digest" -o /tmp/digest.json
/usr/sbin/diskutil apfs list | /usr/bin/grep -q "Container"
/usr/bin/python3 - <<'PY'
import json,sys
d=json.load(open("/tmp/doctor.json"));g=json.load(open("/tmp/digest.json"))
print(json.dumps({"doctor":d.get("ok"),"digest_age_sec":g.get("age_sec"),"failures":g.get("top",[])}))
PY

Les passerelles émettent des échecs webhook structurés vers le notificateur via une socket UNIX loopback ; celui-ci déduplique les familles de codes HTTP, roule des fenêtres de cinq minutes et expose l’API digest consommée ci-dessus. Diffusez les synthèses Slack ou e-mail uniquement depuis le notificateur pour que les passerelles restent focalisées sur TLS et la planification. Lorsque Doctor signale un jaune mais que les webhooks sont propres, renvoyez HTTP 200 avec "status":"degraded" pour laisser passer le trafic tout en jaunissant les tableaux de bord.

Rotation des jetons

La rotation est un exercice de plan de données : émettez des bearer fantômes dans votre coffre, matérialisez-les en token.next à côté de token.current, et configurez EnvironmentFiles launchd pour lire les deux fichiers jusqu’à validation complète. Les passerelles canari chargent d’abord token.next, envoient des livraisons webhook synthétiques, puis promouvoient par renommage atomique afin qu’aucun processus ne lise un secret à moitié écrit.

Conservez un chevauchement d’au moins douze heures sur l’ensemble des Mac, consignez acteur et numéro de ticket sur chaque permutation, et révoquez l’ancien secret seulement après deux cycles de sonde composite au vert. Ramenez le calendrier à trente jours dès que les hooks traversent l’Internet public ou qu’un fournisseur divulgue un risque multi-locataire. Associez la planification à une feuille simple indiquant quel nœud a acquitté la dernière rotation avec succès : aucune équipe ne doit supposer qu’un renouvellement silencieux s’est bien passé.

Liste d’étapes

  1. Installer la base. Provisonnez trois Mac clustervps avec la même build macOS, installez OpenClaw depuis l’archive citée dans openclaw.lock et vérifiez que openclaw version --json concorde sur chaque hôte.
  2. Matérialiser les répertoires. Créez les chemins de fragments par locataire, synchronisez le YAML numéroté depuis git et validez les includes avec openclaw config lint --tenant <id> avant de toucher à launchd.
  3. Orchestrer le reload. Chargez les unités plist, démarrez d’abord le notificateur puis les passerelles ; confirmez que l’API digest renvoie un age_sec sous votre SLO.
  4. Fusionner les sondes. Pointez l’équilibreur vers la route readiness composite, provoquez volontairement un échec webhook canari et vérifiez que le digest affiche une ligne résumée plutôt qu’un spam d’événements.
  5. Répéter la rotation. Stadez les jetons fantômes, rejouez des livraisons synthétiques, promouvez de façon atomique puis révoquez les secrets historiques après sondes vertes et entrées de journal d’audit.
  6. Dépanner vite. Si les sondes clignotent, différenciez les répertoires entre nœuds, relisez les lockfiles, inspectez la fraîcheur du digest puis les fenêtres de chevauchement des jetons — seulement ensuite ouvrez un ticket fournisseur.

Réponses rapides : les fragments vivent dans git, jamais les secrets. Les échecs Doctor doivent bloquer la readiness sauf fenêtre de maintenance explicitement marquée pour un locataire. Les juniors peuvent répéter les rotations sur des locataires de préproduction avec jetons fantômes et fixtures enregistrées sans toucher aux files de production. Revenez à l’accueil clustervps pour du contexte public avant toute ouverture de console.

Guide opérationnel uniquement. Les détails de déploiement OpenClaw varient selon les versions ; validez les drapeaux auprès du build installé. Les timings réseau dépendent des chemins FAI : ce sont des objectifs d’ingénierie, pas des garanties contractuelles.
Sans connexion préalable

Scaler vos passerelles Mac comme vous structurez vos idées

Parcourez les forfaits, parcourez la aide en ligne ou revenez à l’accueil : ces liens restent publics afin que votre équipe s’aligne avant toute authentification console.

Voir les forfaits Mac Ouvrir l’aide