2026 OpenClaw sur Mac Mini loué : isoler la production automatisée et l’agent expérimental avec partitions utilisateur et launchd

Lecture : 9 min

Sur un Mac Mini loué, mélanger OpenClaw 7×24 et essais casse souvent la prod : tokens partagés, caches confondus, journaux inutilisables. Ce guide décrit une isolation d’environnement reproductible pour l’automatisation longue durée : comptes macOS distincts, labels launchd explicites dans des plist séparés, journaux cloisonnés et étapes de mise à jour documentées. Pour les quotas détaillés, ouvrez OpenClaw 7×24 launchd, puis la page du blog et le centre d’aide RunMini.

Trois ruptures fréquentes avant même d’isoler quoi que ce soit

  1. Droits POSIX mélangés : scripts lancés depuis le même compte écrasent fichiers de lock et caches npm partagés.
  2. Labels launchd ambigus : un doublon Label empêche launchctl bootstrap ou charge le mauvais binaire silencieusement.
  3. Observabilité unique : sans chemins StandardOutPath séparés, les alertes 7×24 deviennent inactionnables.

Matrice décisionnelle : prod stable contre lab agile

Critère Automatisation production Agent expérimental
Compte macOS Compte service dédié, accès SSH restreint Compte développeur ou second utilisateur local
Label launchd com.votredomaine.openclaw.prod com.votredomaine.openclaw.lab
Politique de redémarrage KeepAlive strict, ThrottleInterval modéré KeepAlive souple, arrêt manuel fréquent
Risque acceptable Zéro régression métier, validation avant déploiement Crashes et branches git instables tolérés

La prod prend l’essentiel de la RAM unifiée ; le lab reste plafonné pour ne pas couper le pipeline nocturne.

Checklist avant la première mise en service

  1. Deux comptes macOS, arbres ~/openclaw-prod et ~/openclaw-lab.
  2. Installations OpenClaw isolées sans lien symbolique croisé.
  3. Deux plist dans ~/Library/LaunchAgents, labels et variables (ports, tokens) distincts.
  4. ~/Logs par compte, droits propriétaire.
  5. launchctl bootstrap puis launchctl print.
  6. Rotation logs + webhook sur la prod ; plist versionnés avant upgrade.

Partitions et conventions de répertoires

La partition fiable est un compte macOS dédié : ~/Library, trousseaux et LaunchAgents restent cloisonnés. Mappez WorkingDirectory par utilisateur ; évitez les sockets partagées sous /tmp. Documentez les chemins absolus pour les redémarrages 7×24 et gardez les mêmes conventions sur chaque machine louée afin de cloner votre runbook sans surprise.

Deux unités launchd modèle (labels et chemins distincts)

Variez Label, sorties et répertoires de travail.

Modèle A — production

<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE plist PUBLIC "-//Apple//DTD PLIST 1.0//EN"
 "http://www.apple.com/DTDs/PropertyList-1.0.dtd">
<plist version="1.0"><dict>
  <key>Label</key><string>com.exemple.openclaw.prod</string>
  <key>ProgramArguments</key><array>
    <string>/usr/local/bin/openclaw</string><string>run</string>
  </array>
  <key>WorkingDirectory</key><string>/Users/svc_prod/openclaw-prod</string>
  <key>StandardOutPath</key><string>/Users/svc_prod/Logs/openclaw-prod.log</string>
  <key>StandardErrorPath</key><string>/Users/svc_prod/Logs/openclaw-prod.err</string>
  <key>KeepAlive</key><true/>
  <key>RunAtLoad</key><true/>
  <key>ThrottleInterval</key><integer>10</integer>
</dict></plist>

Modèle B — laboratoire

<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE plist PUBLIC "-//Apple//DTD PLIST 1.0//EN"
 "http://www.apple.com/DTDs/PropertyList-1.0.dtd">
<plist version="1.0"><dict>
  <key>Label</key><string>com.exemple.openclaw.lab</string>
  <key>ProgramArguments</key><array>
    <string>/usr/local/bin/openclaw</string><string>run</string>
    <string>--profile</string><string>experimental</string>
  </array>
  <key>WorkingDirectory</key><string>/Users/dev_lab/openclaw-lab</string>
  <key>StandardOutPath</key><string>/Users/dev_lab/Logs/openclaw-lab.log</string>
  <key>StandardErrorPath</key><string>/Users/dev_lab/Logs/openclaw-lab.err</string>
  <key>KeepAlive</key><false/>
  <key>RunAtLoad</key><false/>
</dict></plist>

Après édition : bootout puis bootstrap.

Limitation des ressources : une vision pragmatique

Sans cgroups, utilisez Nice, ProcessType, HardResourceLimits dans le plist lab. Couplez la surveillance à quotas launchd 7×24 et à un mode dégradé lorsque la RAM du Mac Mini plafonne, afin de protéger l’agent de production pendant que le laboratoire expérimente.

Journaux et rotation

Fichiers séparés openclaw-prod.log / openclaw-lab.log, entrées newsyslog distinctes. Alertes disque : rotation OpenClaw.

Mise à jour et retour arrière

Versionnez les plist, suffixez .bak, validez sur le lab une nuit, puis prod. Rollback : bootout + plist précédent.

Dépannage et FAQ

« Duplicate label »

Doublon dans /Library/LaunchAgents ou label global en conflit — retirez ou renommez.

Pas de logs

Dossier cible inexistant ou non inscriptible au chargement launchd.

Lab RAM saturée

HardResourceLimits, moins de skills parallèles, memory_pressure.

Repères : marge RAM prod ≈ 15 % sous le pic ; fichiers log lab ≈ 100 Mo max sur petit SSD ; test plist 30 min sous charge avant nuit prod. Labels com.*.openclaw.prod / lab ; comptes séparés évitent trousseaux mélangés ; pratique alignée 7×24 du blog.

Louer un Mac Mini, tarifs, aide sans compte, blog automatisation longue durée.

Mac Mini loué pour OpenClaw 7×24 — prod et lab séparés

Passez de la théorie à l’hébergement managé : aide sans compte, achat express, blog technique, accueil RunMini.

Isolation OpenClaw prod/lab sur Mac Mini : comptes, launchd, logs. Achat, aide, blog.

Achat sans connexion