8 Commits

Author SHA1 Message Date
bvandeusen cefdf17799 feat(host_agent): use public_base_url helper for rotate-token URL 2026-04-15 23:31:00 -04:00
bvandeusen a72aff4cbc feat(host_agent): use public_base_url helper for install script 2026-04-15 21:16:38 -04:00
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
bvandeusen be4654fc72 feat: add http, snmp, docker plugins; new widgets and routes for traefik/unifi/ups
- Add HTTP monitor plugin: endpoint checking with status history, latency tracking, time-range views
- Add SNMP plugin: OID polling, device management, metric recording
- Add Docker plugin: container status, resource usage, widget
- Traefik: access log widget, request chart widget, expanded routes
- UniFi: clients widget, devices widget, expanded poll routes
- UPS: history widget, additional routes
- Update plugin index with new entries

Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
2026-03-23 17:40:36 -04:00
bvandeusen d9886e8680 fix: reduce log noise and guard against non-dict SNMP devices
- SNMP scheduler: skip non-dict entries in devices list (prevents AttributeError)
- UPS scheduler: downgrade NutError from exception to warning (expected when NUT not running)
- UniFi scheduler: downgrade login/poll failures from exception to warning (expected when controller unreachable)

Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
2026-03-23 17:38:24 -04:00
bvandeusen 9e34d8d739 chore: set repository URLs to git.fabledsword.com
Update repository_url, homepage, and download_url in index.yaml and all
plugin.yaml files to point to the self-hosted Gitea instance.

Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
2026-03-22 18:36:15 -04:00
bvandeusen ad4fcd1cfd feat: initial release — traefik, unifi, ups plugins
First-party plugins for Fabled Scryer (https://github.com/bvandeusen/fabledscryer).

traefik: Prometheus metrics scraping, stats history, access log parsing (GeoIP optional)
unifi:   UniFi controller integration — WAN health, devices, clients, DPI, events
ups:     UPS monitoring via NUT (Network UPS Tools), Ansible shutdown automation

Each plugin follows the Fabled Scryer plugin contract:
  setup(app), get_scheduled_tasks(), get_blueprint()

index.yaml lists all three plugins in the catalog format. Populate
checksum_sha256 entries once release zips are published via GitHub Releases.

Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
2026-03-22 18:28:43 -04:00