← back to gallery

CVE Weather

Daily threat forecast for DevOps deploy decisions based on live CVE data

dev-toolssecuritycvedevopsdashboardthreat-intelligence
Open product ↗

CVE Weather

Real-time "threat weather" dashboard for DevOps teams and SREs. Answers the question: is today a safe day to deploy?

Aggregates critical and high-severity CVEs from NVD and OSV.dev, computes a daily threat level (Sunny / Cloudy / Stormy), and presents a 30-day history chart. Includes shareable SVG weather cards for Slack and embeddable badges for status pages.

How It Works

Every 30 minutes, the server fetches:
- Critical and high CVEs published in the last 24 hours from the NVD API
- Open-source vulnerabilities across npm, PyPI, Go, crates.io, and Linux ecosystems from OSV.dev

A threat score is computed:
``
score = (criticalCVEs × 3) + (highCVEs × 1) + (unfixedOSV × 2)
``

| Score | Level | Meaning |
|-------|-------|---------|
| 0–5 | Sunny | Safe to deploy |
| 6–15 | Cloudy | Proceed with caution |
| 16+ | Stormy | Hold deploys if possible |

Data Sources

| Source | URL | Refresh Interval |
|--------|-----|-----------------|
| NVD CVE API 2.0 | https://services.nvd.nist.gov/rest/json/cves/2.0 | Every 30 minutes |
| OSV.dev API | https://api.osv.dev/v1/query | Every 30 minutes |

API Endpoints

All endpoints are public, no authentication required.

| Method | Path | Description |
|--------|------|-------------|
| GET | /cve-weather/health | Health check with last fetch timestamps |
| GET | /cve-weather/api/weather | Current threat level, score, and breakdown |
| GET | /cve-weather/api/history?days=30 | Daily scores for last N days |
| GET | /cve-weather/api/cves?hours=48 | Recent critical/high CVEs |
| GET | /cve-weather/api/card | SVG weather card (shareable in Slack) |
| GET | /cve-weather/api/badge | SVG badge (embeddable in READMEs) |

Run Locally

npm install
PORT=4742 node server.js

Open http://localhost:4742/cve-weather/

The initial data fetch runs on startup. After that, data refreshes every 30 minutes via cron.

Embed the Badge

![CVE Weather](https://holyai.me/cve-weather/api/badge)

Stack