Automatisation IA

2026 Limites OpenClaw et alertes budget sur Mac mini M4 16 Go loué : 50 RPM, plafond 10 $/jour, matrice reject/queue, CLI limits, runbook en 8 étapes et smoke en 12 étapes

Configuration des limites OpenClaw et alertes budget sur Mac mini M4 16 Go loué

OpenClaw sur un Mac mini M4 loué n’est pas « gratuit après l’installation ». Un cron mal configuré, une tempête de webhooks ou une boucle de skills peut brûler des tokens frontier pendant votre sommeil. La finance ne veut pas un autre tableau de bord — elle veut des fusibles durs (limites qui rejettent ou mettent en file) et des alertes budget avant la clôture de facture. Ce tutoriel est le contrat opérateur pour un hôte KvmZone 16 Go : trois couches de contrôle, une matrice de décision reject vs queue vs warn, un runbook numéroté avec chemins réels (~/.openclaw/openclaw.json), le dépannage des deux échecs que les équipes voient vraiment, et une échelle smoke en 12 étapes à coller dans un ticket.

Associez dès la première mention le contrat d’installation OpenClaw heure zéro (plancher Node 22+), la matrice doctor post-onboarding (discipline webhook POP), le runbook launchd en régime stable (rotation des logs), et l’hygiène client API Gemini lorsque des modèles cloud restent dans la chaîne de repli. Les hypothèses matérielles suivent les spécifications Mac mini Apple. Comparez les six régions et le coût webhook sur la page tarifs.

Divulgation : KvmZone est le fournisseur de location Mac cité dans cet article. La sémantique des limites OpenClaw suit les exemples de configuration passerelle OpenClaw et le sous-système communautaire limits / rate-limit ; vérifiez votre version installée avant la production.

Pourquoi limites et alertes budget sur l’hôte loué

Les équipes louent un Mac mini M4 avec 16 Go de mémoire unifiée parce que passerelles OpenClaw, répertoires skills et récepteurs webhook tournent en continu — pas pour garder un portable éveillé avec des clés API. La dérive de coût est un problème de passerelle, pas « achetez plus de RAM » : imposez les limites avant l’envoi au modèle, pas après l’ouverture du portail fournisseur par la finance.

Partie prenanteSans fusibles dursAvec fusibles + alertes
IngénierieLes tempêtes de retry 429 ressemblent à « OpenClaw instable »Limites → événements structurés ; logs onLimitReached
FinanceLignes API surprise 200 $+ / jourPlafond journalier 10 $ (ex.) bloque ou met en file avant minuit
SécuritéWebhook compromis → inondation de tokensPlafonds RPM par canal limitent l’abus
Règle citée : rate limit = façonnage du trafic ; alerte budget = gouvernance des dépenses — contrôles frères, pas doublons.

Architecture : trois couches sur une passerelle

Le contrôle des coûts OpenClaw s’empile en trois couches. Épinglez celles activées sur votre location — les versions upstream diffèrent.

Couche 1 — rateLimit passerelle (fusible dur en bordure)

Les tutoriels documentent un bloc rateLimit dans ~/.openclaw/openclaw.json (JSON5). Champs typiques :

ChampExempleComportement
enabledtrueOpt-in ; limites off jusqu’à activation
model.rpm50Requêtes/minute par route modèle
model.tpm100000Plafond tokens/minute
model.dailyLimit2000Compteur dur de requêtes/jour
model.dailyCostLimit10.00Plafond dépense USD/jour (string/nombre selon build)
model.onLimitReachedreject ou queueFusible dur vs backlog

Fusible dur = onLimitReached: "reject" — la passerelle renvoie une erreur immédiatement ; les skills ne doivent pas boucler retry sans backoff.

Fusible souple = onLimitReached: "queue" — messages en attente ; plus sûr pour chat humain, dangereux pour tempêtes webhook sans messages.queue.cap (voir exemples passerelle).

Couche 2 — CLI limits / budgets tokens (par fournisseur)

Upstream a ajouté la surface limits et les commandes openclaw limits (voir PR #13686) : fenêtres glissantes, budgets journaliers/mensuels en tokens, logs structurés. Cette couche enveloppe les appels fournisseurs externes — complémentaire au rateLimit passerelle.

Commandes à documenter dans le runbook :

openclaw limits status

openclaw limits reset --provider anthropic --model claude-sonnet-4-6

Épinglez les sorties dans le ticket quand la finance demande « prouver que le fusible a sauté ».

Couche 3 — Alertes budget (observabilité → action)

Les blocs USD durs par agent en passerelle évoluent encore en upstream ; jusqu’à ce que votre build les inclue, les opérateurs implémentent des alarmes budget avec :

  1. Cron + scrape coût session — job planifié qui lit les résumés de coût et poste sur Slack/email à 80 % du plafond journalier.
  2. Clés budget proxy — routez les fournisseurs via un proxy à clés virtuelles et plafonds de dépense durs.
  3. openclaw doctor + audit hebdo — avec le runbook régime stable pour éviter la pourriture des alertes.
Règle citée : Alertes sans reject = avertissements ; fusible dur exige onLimitReached: "reject" ou bloc limits upstream avec blocage dur activé.

Matrice de décision : reject, queue, warn

ProfilRPMPlafond $/jouronLimitReachedCanal alerteQuand l’utiliser
Webhook production305 $rejectPager + email à 80 %Bots CI ; pas de file infinie
Assistant DM interne5010 $queueSlack à 90 %Humains tolèrent le délai
Pilote / staging152 $rejectEmail seulSemaine de location jetable
Repli Ollama localN/A (loopback)0 $ cloudN/AAlertes disque seulesAvec couplage OpenClaw + Ollama

Chemin recommandé : Si des webhooks touchent l’hôte, ligne Webhook production. Si DM seulement, Assistant DM interne. Ne lancez jamais queue sur un seul hôte 16 Go sans messages.queue.cap et rotation des logs — le travail en file consomme encore la RAM.

Runbook pas à pas : fusibles durs et alertes

Exécutez en SSH sur le Mac loué. Remplacez les montants en dollars par les plafonds approuvés par la finance.

Étape 1 — Instantané de l’usage de base

ssh user@rented-mac 'openclaw limits status 2>/dev/null || openclaw doctor'

ssh user@rented-mac 'df -h / && du -sh ~/.openclaw 2>/dev/null'

Enregistrez la sortie en pièce jointe A du ticket de changement.

Étape 2 — Sauvegarde de la config

ssh user@rented-mac 'cp ~/.openclaw/openclaw.json ~/.openclaw/openclaw.json.bak.$(date +%Y%m%d)'

Étape 3 — Activer rateLimit passerelle (exemple fusible dur)

Éditez ~/.openclaw/openclaw.json (JSON5). Ajoutez ou fusionnez :

{ rateLimit: { enabled: true, model: { rpm: 50, tpm: 100000, dailyLimit: 2000, dailyCostLimit: 10.00, onLimitReached: "reject", // hard fuse for webhook hosts }, }, messages: { queue: { mode: "followup", cap: 20, drop: "summarize" }, }, }

Rechargez la passerelle selon votre runbook (launchctl kickstart ou reload documenté — voir article régime stable).

Étape 4 — Resserrer la concurrence par agent

Dans le même fichier, sous agents.defaults :

agents: { defaults: { maxConcurrent: 2, // 16GB: avoid 3+ concurrent tool-heavy runs timeoutSeconds: 600, }, },

Étape 5 — Activer le sous-système limits (si votre build le supporte)

Ajoutez le bloc limits upstream selon la doc openclaw limits de votre version — budget token journalier avec blocage dur activé. Exécutez :

openclaw limits status

Compteurs non nuls attendus après un message de test.

Étape 6 — Planifier le cron d’alerte budget

Créez ~/budget-alert.sh :

#!/bin/bash THRESHOLD_USD=8.00 # Replace with your cost scrape command / log grep for your OpenClaw version COST=$(openclaw limits status 2>/dev/null | awk '/dailyCost/{print $2}') if awk -v c="$COST" -v t="$THRESHOLD_USD" 'BEGIN{exit !(c>t)}'; then echo "OpenClaw spend $COST exceeds warn threshold $THRESHOLD_USD on $(hostname)" | mail -s "OpenClaw budget warn" ops@example.com fi

chmod 700 ~/budget-alert.sh

# launchd or crontab: every 30 minutes

Documentez la destination d’alerte dans le runbook — la finance possède la boîte mail.

Étape 7 — Prouver que le fusible saute

Envoyez une rafale synthétique (canal staging uniquement) jusqu’à déclenchement de onLimitReached. Confirmez :

  • Les logs passerelle montrent un événement limite (pas d’échec silencieux)
  • openclaw limits status affiche des compteurs incrémentés
  • Pas de boucle retry illimitée dans les logs

Étape 8 — Archiver les preuves

Joignez : diff config, limits status après test, extrait de log avec événement limite, ID semaine facture.

Dépannage

Schéma d’erreur : 429 / rate_limited avec dépenses qui montent

Symptômes : Le fournisseur renvoie 429 ; OpenClaw retente ; le coût journalier augmente encore.

Correctif :

  1. Mettez onLimitReached: "reject" en passerelle — pas queue.
  2. Configurez les limites de rotation de profils auth (auth.cooldowns.rateLimitedProfileRotations selon votre build) pour éviter une dépense de repli infinie.
  3. Exécutez openclaw limits reset seulement après correction de la cause racine, pas en habitude quotidienne.

Schéma : limites activées mais « aucun effet »

Symptômes : rateLimit.enabled: true dans le fichier ; trafic illimité.

Correctif :

  1. Confirmez que le reload passerelle a bien tourné (launchctl print montre un nouveau pid).
  2. Confirmez l’édition du fichier lu par le démon (~/.openclaw/openclaw.json, pas une copie repo).
  3. Lancez openclaw doctor sous le même utilisateur que launchd — les décalages PATH chargent une mauvaise config (voir contrat heure zéro).

Note POP six régions

Nœuds KvmZone : Hong Kong, Japon (Tokyo), Corée (Séoul), Singapour, US Est, US Ouest. Les limites ne remplacent pas le choix de région — les webhooks SaaS US-Est vers des Mac APAC brûlent encore des tokens en retry. Choisissez le nœud le plus proche de l’entrée callback selon la matrice POP post-onboarding. Comparez sur la page tarifs.

Échelle smoke en douze étapes

ÉtapePorteRéussite
1SSHShell non interactif
2Sauvegarde config.bak.YYYYMMDD existe
3rateLimit.enabledtrue en config live
4Fusible duronLimitReached = reject pour profil webhook
5RPM≤50 documenté dans le runbook
6Plafond $/jourMontant approuvé finance enregistré
7openclaw limits statusCode sortie 0 ; compteurs visibles
8Rafale synthétiqueFusible saute ; dépense s’arrête
9Cron alerteEmail/Slack test reçu au seuil 80 %
10LogsLigne événement limite conservée (rotation 512 Mo selon régime stable)
11RégionNom du nœud dans le runbook
12FinanceCapture + semaine facture archivées

FAQ

dailyCostLimit bloque-t-il dur sur toutes les versions OpenClaw ?+
Traitez-le comme fusible dur seulement si votre build documente un blocage dur pour les champs de coût. Les anciens builds peuvent être observabilité seule — vérifiez avec une rafale staging avant la production.
Les hôtes pilotes doivent-ils utiliser queue ou reject ?+
Reject pour toute location exposée webhook. Queue uniquement pour pilotes DM humains avec messages.queue.cap défini.
Cela remplace-t-il les articles « budget disque » ?+
Non. Le runbook budget disque couvre APFS ; cet article couvre les dépenses API.
Ollama local zéro dépense cloud — configurer quand même les limites ?+
Oui — plafonnez les appels d’outils et la recherche web ; l’inférence loopback n’empêche pas les replis payants si configurés.

Comparez les régions avant de configurer les limites OpenClaw

Comparez six régions sur la page tarifs ; épinglez 50 RPM et 10 $/jour, passez la smoke en 12 étapes avant les webhooks de production.