{ "agentName": "Agent99", "agentRoot": "C:\\Wooo\\Agent99", "sshUser": "wooo", "sshUsers": { "192.168.0.112": "kali", "192.168.0.188": "ollama" }, "vmrunPath": "C:\\Program Files (x86)\\VMware\\VMware Workstation\\vmrun.exe", "hosts": [ "192.168.0.110", "192.168.0.112", "192.168.0.120", "192.168.0.121", "192.168.0.188" ], "vms": [ { "name": "host110-devops", "host": "192.168.0.110", "vmx": "D:\\Documents\\Virtual Machines\\Ubuntu 64-bit (3)\\Ubuntu 64-bit (3).vmx", "priority": 10 }, { "name": "host188-ai", "host": "192.168.0.188", "vmx": "D:\\Documents\\Virtual Machines\\Ollama_Ubuntu_64-bit\\Ollama_Ubuntu_64-bit.vmx", "priority": 20 }, { "name": "host112-kali", "host": "192.168.0.112", "vmx": "D:\\Downloads\\kali-linux-2025.4-vmware-amd64\\kali-linux-2025.4-vmware-amd64.vmwarevm\\kali-linux-2025.4-vmware-amd64.vmx", "priority": 30 }, { "name": "host120-k3s", "host": "192.168.0.120", "vmx": "D:\\Documents\\Virtual Machines\\192.168.0.120_Ubuntu_64-bit\\192.168.0.120_Ubuntu_64-bit.vmx", "priority": 40 }, { "name": "host121-k3s", "host": "192.168.0.121", "vmx": "D:\\Documents\\Virtual Machines\\192.168.0.121_Ubuntu_64-bit\\192.168.0.121_Ubuntu_64-bit.vmx", "priority": 50 } ], "k3s": { "jumpHost": "192.168.0.110", "primary": "192.168.0.120", "namespace": "awoooi-prod" }, "publicUrls": [ "awoooi.wooo.work", "stock.wooo.work", "2026fifa.wooo.work", "gitea.wooo.work", "harbor.wooo.work" ], "aiServices": [ { "name": "openclaw", "url": "http://192.168.0.188:8088/health", "host": "192.168.0.188", "expectedStatus": "healthy", "critical": true } ], "providerFreshness": { "enabled": true, "lookbackMinutes": 120, "targets": [ { "name": "provider_freshness_signal", "providerWindowMinutes": null, "directReference": null, "verifier": "agent99-provider-freshness-triage" } ] }, "sreAlertRelay": { "enabled": true, "prefix": "http://+:8787/agent99/sre-alert/", "tokenEnv": "AGENT99_SRE_RELAY_TOKEN", "allowedRemotePrefixes": [ "127.", "::1", "192.168.0." ] }, "telegram": { "enabled": true, "botTokenEnv": "AGENT99_TELEGRAM_BOT_TOKEN", "chatIdEnv": "AGENT99_TELEGRAM_CHAT_ID", "botTokenEnvAliases": [ "AWOOOI_TG_BOT_TOKEN", "OPENCLAW_TG_BOT_TOKEN", "TELEGRAM_BOT_TOKEN", "TELEGRAM_TOKEN", "TG_BOT_TOKEN", "AIDER_WATCH_TELEGRAM_TOKEN" ], "chatIdEnvAliases": [ "TELEGRAM_CHAT_ID", "TELEGRAM_ALERT_CHAT_ID", "TELEGRAM_P0_CHAT_ID", "TELEGRAM_SECURITY_CHAT_ID", "OPENCLAW_TG_CHAT_ID", "TG_CHAT_ID", "AIDER_WATCH_TELEGRAM_CHAT_ID" ], "relay": { "enabled": true, "host": "192.168.0.110", "container": "stockplatform-v2-api-1" }, "allowedCommandChatTitlePattern": "AwoooI SRE|AWOOOI SRE|SRE", "autoIngestMonitoringAlerts": true, "alertAllOperations": false, "alertInfoEvents": false, "alertOperatorCommands": true, "alertSreCommandResults": true, "dedupeMinutes": 30 }, "performance": { "enabled": true, "intervalMinutes": 1, "loadPerCoreWarning": 0.9, "loadPerCoreCritical": 1.5, "memoryAvailablePercentCritical": 10, "diskUsedPercentWarning": 90, "diskUsedPercentCritical": 95, "captureTopCpuOnWarning": true, "topCpuTimeoutSeconds": 10, "loadShedding": { "enabled": true, "actions": [ { "name": "prune-188-docker-build-cache-disk-pressure", "host": "192.168.0.188", "command": "echo BEFORE_DF=$(df -P / | awk 'NR==2{print $5}'); docker system df; docker builder prune -af --filter until=24h; echo AFTER_DF=$(df -P / | awk 'NR==2{print $5}'); docker system df", "timeoutSeconds": 240, "postVerifyCommand": "df -P / | awk 'NR==2{gsub(\"%\",\"\",$5); print \"__DISK_USED__=\"$5}'", "postVerifyMaxDiskUsedPercent": 89, "rollback": "echo rollback_not_applicable_for_build_cache_prune", "cooldownMinutes": 120, "minSeverity": "warning", "reasonMatches": [ "disk_used_warning", "disk_used_high" ], "enabled": true }, { "name": "stop-110-runaway-alpine-tar-data", "host": "192.168.0.110", "command": "ids=$(docker ps --filter ancestor=alpine --format '{{.ID}} {{.Command}}' | awk '/tar czf - \\/data/ {print $1}'); [ -z \"$ids\" ] && exit 0; for id in $ids; do docker stop \"$id\"; done", "rollback": "echo manual_review_required_for_stopped_runaway_container", "cooldownMinutes": 10, "minSeverity": "warning", "reasonMatches": [ "load_per_core_warning", "load_per_core_critical" ], "enabled": true }, { "name": "renice-110-awoooi-backup-pressure", "host": "192.168.0.110", "command": "pids=$(ps -eo pid,args | awk '/backup\\/scripts\\/backup-awoooi\\.sh|gzip -c|pg_dump --no-password/ && !/awk/ {print $1}'); [ -z \"$pids\" ] && exit 0; for p in $pids; do sudo -n renice -n 15 -p $p >/dev/null 2>&1 || true; sudo -n ionice -c2 -n7 -p $p >/dev/null 2>&1 || true; done; ps -o pid,ni,pri,comm,args -p $pids", "rollback": "pids=$(ps -eo pid,args | awk '/backup\\/scripts\\/backup-awoooi\\.sh|gzip -c|pg_dump --no-password/ && !/awk/ {print $1}'); [ -z \"$pids\" ] && exit 0; for p in $pids; do sudo -n renice -n 0 -p $p >/dev/null 2>&1 || true; sudo -n ionice -c2 -n4 -p $p >/dev/null 2>&1 || true; done", "cooldownMinutes": 15, "minSeverity": "warning", "reasonMatches": [ "load_per_core_warning", "load_per_core_critical" ], "enabled": true }, { "name": "pause-110-ci-runner-pressure", "host": "192.168.0.110", "command": "docker pause vibework-dedicated-runner", "rollback": "docker unpause vibework-dedicated-runner", "cooldownMinutes": 30, "reasonMatches": [ "load_per_core_critical" ], "enabled": true } ] } }, "selfHealth": { "scheduledTasks": [ "Wooo-Agent99-Startup-Recovery", "Wooo-Agent99-Heartbeat", "Wooo-Agent99-Performance-Guard", "Wooo-Agent99-Control-Loop", "Wooo-Agent99-Telegram-Inbox", "Wooo-Agent99-SRE-Alert-Inbox", "Wooo-Agent99-SRE-Alert-Relay", "Wooo-Agent99-Self-Health", "Wooo-Agent99-Backup-Health" ], "requiredHosts": [ "192.168.0.110", "192.168.0.112", "192.168.0.120", "192.168.0.121", "192.168.0.188" ], "requireRecentTelegramDelivery": true, "telegramDeliveryLookbackMinutes": 60, "evidenceFreshness": [ { "name": "performance_guard", "pattern": "agent99-Perf-*.json", "maxAgeMinutes": 5, "required": true }, { "name": "heartbeat_status", "pattern": "agent99-Status-*.json", "maxAgeMinutes": 15, "required": true }, { "name": "self_health", "pattern": "agent99-SelfCheck-*.json", "maxAgeMinutes": 15, "required": false }, { "name": "backup_health", "pattern": "agent99-BackupCheck-*.json", "maxAgeMinutes": 30, "required": false }, { "name": "startup_recovery", "pattern": "agent99-Recover-*.json", "maxAgeMinutes": 1440, "required": false }, { "name": "telegram_inbox", "pattern": "agent99-TelegramInbox-*.json", "maxAgeMinutes": 15, "required": false }, { "name": "sre_alert_inbox", "pattern": "agent99-SreAlertInbox-*.json", "maxAgeMinutes": 15, "required": false }, { "name": "sre_alert_relay", "pattern": "agent99-SreAlertRelay-start-*.json", "maxAgeMinutes": 1440, "required": false } ] }, "backupHealth": { "host": "192.168.0.110", "snapshotReadTimeoutSeconds": 90, "targets": [], "fileChecks": [], "cronPatterns": [] } }