OpenClaw: strukturierte Logs, Budget disques und LaunchAgent-Logrotation auf gemietetem Mac mini 2026
Les ingénieurs plateforme qui font tourner OpenClaw sur des Mac mini Apple Silicon loués à Hong Kong, au Japon, en Corée, à Singapour et aux États-Unis finissent par heurter le même mur : la passerelle semble « morte » alors que launchctl print affiche encore running, ou les webhooks renvoient silencieusement des 500 parce que le processus ne vide pas stdout. Ce texte 2026 n’est pas du marketing — c’est un contrat opérationnel pour les logs structurés, les quotas disque, l’hygiène StandardOutPath des LaunchAgents et la sémantique de rotation qui tient sous reboots et rafales multi-agents. Lisez-le avec installation et déploiement d’OpenClaw sur Mac mini, récupération de passerelle après redémarrages déclenchés par un agent, dépannage démon et ports et webhooks et tâches planifiées pour aligner l’observabilité avec votre exploitation réelle sur le bare metal VmMac.
Nous supposons que vous avez déjà séparé les voies sans tête et graphiques selon le guide de sessions 2026 ; ici nous traitons où les octets atterrissent sur disque et comment launchd réagit lorsque ces cibles disparaissent ou se remplissent.
Pour cadrer secrets, variables d’environnement et plist LaunchAgent, voir aussi OpenClaw : secrets, environnement et plist Mac mini (2026).
Le piège StandardOutPath / StandardErrorPath sous launchd
Lorsqu’un LaunchAgent pointe vers ~/Library/Logs/ ou /usr/local/var/log/, trois familles d’échecs dominent les tickets : répertoire absent après réimage, dérive des droits quand l’utilisateur du job change, et croissance illimitée d’un seul fichier jusqu’à violer votre SLO d’espace libre. launchd laisse souvent le job vivant, mais la contre-pression d’un disque plein se traduit par des blocages, des lignes JSON tronquées ou des health checks en timeout alors que le processus est bloqué en écriture.
- Pré-créez les chemins au provisioning, pas seulement au premier succès manuel.
- Séparez stdout et stderr pour que les pics d’erreurs ne corrompent pas les flux JSONL.
- Versionnez les chemins par configuration majeure afin de comparer les politiques de rétention sans mélanger les schémas.
Budget disque : quotas par hôte pour les logs passerelle et agents
Sur des pools Mac mini partagés, attribuez un budget dur avant d’activer le traçage agent verbeux. Découpe de départ pragmatique pour 512 Go avec OpenClaw et sidecars Xcode :
| Tranche | Réservé | Seuil d’alerte | Propriétaire |
|---|---|---|---|
| JSONL passerelle | 20 Go glissants | 16 Go utilisés | Plateforme |
| Debug par agent | 8 Go / agent | 6 Go | Équipe en checkout |
| Système + caches Xcode | Reste | < 40 Go libres | Politique partagée |
Rotation : copytruncate, reopen et rotation applicative
Les équipes macOS empruntent souvent les modèles Linux logrotate. copytruncate séduit car launchd n’a pas besoin de signal de reopen, mais sous rafales de webhooks vous pouvez couper un JSON au milieu d’un objet. Préférez une rotation par taille avec renommage atomique si la passerelle le supporte, ou un rotateur sidecar calé sur votre cadence cron. Documentez le choix dans une ADR interne pour éviter que l’astreinte « répare » la rotation deux fois le même trimestre.
Liste de contrôle de durcissement des plist LaunchAgent
- WorkingDirectory pointant explicitement vers un répertoire d’état inscriptible — pas d’ambiguïté
$HOMEen session non interactive. - ThrottleInterval réglé pour que les boucles de crash n’amplifient pas les tempêtes de logs.
- EnvironmentVariables pour niveau de log et tag région (
VMMAC_REGION=jp) dans des champs structurés. - Dépendance souple documentée : quel utilisateur charge l’agent (
launchctl bootstrap gui/$UIDvs domaine bootstrap). - ExitTimeOut aligné avec l’arrêt gracieux dans récupération de passerelle.
Runbook en six étapes quand les logs semblent « OK » mais les health checks échouent
- Vérifiez l’espace libre et la pression inode avant de toucher à OpenClaw.
- Validez les chemins plist et qu’ils correspondent au domaine utilisateur qui charge le job.
- Tail séparément les 200 dernières lignes de stderr et le JSONL stdout.
- Corrélez avec les horodatages webhook de la couche d’entrée.
- Reproduisez sous rafale contrôlée avec un seul agent canari.
- Avancez avec changement de rétention et mise à jour documentée des SLO.
Lien : récupération de passerelle et dépannage démon
Lorsque les scripts de récupération de passerelle réussissent dans le Terminal mais échouent en CI, la cause est souvent des chemins de logs relatifs ou des variables d’environnement manquantes qui modifient le répertoire de logs effectif. Couplez les correctifs stdout avec la matrice des droits de dépannage démon pour ne pas crier victoire tant que TCC bloque encore des writers secondaires.
FAQ : logs OpenClaw et disque sur Mac mini
StandardOutPath peut-il être infini ? Techniquement oui ; en exploitation cela remplit le disque et bloque les écrivains — imposez un plafond et une rotation.
copytruncate est-il acceptable ? Seulement si vous prouvez l’intégrité JSON sous rafale ; sinon préférez une rotation plus sûre.
Lien avec les pages « passerelle down » ? Souvent disque plein ou dérive de chemin ; vérifiez les logs avant de redéployer les binaires.
Pourquoi le Mac mini M4 sur VmMac convient à OpenClaw gourmand en logs en 2026
Le Mac mini Apple Silicon offre du NVMe rapide et un débit d’écriture soutenu suffisant pour que le logging structuré soit réel — pas une case à cocher théorique — tout en gardant une thermique stable pour des agents toujours actifs. Louer dans cinq régions permet de caler des passerelles canari près des équipes qui possèdent la rétention, sans logistique de baies. Traitez les chemins de logs comme des contrats d’API : versionnés, testés, ennuyeux ; alors OpenClaw reste observable lors des pics de trafic, pas seulement au calme.
Héberger un Mac canari « sûr pour les logs »
Ajoutez un Mac mini dans la région VmMac la plus proche pour valider la rotation sous rafales de webhooks avant de modifier la rétention de production.