| Name | Modified | Size | Downloads / Week |
|---|---|---|---|
| Parent folder | |||
| remotepower-3.2.1.tar.gz | < 12 hours ago | 7.6 MB | |
| remotepower-3.2.1.tar.gz.sha256 | < 12 hours ago | 91 Bytes | |
| README.md | < 12 hours ago | 7.9 kB | |
| v3.2.1 -- SNMP integration, threshold alerts, ops polish source code.tar.gz | < 12 hours ago | 7.6 MB | |
| v3.2.1 -- SNMP integration, threshold alerts, ops polish source code.zip | < 12 hours ago | 7.8 MB | |
| Totals: 5 Items | 23.0 MB | 0 | |
RemotePower v3.2.1 — Release Notes
Released: 2026-05-26
Overview
v3.2.1 is a substantial follow-up release on top of v3.2.0. The big features (alerts inbox, inbound webhooks, MCP write tools, OIDC SSO, SNMPv2c polling, syslog ingestion) all shipped in v3.2.0; v3.2.1 is the operability pass: integration into every dashboard surface, threshold-driven alerting on SNMP-derived metrics, bug fixes from real-world testing, and polish on every new feature.
No schema migrations. Drop in the new tarball, reload nginx, hard-reload
the browser once to refresh the service-worker cache
(remotepower-shell-v3.2.0 → remotepower-shell-v3.2.1).
SNMP — became a first-class data source
In v3.2.0 SNMP shipped as a basic sys-group poll, buried in the CMDB asset modal. v3.2.1 surfaces SNMP data across the whole dashboard:
| Surface | What you see |
|---|---|
| Devices page card | Green/red 📡 pill next to the hostname + "SNMP up Nd" meta cell |
| Monitoring → Device Metrics | Separate SNMP table with CPU %, Memory %, Storage list, Temperature, Uptime |
| Device drawer → Actions & Settings | SNMP config form (enable / community / port / Poll now) for agentless devices |
| Device drawer → Audit | "SNMP" expandable card with full sys-group, per-core CPU pills, UCD-SNMP load avg + memory, storage table, interface table (admin/oper/speed/octets/errors), Mikrotik vendor block, UniFi vendor block, partial-error footer |
| Devices page filter | New dropdown: Any SNMP / Configured / OK / Failing |
| Alerts inbox | snmp_unreachable / snmp_dead / snmp_recover events |
| Outbound webhooks | Same events available in Settings → Notifications |
| MCP read tool | get_snmp_data(name) exposes the full data set to AI hosts |
What gets polled every 5 minutes
| MIB | Why |
|---|---|
| sys-group (RFC 3418) | sysDescr, sysObjectID, sysUpTime, sysContact, sysName, sysLocation |
hrProcessorTable (RFC 2790) |
Per-core load %. Works on Mikrotik + Linux + BSD |
hrStorageTable |
Memory + filesystems with used % |
| UCD-SNMP-MIB | Load averages + raw CPU ticks + UCD memory totals (net-snmp boxes) |
| Mikrotik vendor (1.3.6.1.4.1.14988) | RouterOS version, board temp, CPU MHz, voltage |
Deep-poll on demand
The drawer Audit tab also walks the IF-MIB::ifTable (interface
table). That walk is heavier than the 5-min sweep — bounded at 64
interfaces, runs only when the operator opens the SNMP card. Returns
admin/oper status, link speed, in/out octets, error counters per port.
SNMP threshold alerts
SNMP-derived values flow through the same threshold pipeline as agent metrics. The metric-threshold modal grows two rows:
- SNMP CPU % — defaults warn 75, crit 90
- Temperature °C — defaults warn 70, crit 85
Disk and memory % share the existing agent thresholds.
Fires metric_warning / metric_critical / metric_recovered
through the regular event pipeline — alerts inbox + outbound webhooks
- Server Status site-health rollup, all wired transparently.
Unmonitored devices still collect SNMP data (visible in the metrics table with a "silent" badge) but skip the alert fire. Same posture as the agent metric pipeline.
Edge-triggered transitions
snmp_unreachable— fires once on the 2nd consecutive poll failure. Severity: high. Single-packet UDP loss never alerts.snmp_dead— fires at the 72nd consecutive failure (~6 hours at the 5-min cadence). Severity: critical. Different event so operators can configure their webhook destinations separately.snmp_recover— auto-resolves BOTHsnmp_unreachableandsnmp_deadrows in the Alerts inbox via_ALERT_RECOVER_EXTRA.
Alerts inbox — operability
- Unmonitored devices no longer pollute the inbox. The
_record_alerthelper now applies the same monitored-gate thatfire_webhookalready had on outbound fan-out. Fleet-wide events (no device_id) and orphan events (device deleted) still record. - Clear-alerts buttons. "Clear resolved" purges every resolved row; "Clear all" wipes everything (with double-confirm). Admin-only, audit-logged.
- Always-visible green-at-zero badges. Alerts and MCP Confirmations sidebar entries show their count badge even at 0 (green) — the empty state was misread as "no inbox exists".
metric_criticalevents now enter the inbox. Previously missing from_ALERT_RULES; 90%+ threshold breaches fired the webhook but never created an inbox row._fire_metric_webhookpayload aliases. Addedmetricandlevelkeys so the alert serializer can render the title and classify severity correctly from the metric-event shape.
MCP write tools — pre-validation
run_saved_script previously validated the script_id inside
_mcp_execute — which runs AFTER the operator approves a
confirmation. A typo would park a doomed confirmation that would fail
silently on approval. v3.2.1 adds _mcp_validate_params that runs
BEFORE the confirmation queue, so bogus IDs return 400 immediately.
Server Status
- Site health card — load average (1/5/15 min from
/proc/loadavg), system memory % (from/proc/meminfo), active session count, devices-online %, derivedok | warnrollup with reason flags (high load, memory > 90%, < 80% devices online, < 90% webhook rate). - Webhook delivery rate fix. No longer counts
disabled/suppressed/filteredlog entries as failed attempts. The 1/10 = 10% display on quiet fleets is gone. Now reads correctly as1/1 = 100%with 9skippedreported separately. Site-health flag ignores all-skipped case. - Inbound webhook + syslog rate card. New row alongside outbound
delivery — 24h/7d rates with by-kind breakdown
(
alert:N · syslog:M). - Webhook log capacity bumped 100 → 500 entries so the 24h rate window survives a noisy day.
OIDC
- Test discovery endpoint.
POST /api/auth/oidc/test(admin) probes the configured issuer at/.well-known/openid-configurationand returns the discovered endpoints + warnings for common misconfigs (missing client_secret, no openid scope, etc.). - "Test discovery" button on the OIDC settings pane. Shows the redirect URI you need to register with your IdP, plus the parsed authorize / token / userinfo / jwks endpoints.
UI polish
- Sidebar widened 200 → 220 px to fit "MCP Confirmations" + count badge cleanly without clipping. Page content margin moved in lockstep.
- Duplicate "TLS / DNS" title above ACME Certificates removed. The title now lives inside the expiry panel so it doesn't render twice when viewing ACME.
- README gallery — click-through screenshot gallery via GitHub
<details>accordion. Index.png remains the hero.
Security review notes
- Bearer auth (
Authorization: Bearer <token>) accepted on every endpoint, not just/api/metrics. Token verification path is uniform — same TTL, role, admin gate.X-Tokenwins when both headers are present so proxy-injected Authorization headers can't override dashboard sessions. Seedocs/security.md. - MCP role separation enforced — admin tokens cannot call MCP write
endpoints; only
mcprole keys can. Audit log records the originating AI host (X-MCP-Client) and natural-language prompt (X-MCP-Prompt) on every call.
Test coverage
1727 tests pass (was 1672 at the v3.2.0 base ship). Adds coverage for SNMP threshold alerts, clear-alerts endpoints, MCP write-tool pre-validation, unmonitored alert suppression, webhook-rate fix, SNMP walk subtree-boundary semantics, OIDC validation, and Bearer auth parity (X-Token vs. Authorization).
Upgrade
make dist # builds dist/remotepower-3.2.1.tar.gz
Deploy the tarball, reload nginx, hard-reload the browser once. No schema migrations required.