2026 OpenClaw sur Mac Mini loué : état d’agent en SQLite WAL, checkpoints planifiés et dégradation thermique des files — guide opérable 7×24
Les équipes qui louent un Mac Mini pour faire tourner OpenClaw toute la nuit veulent un état d’agent fiable sans Postgres lourd : SQLite en WAL est tentant, mais sans cadence de checkpoint ni file bornée, la thermique ou un disque qui se tend transforme une charge banale en cascade de timeouts.
« Ce guide condense schéma minimal, PRAGMA utiles, launchd pour checkpoints passifs, corrélation caffeinate / thermique avec réduction de concurrence, et une matrice de seuils pour WAL, busy_timeout, inodes et backoff — le tout orienté observabilité 7×24. »
Poursuivez avec le guide Healthchecks.io, la matrice SQLite WAL générique et la série OpenClaw sur le blog.
Trois frictions qui cassent une persistance SQLite « simple » sur Mac loué
- WAL sans discipline. Un fichier
-walqui grossit indéfiniment retarde les lectures froides et masque la saturation inode réelle jusqu’au dernier moment. - Concurrence mal bornée. Plusieurs workers qui écrivent des sessions longues créent des busy en rafale ; sans busy_timeout cohérent, OpenClaw interprète à tort une panne applicative.
- Thermique ignorée. Quand le nœud réduit la fréquence, une file profonde amplifie la latence ; il faut un contrat de dégradation qui rétrécit les slices actifs avant l’escalade humaine.
Matrice décisionnelle : checkpoint WAL, busy_timeout, inode et backoff de file
Ajustez les valeurs à votre fenêtre nocturne ; l’objectif est de garder le WAL sous contrôle tout en laissant respirer le stockage partagé d’un Mac Mini loué.
| Levier | Valeur de départ prudente | Signal de réajustement |
|---|---|---|
| PRAGMA wal_checkpoint(PASSIVE) | Toutes les cinq à dix minutes hors pic, via launchd | Taille WAL > deux cent mégaoctets ou latence lecture p95 qui monte |
| busy_timeout (ms) | Trois à cinq secondes sur writer unique ; plafond huit secondes si IO lent | Traces busy récurrentes malgré transactions courtes |
| Seuil inode / disque | Alerte jaune à quinze pour cent inode libre ; rouge à dix pour cent | Rotation logs voisins ou checkpoint TRUNCATE planifié hors charge |
| Backoff file OpenClaw | Jitter cent à quatre cents millisecondes, plafond quatre secondes, puis demi-file | Thermique élevée ou pression SQLite : réduire concurrence avant backoff maximal |
Sept étapes reproductibles : schéma, launchd, thermique et slices
-
Schéma SQLite minimal pour sessions d’agent. Colonne
slice_id, horodatage, état JSON compressé ; index sur(slice_id, updated_at).PRAGMA journal_mode=WAL; PRAGMA synchronous=NORMAL; PRAGMA busy_timeout=5000; PRAGMA foreign_keys=ON; CREATE TABLE IF NOT EXISTS agent_sessions ( id TEXT PRIMARY KEY, slice_id TEXT NOT NULL, state_json BLOB NOT NULL, updated_at INTEGER NOT NULL ); CREATE INDEX IF NOT EXISTS idx_sessions_slice ON agent_sessions(slice_id, updated_at); -
Initialisation fichier. Placez la base sous un répertoire dédié
~/openclaw/stateavec quotas de logs séparés pour ne pas confondre croissance WAL et journaux applicatifs. -
launchd pour checkpoint passif. Programmez un appel
sqlite3 /chemin/état.db "PRAGMA wal_checkpoint(PASSIVE);"toutes les cinq minutes la nuit ; gardezThrottleIntervalpour éviter tempêtes si le disque sature. -
caffeinate et charge nocturne. Encadrez le daemon OpenClaw avec
caffeinate -dimsuseulement si votre charte d’exploitation l’autorise ; journalisez début et fin pour corréler avec les métriques SQLite. -
Boucle thermique légère. Un script
launchdtrente secondes lit un indicateur grossier (charge CPU lissée ou sortie filtrée depmset -g thermlog) ; au-delà d’un seuil convenu, réduisez la profondeur de file côté passerelle OpenClaw et augmentez légèrement le backoff. - Liaison OpenClaw. Documentez un drapeau local « mode dégradé » consommé par votre passerelle : moins de slices parallèles, transactions plus courtes, flush des états non critiques vers un second fichier SQLite si besoin.
-
Sharding par slice. Pour isoler les hot spots, partitionnez par
hash(tenant) % Nsur N bases ; un checkpoint par base reste rapide et simplifie les restaurations partielles.
Observabilité 7×24 : ce que la supervision distante doit voir avant l’incident
Exportez en JSONL les durées de transaction, le ratio pages WAL / taille base, et la profondeur de file ; corrélez avec les pings décrits dans le guide heartbeat 7×24.
- Histogramme busy SQLite par tranche d’une heure, lissé sur trois nuits.
- Taille WAL et marge inode sur le même graphe multi-axes pour éviter les fausses vertes.
- Compteur de bascules « thermique → dégradé » avec identifiant de build OpenClaw figé.
Repères citables pour runbooks internes
- busy_timeout de départ : cinq millisecondes fois mille, soit cinq secondes, avant toute optimisation agressive.
- Cadence checkpoint passif : cinq minutes ; passez à trois minutes si WAL dépasse cent cinquante mégaoctets.
- Backoff file : cent millisecondes de base, doublement capé à quatre secondes, puis réduction de concurrence obligatoire.
- Inode : alerte jaune quinze pour cent, rouge dix pour cent ; même logique que sur la matrice rotation journaux.
FAQ : verrous et disque plein
Comment limiter la contention sur les verrous ?
Concentrez les écritures, raccourcissez les transactions, augmentez busy_timeout et séparez les bases par slice ; évitez deux writers sur la même table chaude sans file intermédiaire.
Que faire si le disque est plein ou si les inodes manquent ?
Stoppez les jobs non essentiels, exécutez un checkpoint contrôlé hors fenêtre critique, archivez les WAL anciens après vérification de cohérence, puis réouvrez avec moins de slices jusqu’à retour au vert sur inode et pourcentage libre.
Choisir un nœud Mac, stabiliser SQLite WAL et piloter OpenClaw en confiance
RunMini propose des Mac Mini Apple Silicon loués pour isoler vos agents et passerelles légères. Parcourez l’accueil, comparez les forfaits, lisez le centre d’aide SSH/VNC et le blog ; finalisez sur Achat pour un parcours public sans friction inutile.
Résumé : région et durée sur tarifs, SSH/VNC dans l’aide, panier sur Achat — puis déployez schéma WAL, checkpoints launchd et files bornées sur le Mac loué.
Pour aller plus loin : guide d’installation OpenClaw et checklist SSH/VNC sur Mac loué.