2 Commits

Author SHA1 Message Date
bvandeusen 9eda04e57b polish(host_agent): settings table padding + confirm guards + widget flex rows
- settings_list: use global .table class for proper cell padding,
  wrap confirm() on rotate/delete submit, use btn-sm and btn-danger
  for clearer destructive affordance
- widget_table: replace naked table (unstyled, header wrap) with
  flex rows matching docker/snmp widget convention, compact labels,
  health dot colored by worst-of cpu/mem/disk thresholds
2026-04-15 18:25:48 -04:00
bvandeusen 7468806bad feat: add host_agent plugin — push-model host resource monitoring
Lightweight stdlib-only Python agent runs on each monitored host,
collects CPU / memory / disk / load / uptime from /proc every 30s,
and POSTs signed payloads to the Roundtable ingest endpoint. One-line
curl-pipe installer creates a hardened systemd unit; admin UI manages
host registrations with rotate / revoke.

- agent.py: 370 LoC single-file daemon, ring buffer + exponential backoff
- ingest route: bearer-token auth, metric expansion into plugin_metrics
- install.sh.j2: systemd unit with NoNewPrivileges / ProtectSystem / ProtectHome
- settings UI: add host / rotate token / delete registration (admin-only)
- dashboard widgets: fleet-glance table + per-host history chart
- stale-agent scheduler: 60s log warning for agents past 180s silence

Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
2026-04-15 01:04:51 -04:00