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