The installer wrote the same service list (ollama, homeassistant, mysql,
mariadb, nginx, apache2, docker) onto every host regardless of what it
actually runs, causing false "Service Down" alerts on hosts that never
installed those services. Default is now empty; watch_services should be
set per-host to match what's actually running there.
Old installer wrote to /opt/jarvis-agent/config.json with server_url/api_key/
heartbeat_interval keys and pre-registered with JARVIS. Agent v3.0 expects:
- Config at /etc/jarvis-agent/config.json with jarvis_url/registration_key/
hostname/poll_interval/heartbeat_every keys
- api_key stored by agent itself in /var/lib/jarvis-agent/state.json
- Agent self-registers at startup using registration_key
Also adds: imagemagick install (headless screenshot support), apk support
for Alpine/WireGuard, copies to /usr/local/bin/jarvis-agent.py.
- deploy/jarvis-watchdog.sh: self-healing watchdog (every 5 min)
* monitors lsws/mysql/redis, restarts on failure
* JARVIS HTTP self-check, restarts OLS on 5xx
* disk/memory alerts inserted to DB
* offline Proxmox VM agents restarted via qm guest exec
* log rotation (1000 line cap)
- deploy/jarvis-deploy.sh: smart deploy with PHP validation
* php8.3 syntax check on every changed .php file
* auto-reverts git commit + inserts critical alert on syntax error
* reloads OLS after JARVIS deploys
- api/endpoints/facts_collector.php: site health monitoring
* curls all 7 managed sites every 3 min
* stores up/down status in kb_facts
- api/endpoints/alerts.php: auto-heal + site alerts
* dispatches restart_service commands when services down on agents
* generates alerts from kb_facts site health data
- public_html/install-agent.sh: one-liner Linux agent installer
* installs deps, downloads agent, registers with JARVIS, sets up systemd
- public_html/webhook.php: fixed infra deploy path to /opt/infra