{"adoption": {"forks": 170, "observed_at": "2026-08-28T04:03:13.217994+00:00", "stars": 1011}, "canonical_url": "https://ross.abutalabs.com/products/bgpalerter", "card": {"archived": false, "artifact_type": "application", "description": "BGP and RPKI monitoring tool. Pre-configured for real-time detection of visibility loss, RPKI invalid announcements, hijacks, ROA misconfiguration, and more.", "domain": ["networking", "monitoring", "security", "self-hosted"], "enriched": true, "function": ["monitoring", "alerting", "networking", "security"], "health_score": 91, "homepage": null, "language": "JavaScript", "license": "BSD-3-Clause", "license_family": "permissive", "maturity": "active", "member_repos": ["nttgin/BGPalerter"], "name": "nttgin/BGPalerter", "platform": ["windows", "cli", "self-hosted"], "pushed_at": "2026-07-28T03:22:26+00:00", "repo": "nttgin/BGPalerter", "stars": 1011, "tags": ["bgp", "rpki", "route-hijack-detection", "prefix-monitoring", "real-time-alerts", "network-operations", "linux", "macos", "nodejs"], "topics": ["bgp", "monitoring", "rpki", "network", "internet"], "urls": [], "use_cases": ["monitor my BGP prefixes for hijacks in real time", "get alerted when my prefixes lose visibility", "detect RPKI invalid announcements from my AS", "watch for expiring or unreachable ROAs", "detect unexpected upstream or downstream ASes in AS paths", "alert on new prefixes my AS announces for the first time"], "what_it_is": "BGPalerter is a self-configuring, real-time BGP and RPKI monitoring tool that detects prefix visibility loss, hijacks, RPKI invalid announcements, and ROA misconfigurations. It runs standalone against public BGP data repositories and delivers alerts via files, email, Slack, Kafka, and other channels.", "when_to_avoid": ["you need deep historical BGP analytics or dashboards rather than alerting", "you require monitoring fully inside your own network without external data repos", "you need a managed service with SLAs rather than a self-run tool"], "when_to_choose": ["you need zero-setup BGP/RPKI monitoring that auto-configures from public data", "you want real-time hijack and visibility-loss alerts without deploying network probes", "you need flexible alert delivery (email, Slack, Kafka, files)", "you operate an AS and want to catch ROA misconfigurations early"]}, "data_as_of": "2026-08-30T08:39:29.467469+00:00", "members": [{"path": "/products/bgpalerter", "repo": "nttgin/BGPalerter", "role": "main", "score": 77}], "provenance": {"archived": {"kind": "observed", "observed_at": "2026-08-28T04:03:13.217994+00:00", "source": "github"}, "artifact_type": {"confidence": null, "enriched_at": "2026-08-30T07:11:52.131889+00:00", "kind": "inferred", "prompt_version": 1, "sources": [{"content_hash": "8ab0cfb34a0ad019ca7762bb2a073dabb7728a6377be02b2fb7fdd5e36af0f77", "fetched_at": "2026-08-28T04:03:13.217994+00:00", "kind": "readme", "missing": false, "url": "https://github.com/nttgin/BGPalerter"}, {"content_hash": "cffc52cbb234c4e3323977c98de4e26c10e8a007abd40ee8e3a61ef78c1954cd", "fetched_at": "2026-08-29T13:11:45.023479+00:00", "kind": "registry_npm", "missing": false, "url": "https://registry.npmjs.org/bgpalerter"}], "taxonomy_version": 1}, "description": {"kind": "observed", "observed_at": "2026-08-28T04:03:13.217994+00:00", "source": "github"}, "domain": {"confidence": null, "enriched_at": "2026-08-30T07:11:52.131889+00:00", "kind": "inferred", "prompt_version": 1, "sources": [{"content_hash": "8ab0cfb34a0ad019ca7762bb2a073dabb7728a6377be02b2fb7fdd5e36af0f77", "fetched_at": "2026-08-28T04:03:13.217994+00:00", "kind": "readme", "missing": false, "url": "https://github.com/nttgin/BGPalerter"}, {"content_hash": "cffc52cbb234c4e3323977c98de4e26c10e8a007abd40ee8e3a61ef78c1954cd", "fetched_at": "2026-08-29T13:11:45.023479+00:00", "kind": "registry_npm", "missing": false, "url": "https://registry.npmjs.org/bgpalerter"}], "taxonomy_version": 1}, "enriched": {"inputs": [], "kind": "computed", "method": "enrichment_status"}, "function": {"confidence": null, "enriched_at": "2026-08-30T07:11:52.131889+00:00", "kind": "inferred", "prompt_version": 1, "sources": [{"content_hash": "8ab0cfb34a0ad019ca7762bb2a073dabb7728a6377be02b2fb7fdd5e36af0f77", "fetched_at": "2026-08-28T04:03:13.217994+00:00", "kind": "readme", "missing": false, "url": "https://github.com/nttgin/BGPalerter"}, {"content_hash": "cffc52cbb234c4e3323977c98de4e26c10e8a007abd40ee8e3a61ef78c1954cd", "fetched_at": "2026-08-29T13:11:45.023479+00:00", "kind": "registry_npm", "missing": false, "url": "https://registry.npmjs.org/bgpalerter"}], "taxonomy_version": 1}, "health_score": {"inputs": ["days_since_push", "days_since_release", "archived"], "kind": "computed", "method": "health_v1"}, "homepage": {"kind": "observed", "observed_at": "2026-08-28T04:03:13.217994+00:00", "source": "github"}, "language": {"kind": "observed", "observed_at": "2026-08-28T04:03:13.217994+00:00", "source": "github"}, "license": {"kind": "observed", "observed_at": "2026-08-28T04:03:13.217994+00:00", "source": "github"}, "license_family": {"inputs": ["license"], "kind": "computed", "method": "license_family"}, "maturity": {"confidence": null, "enriched_at": "2026-08-30T07:11:52.131889+00:00", "kind": "inferred", "prompt_version": 1, "sources": [{"content_hash": "8ab0cfb34a0ad019ca7762bb2a073dabb7728a6377be02b2fb7fdd5e36af0f77", "fetched_at": "2026-08-28T04:03:13.217994+00:00", "kind": "readme", "missing": false, "url": "https://github.com/nttgin/BGPalerter"}, {"content_hash": "cffc52cbb234c4e3323977c98de4e26c10e8a007abd40ee8e3a61ef78c1954cd", "fetched_at": "2026-08-29T13:11:45.023479+00:00", "kind": "registry_npm", "missing": false, "url": "https://registry.npmjs.org/bgpalerter"}], "taxonomy_version": 1}, "member_repos": {"kind": "observed", "observed_at": "2026-08-28T04:03:13.217994+00:00", "source": "github"}, "name": {"kind": "observed", "observed_at": "2026-08-28T04:03:13.217994+00:00", "source": "github"}, "platform": {"confidence": null, "enriched_at": "2026-08-30T07:11:52.131889+00:00", "kind": "inferred", "prompt_version": 1, "sources": [{"content_hash": "8ab0cfb34a0ad019ca7762bb2a073dabb7728a6377be02b2fb7fdd5e36af0f77", "fetched_at": "2026-08-28T04:03:13.217994+00:00", "kind": "readme", "missing": false, "url": "https://github.com/nttgin/BGPalerter"}, {"content_hash": "cffc52cbb234c4e3323977c98de4e26c10e8a007abd40ee8e3a61ef78c1954cd", "fetched_at": "2026-08-29T13:11:45.023479+00:00", "kind": "registry_npm", "missing": false, "url": "https://registry.npmjs.org/bgpalerter"}], "taxonomy_version": 1}, "pushed_at": {"kind": "observed", "observed_at": "2026-08-28T04:03:13.217994+00:00", "source": "github"}, "repo": {"kind": "observed", "observed_at": "2026-08-28T04:03:13.217994+00:00", "source": "github"}, "stars": {"kind": "observed", "observed_at": "2026-08-28T04:03:13.217994+00:00", "source": "github"}, "tags": {"confidence": null, "enriched_at": "2026-08-30T07:11:52.131889+00:00", "kind": "inferred", "prompt_version": 1, "sources": [{"content_hash": "8ab0cfb34a0ad019ca7762bb2a073dabb7728a6377be02b2fb7fdd5e36af0f77", "fetched_at": "2026-08-28T04:03:13.217994+00:00", "kind": "readme", "missing": false, "url": "https://github.com/nttgin/BGPalerter"}, {"content_hash": "cffc52cbb234c4e3323977c98de4e26c10e8a007abd40ee8e3a61ef78c1954cd", "fetched_at": "2026-08-29T13:11:45.023479+00:00", "kind": "registry_npm", "missing": false, "url": "https://registry.npmjs.org/bgpalerter"}], "taxonomy_version": 1}, "topics": {"kind": "observed", "observed_at": "2026-08-28T04:03:13.217994+00:00", "source": "github"}, "urls": {"kind": "observed", "observed_at": "2026-08-28T04:03:13.217994+00:00", "source": "github"}, "use_cases": {"confidence": null, "enriched_at": "2026-08-30T07:11:52.131889+00:00", "kind": "inferred", "prompt_version": 1, "sources": [{"content_hash": "8ab0cfb34a0ad019ca7762bb2a073dabb7728a6377be02b2fb7fdd5e36af0f77", "fetched_at": "2026-08-28T04:03:13.217994+00:00", "kind": "readme", "missing": false, "url": "https://github.com/nttgin/BGPalerter"}, {"content_hash": "cffc52cbb234c4e3323977c98de4e26c10e8a007abd40ee8e3a61ef78c1954cd", "fetched_at": "2026-08-29T13:11:45.023479+00:00", "kind": "registry_npm", "missing": false, "url": "https://registry.npmjs.org/bgpalerter"}], "taxonomy_version": 1}, "what_it_is": {"confidence": null, "enriched_at": "2026-08-30T07:11:52.131889+00:00", "kind": "inferred", "prompt_version": 1, "sources": [{"content_hash": "8ab0cfb34a0ad019ca7762bb2a073dabb7728a6377be02b2fb7fdd5e36af0f77", "fetched_at": "2026-08-28T04:03:13.217994+00:00", "kind": "readme", "missing": false, "url": "https://github.com/nttgin/BGPalerter"}, {"content_hash": "cffc52cbb234c4e3323977c98de4e26c10e8a007abd40ee8e3a61ef78c1954cd", "fetched_at": "2026-08-29T13:11:45.023479+00:00", "kind": "registry_npm", "missing": false, "url": "https://registry.npmjs.org/bgpalerter"}], "taxonomy_version": 1}, "when_to_avoid": {"confidence": null, "enriched_at": "2026-08-30T07:11:52.131889+00:00", "kind": "inferred", "prompt_version": 1, "sources": [{"content_hash": "8ab0cfb34a0ad019ca7762bb2a073dabb7728a6377be02b2fb7fdd5e36af0f77", "fetched_at": "2026-08-28T04:03:13.217994+00:00", "kind": "readme", "missing": false, "url": "https://github.com/nttgin/BGPalerter"}, {"content_hash": "cffc52cbb234c4e3323977c98de4e26c10e8a007abd40ee8e3a61ef78c1954cd", "fetched_at": "2026-08-29T13:11:45.023479+00:00", "kind": "registry_npm", "missing": false, "url": "https://registry.npmjs.org/bgpalerter"}], "taxonomy_version": 1}, "when_to_choose": {"confidence": null, "enriched_at": "2026-08-30T07:11:52.131889+00:00", "kind": "inferred", "prompt_version": 1, "sources": [{"content_hash": "8ab0cfb34a0ad019ca7762bb2a073dabb7728a6377be02b2fb7fdd5e36af0f77", "fetched_at": "2026-08-28T04:03:13.217994+00:00", "kind": "readme", "missing": false, "url": "https://github.com/nttgin/BGPalerter"}, {"content_hash": "cffc52cbb234c4e3323977c98de4e26c10e8a007abd40ee8e3a61ef78c1954cd", "fetched_at": "2026-08-29T13:11:45.023479+00:00", "kind": "registry_npm", "missing": false, "url": "https://registry.npmjs.org/bgpalerter"}], "taxonomy_version": 1}}, "score": {"components": {"activity": 94, "longevity": 100, "rhythm": 42}, "computed_at": "2026-09-02T17:46:02.011165+00:00", "flags": [], "formula": "round(0.45*activity + 0.35*rhythm + 0.20*longevity); archived -> min(score, 10)", "inputs": {"age_days": 2603, "days_push": 36, "days_rel": 391, "gap_med": 23, "n_releases_24m": 2}, "score": 77, "version": 2}, "staleness": {"enrichment_outdated": false, "low_confidence": false, "scrape_days": 9, "stale_scrape": false}}