Les équipes qui exploitent une passerelle OpenClaw sur Mac Apple Silicon loué veulent la même chose, qu’il s’agisse de chat, de résumés CI ou de RAG : un daemon 7 × 24, un port loopback stable (par défaut 18789), un routage des modèles prévisible, et un scénario de rechargement qui évite de couper chaque webhook Slack. Ce tutoriel s’aligne sur les attentes 2026.4.x : Node 22.16+ (nous recommandons Node 24 lorsque votre politique le permet), installation via script officiel ou npm install -g, openclaw onboard --install-daemon, gateway.reload.mode à hybrid, et une gestion explicite de OPENCLAW_GATEWAY_TOKEN à côté d’une écoute 127.0.0.1. Enchaînez avec le durcissement passerelle, le dépannage Model Auth, le pré-tirage embeddings / RAG et l’index du blog — lecture sans compte.

Pourquoi un Mac distant hébergé change la donne

Un portable dort ; une image CI partagée repart à zéro. Un Mac distant dédié offre un propriétaire launchd stable, un disque persistant pour caches et configuration, et un point unique où le rechargement hybride peut réconcilier les éditions de fichiers avec les sessions en cours. C’est le sens opérationnel d’un hébergement passerelle 7 × 24 : moins de sessions SSH nocturnes pour « redémarrer OpenClaw », et une frontière plus nette entre le trafic plan de contrôle loopback et ce que vous tunnelisez vers l’équipe.

Prérequis environnement (checklist)

  • Node.js : 22.16 ou plus récent sur l’hôte passerelle ; standardisez sur Node 24 dès que votre base de sécurité suit cette LTS.
  • Rôle macOS : un utilisateur non invité qui possédera le plist, le répertoire de configuration et les fichiers de secrets modèle.
  • Réseau : HTTPS sortant vers les fournisseurs ciblés par votre table de routage ; proxy ou WireGuard et liste blanche de sortie documentés.
  • Chaîne jeton + sondes : décider où vit OPENCLAW_GATEWAY_TOKEN (coffre, EnvironmentVariables du plist, injection CI) avant d’ouvrir des tableaux de bord via tunnel SSH — c’est le lien minimal entre authentification, status et sondes loopback.

Installer OpenClaw et corriger le PATH

Utilisez soit l’installateur curl décrit dans la documentation officielle actuelle, soit un paquet global épinglé :

node -v   # attendu : v22.16+ ; préférer v24.x après QA interne
npm install -g openclaw@<votre-version-figée>
which openclaw
openclaw --version

Si which openclaw répond dans zsh interactif mais pas dans un shell non interactif, le bin npm global manque au PATH du service. Affichez npm prefix -g, ajoutez $(npm prefix -g)/bin au même PATH que launchd, ou placez un lien symbolique vers /usr/local/bin. Cette omission seule explique une grande partie des tickets « ça marche en SSH mais pas en cron » sur Mac hébergés.

Assistant et daemon : openclaw onboard --install-daemon

Exécutez openclaw onboard --install-daemon sous l’utilisateur qui portera le trafic de production. L’assistant collecte canaux, modèles par défaut et socle d’auth ; le drapeau enregistre launchd pour survivre aux déconnexions et aux reboots. Lancer openclaw gateway dans tmux reste acceptable pour un lab, mais ce n’est pas une base reproductible pour tester le hybrid reload : propriété des signaux et des redémarrages différente d’un service géré.

Vérifier gateway status et le port 18789

Après onboarding, prouvez la santé avant de toucher au routage :

openclaw gateway status
# ajoutez --json ou --deep si votre build les documente

Vérifiez que le socket en écoute correspond au défaut documenté 127.0.0.1:18789 sauf déplacement volontaire. Un décalage entre l’URL interne partagée et l’adresse réelle nourrit les « le jeton marche dans mon curl mais pas dans cron ». Si vous gatez les déploiements en CI, répliquez les mêmes contrôles que dans openclaw config validate en porte CI.

Scénario rechargement à chaud : mode hybrid et changement de routage

Objectif : modifier le modèle par défaut, un alias ou une route par espace de travail, enregistrer, et constater que la passerelle applique la route sans tuer froidement le processus — dans les limites que 2026.4.x classe comme rechargeables à chaud.

  1. Régler gateway.reload.mode sur hybrid dans la configuration passerelle (imbrication exacte selon le schéma visé par openclaw config validate sur votre semver).
  2. Lancer la validation si votre paquet fournit openclaw config validate ; corrigez les chemins ou clés invalides avant de vous fier à la sémantique de reload.
  3. Éditer la route modèle (ID, table fournisseur ou surcharge par workspace).
  4. Enregistrer sur le même chemin que celui lu par le daemon (attention au décalage OPENCLAW_HOME entre SSH et plist).
  5. Réexécuter openclaw gateway status et une courte requête de complétion ciblant la nouvelle route ; corréler journaux fournisseur ou métadonnées de réponse.

Fragment illustratif (à recouper avec votre schéma) :

{
  "gateway": {
    "reload": { "mode": "hybrid" }
  }
}

Si le hybrid reload n’applique pas le changement, traitez-le comme signal : soit le champ figure dans la liste « redémarrage froid » de votre correctif, soit le daemon lit un autre fichier que votre session d’édition. Croisez avec compétences, rollback et doctor pour fusionner openclaw doctor et la sortie status tôt dans le diagnostic.

OPENCLAW_GATEWAY_TOKEN et le périmètre d’exposition loopback

Lier le socket passerelle à la loopback supprime l’écoute sur l’Internet grand public ; cela ne supprime pas le besoin d’accès authentifié. Définissez OPENCLAW_GATEWAY_TOKEN pour l’automatisation locale, les sondes de santé et tout reverse proxy qui termine devant la passerelle. Lorsque des collègues atteignent l’UI via port forwarding SSH, ils héritent de la confiance de votre machine — documentez que le jeton reste un secret, faites-le tourner comme une clé cloud, et gardez TLS et listes d’accès au bord du tunnel, comme dans durcissement passerelle.

Notes 2026.4.x (bref, hors marketing)

Les travaux récents sur la passerelle en 2026.4.x resserrent le comportement fail-closed autour de l’auth et de la configuration d’écoute : lorsque la validation ne peut pas prouver une combinaison sûre, « refuser de démarrer » limite l’exposition anonyme accidentelle sur Mac partagés. Pour les plugins communautaires, surveillez les avertissements de dépendances pair à pair pendant npm install : alignez les versions sur la matrice supportée par la passerelle pour éviter des erreurs de résolution de modules au milieu d’un reload. Les notes de version détaillent ces points ; ici il s’agit seulement d’ajouter validate + épinglage à votre checklist.

FAQ — erreurs fréquentes

Le port 18789 est déjà utilisé

Identifiez le processus avec lsof -iTCP:18789 -sTCP:LISTEN. Arrêtez une seconde instance, une session tmux orpheline ou un environnement de lab. Si vous devez colocaliser, changez le port dans la config et mettez à jour tunnels, sondes et documentation en bloc.

Jeton passerelle absent ou « clé invalide » sur les sondes

Vérifiez que OPENCLAW_GATEWAY_TOKEN est présent dans l’environnement du daemon, pas seulement dans votre shell SSH. Après rotation, un redémarrage unique du service peut être nécessaire selon la version pour ingérer le secret, puis retestez avec les mêmes en-têtes que la CI.

Hybrid reload silencieux — routage inchangé

Contrôlez gateway.reload.mode, le chemin utilisateur et openclaw config validate. Si votre semver impose un redémarrage pour ce champ, planifiez un court rebond launchd en fenêtre de maintenance sur le Mac hébergé.

Checklist reproductible

Quand installation, PATH, daemon, statut, hybrid reload et politique de jeton sont écrits noir sur blanc, les équipes distantes arrêtent de deviner quel utilisateur possède la passerelle réellement en cours. C’est le gain opérationnel d’un Mac Apple Silicon dédié chez MacPull matériel toujours allumé où OpenClaw peut conserver sockets, caches et configuration validée à travers des cycles de reload.

Pour aller plus loin : centre d’aide, tarifs et achat, accueil MacPull, blog technique et articles OpenClaw déjà publiés — dont Model Auth et embeddings / RAG.

Héberger OpenClaw 7 × 24 sur un Mac distant

Figez 2026.4.x, gardez le hybrid reload et les jetons passerelle sur un socle Apple Silicon stable.