2026 OpenClaw sur Mac Mini loué : isoler la production automatisée et l’agent expérimental avec partitions utilisateur et launchd
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
- Droits POSIX mélangés : scripts lancés depuis le même compte écrasent fichiers de lock et caches npm partagés.
- Labels launchd ambigus : un doublon
Labelempêchelaunchctl bootstrapou charge le mauvais binaire silencieusement. - Observabilité unique : sans chemins
StandardOutPathsé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
- Deux comptes macOS, arbres
~/openclaw-prodet~/openclaw-lab. - Installations OpenClaw isolées sans lien symbolique croisé.
- Deux plist dans
~/Library/LaunchAgents, labels et variables (ports, tokens) distincts. ~/Logspar compte, droits propriétaire.launchctl bootstrappuislaunchctl print.- 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.