Public cible : développeurs et équipes qui font tourner OpenClaw et des tirages de gros modèles sur un Mac distant (passerelle dédiée ou exécuteur CI partagé). Mots-clés : OpenClaw, Mac distant, cache modèle, stratégie de nettoyage, automatisation. Ce guide complète la série ClawHub et pré-tirage CI, le contrôle de santé passerelle / LaunchAgent et la stratégie cache CI (Git, npm). Retrouvez l'index du blog et le centre d'aide sans connexion obligatoire.

Prérequis et partitionnement de l'environnement

Commencez par un compte utilisateur de service (pas une session interactive partagée) : les permissions, les LaunchAgents et les chemins restent identiques entre les sessions SSH et les jobs CI. Même avec un seul disque physique, séparez conceptuellement un palier chaud (dossier ou volume APFS sur NVMe interne, latence faible pour petits shards et métadonnées) et un palier tiède (USB4/Thunderbolt, second volume ou partage en lecture pour archives peu sollicitées).

Documentez toutes les variables que votre build OpenClaw et les runtimes modèles lisent : répertoire de configuration, HF_HOME, OLLAMA_MODELS, caches llama.cpp, etc. Alignez les noms sur le guide d'installation et dépannage OpenClaw pour que chaque membre de l'équipe recrée la même arborescence. Vérifiez que les points de montage survivent au redémarrage : évitez de dépendre d'un /Volumes/Sans titre renommé aléatoirement ; préférez des noms de volume figés ou des chemins sous /Users/service/... avec lien symbolique vers le média externe une fois monté.

  1. Figer Node (ex. 22 LTS) et la semver OpenClaw ; les noter dans un runbook interne versionné.
  2. Créer ~/Library/Logs/OpenClawCache/ en 755 pour l'utilisateur de service.
  3. Déclarer les variables dans EnvironmentVariables du plist launchd — jamais de secrets dans le dépôt Git.
  4. Contrôler diskutil apfs list et un reboot de validation : tous les volumes attendus montés avant le premier job.
Critère Choix recommandé À éviter
Isolation OS / cache Volume ou quota logique séparé pour les poids Remplir le même APFS que le système sans marge
Multi-locataire Un utilisateur service par tenant ou symlink par runner Un seul HOME partagé sans convention de chemin
Documentation Table « variable → chemin → volume physique » Chemins copiés depuis un poste portable local

Chemins de cache et schéma par paliers

Choisissez un seul chemin canonique que tous les scripts CI invoquent (par ex. ~/.openclaw/cache/models). Sur disque, stockez les blobs sous des racines par palier : /Volumes/FastSSD/oc-models pour le chaud, /Volumes/BulkDisk/oc-archive pour l'archive. Remplacez le répertoire canonique par un lien symbolique vers le palier chaud : les jobs n'embarquent plus de lettre de volume en dur.

# Exemple : arrêter les jobs OpenClaw, puis pointer le canonique vers le palier rapide
mkdir -p "/Volumes/FastSSD/oc-models"
rm -rf "$HOME/.openclaw/cache/models"
ln -s "/Volumes/FastSSD/oc-models" "$HOME/.openclaw/cache/models"
readlink -f "$HOME/.openclaw/cache/models"

Promouvez un modèle du tiède vers le chaud avec rsync -a --partial --inplace ou un mv atomique sur le même volume APFS. Dégradez les poids froids dans l'autre sens après avoir noté empreintes ou manifest semver. Placez les répertoires temporaires de téléchargement sur le même volume que la destination finale pour éviter les erreurs « cross-device link » au rename.

Décision Palier chaud (interne) Palier tiède (bulk)
Objectif latence Lecture p95 faible pour shards actifs Acceptable pour modèles rarement servis
Symlink au chemin canonique Défaut pour la piste active Second lien seulement si le chaud est plein
Risque runner partagé Symlink par utilisateur ou par file d'attente Miroir lecture seule organisationnel

Liste de contrôle — arborescence cache

  • Le symlink canonique existe après reboot (readlink dans le préflight CI).
  • Tmp et blobs finaux partagent le volume pour rename sans copie.
  • Les noms de manifest / lockfile portent la version du modèle — le script de purge les respecte.
  • Les arbres « petits fichiers » (nombreux inodes) sont suivis à part des quelques fichiers multi-Go.

Nettoyage planifié et rotation des journaux

Ne supprimez pas aveuglément pendant que des processus gardent des mmap ouverts. Définissez une fenêtre de nettoyage hors charge CI — souvent 02h00–04h00 heure locale sur les pools Mac distants. Sur macOS, un LaunchAgent avec StartCalendarInterval (heure et minute) est en général plus prévisible qu'un crontab pour les runners par utilisateur : PATH, session et plist sont cohérents avec le reste d'OpenClaw.

Planificateur Cas d'usage Piège fréquent
LaunchAgent + StartCalendarInterval Runner Mac par utilisateur, audit plist Plists dupliquées si plusieurs admins éditent
crontab Parité avec docs Linux PATH minimal, pas de session GUI, dérive permissions
Script déclenché par CI (SSH) Politique centralisée dans Git Chevauchement fuseaux — ajouter mutex ou file

Pour la rotation des journaux, écrivez la sortie du script vers ~/Library/Logs/OpenClawCache/cleanup-$(date +%F).log et ajoutez une entrée /etc/newsyslog.d/ ou une passe gzip hebdomadaire dans le même intervalle. Conservez au moins sept jours de sortie standard : elles expliquent les « cache miss » soudains après une purge.

#!/bin/bash
set -euo pipefail
# Exemple : gardes optionnelles — ne pas purger si la passerelle tourne
# pgrep -f openclaw-gateway >/dev/null && exit 0
find "$HOME/.openclaw/cache/tmp" -type f -mtime +3 -delete
find "$HOME/.openclaw/cache/tmp" -type d -empty -delete

Erreur fréquente : « Text file busy » ou échec silencieux — le job suivant retélécharge tout. Ajoutez un verrou fichier (flock) ou testez lsof sur le répertoire cible avant toute suppression récursive.

Quotas et seuils de remplissage disque

Combinez l'idée de quota (soft limit sur volume ou politique interne Go/TiB) avec un script de patrouille qui parse df -P. Matrice simple pour des runners Apple Silicon partagés en 2026 :

Utilisation Action Canal d'alerte
≥ 80 % Notification + planifier nettoyage prochaine fenêtre Webhook / Slack INFO
≥ 85 % Bloquer nouveaux pulls « expérimentaux » Pager WARNING
≥ 90 % Éviction LRU sur tmp + relégation vers palier tiède Pager CRITICAL

Si l'hôte expose des quotas par volume, placez le soft limit un peu sous la capacité marketing : les instantanés APFS et la marge pour les mises à jour système consomment vite les derniers pourcents. Exécutez toujours df -h et df -i : une saturation d'inodes ressemble à un disque plein mais ne disparaît pas en effaçant un seul gros fichier.

Automatisation d'alerte : un script cron toutes les 5–15 minutes qui compare le pourcentage au palier et envoie une charge utile JSON (hôte, volume, inode %, chemin canonique résolu) évite les tickets « pourquoi le pull a échoué hier soir ».

Nouvelles tentatives en échec et dépannage

Enrobez les téléchargements d'un backoff exponentiel plafonné (ex. 5 s, 15 s, 45 s) avec jitter : une flotte de Mac distants ne doit pas marteler le même miroir en phase. En cas d'échec, parcourez la liste suivante avant de rouvrir le débit :

  • ENOSPC / disque plein — contrôlez le volume cible du symlink, pas seulement df sur $HOME.
  • Descripteur de fichier obsolète — remontez le disque externe ; vérifiez l'ordre de déverrouillage FileVault au boot.
  • HTTP 429 / 5xx — politique amont ; baissez la concurrence et respectez Retry-After.
  • Permission denied — comparez umask et propriétaire du service ; après une mise à jour macOS, relancez openclaw doctor.

Croisez avec les schémas de reprise après échec et retry OpenClaw pour ne pas enfermer l'automatisation dans une boucle contre une passerelle instable. Côté sécurité et exposition, gardez la durcissement passerelle alignée avec vos fenêtres de maintenance cache.

Liste de contrôle d'acceptation en production

  • Après boot à froid, le symlink canonique est résolu avant le premier job (test automatisé).
  • Le script de patrouille affiche l'utilisation lisible et sort en non-zéro si le palier rapide dépasse 90 %.
  • Deux exécutions « dry-run » du nettoyage sont archivées avec identifiant de ticket ; le mode destructif n'est activé qu'après.
  • La CI ne référence que le chemin canonique — aucune URL de montage en dur dans les pipelines.
  • Le document de rollback décrit comment repointer le symlink vers le palier tiède en moins de cinq minutes.

Synthèse et suite

Synthèse : des tirages OpenClaw fiables sur Mac distant reposent sur un chemin canonique unique, un palier chaud derrière symlink, une archive tiède documentée, des fenêtres de nettoyage pilotées par LaunchAgent (ou politique CI), des journaux rotatifs et des seuils disque explicites (80 / 85 / 90 %). Versionnez les plist et scripts, exigez des dry-runs, et séparez les retry réseau des urgences ENOSPC.

Poursuivre sans compte : centre d'aide MacPull, tarifs, page d'achat pour louer un nœud Apple Silicon avec NVMe prévisible, blog technique (guides OpenClaw, CI, cache). Toutes ces pages sont consultables sans connexion.

Un Mac distant dédié avec marge SSD et fenêtres de maintenance claires est le cadre le plus simple pour garder ce runbook reproductible semaine après semaine.

Mac distant & cache modèles

Besoin de marge disque pour OpenClaw ?

Mac mini cloud, SSH stable, NVMe rapide — appliquez symlink, paliers et nettoyage sans bruit multitenant. Tarifs, achat et guides accessibles sans login.

Voir les forfaits Tarifs Centre d'aide Blog