Files
awoooi/agent99.config.99.example.json

275 lines
8.3 KiB
JSON

{
"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": []
}
}