{"adoption": {"forks": 94, "observed_at": "2026-09-01T02:14:03.680028+00:00", "stars": 1183}, "canonical_url": "https://ross.abutalabs.com/products/leiweibau-pialert", "card": {"archived": false, "artifact_type": "application", "description": "Scan the devices connected to your WIFI / LAN and alert you the connection of unknown devices. It also warns if a \"always connected\" device disconnects. In addition, it is possible to check web services for availability. For this purpose HTTP status codes and the response time of the service are evaluated.", "domain": ["networking", "security", "monitoring", "self-hosted"], "enriched": true, "function": ["monitoring", "alerting", "networking", "security", "self-hosted"], "health_score": 100, "homepage": "https://leiweibau.net", "language": "PHP", "license": "GPL-3.0", "license_family": "copyleft", "maturity": "active", "member_repos": ["leiweibau/Pi.Alert"], "name": "leiweibau/Pi.Alert", "platform": ["self-hosted"], "pushed_at": "2026-08-30T20:38:53+00:00", "repo": "leiweibau/Pi.Alert", "stars": 1183, "tags": ["network-scanning", "arp-scan", "device-discovery", "presence-detection", "pi-hole", "nmap", "wake-on-lan", "ssl-certificate-monitoring", "notifications", "home-assistant", "devops", "linux", "web-server", "docker"], "topics": ["arp-scan", "security", "self-hosted", "pi-hole", "pialert", "network-security"], "urls": [], "use_cases": ["alert me when an unknown device joins my wifi", "monitor my home network for new devices", "get notified when a device goes offline", "check if my web services are up and measure response time", "monitor ssl certificate changes on my websites", "detect rogue dhcp servers on my lan", "track devices across routers and switches", "integrate network presence into home assistant"], "what_it_is": "Pi.Alert is a self-hosted network monitoring application that scans Wi-Fi and LAN for connected devices and alerts on unknown or missing devices. It also monitors web services via HTTP status, response time, and SSL certificate checks, with a PHP web interface and multiple notification channels.", "when_to_avoid": ["you need enterprise-grade network monitoring like SNMP polling or flow analysis", "you want a lightweight headless daemon without a web interface", "your environment is not Linux-based or cannot run cron jobs and a PHP web server"], "when_to_choose": ["you want self-hosted device presence monitoring for a home or small office LAN", "you use Pi-hole, UniFi, FRITZ!Box, OpenWrt, pfSense, or similar and want to import their host data", "you need alerts for unknown devices, disconnected always-on devices, or service/SSL changes", "you want a web UI with device history, notes, and an API"]}, "data_as_of": "2026-08-30T08:39:29.467469+00:00", "members": [{"path": "/products/leiweibau-pialert", "repo": "leiweibau/Pi.Alert", "role": "main", "score": 99}], "provenance": {"archived": {"kind": "observed", "observed_at": "2026-09-01T02:14:03.680028+00:00", "source": "github"}, "artifact_type": {"confidence": null, "enriched_at": "2026-08-30T06:26:07.111512+00:00", "kind": "inferred", "prompt_version": 1, "sources": [{"content_hash": "7e00f422638b622b8ef40c3427afe31dd12ed32fc706dd0693a79fb04f2d0457", "fetched_at": "2026-09-01T02:14:03.680028+00:00", "kind": "readme", "missing": false, "url": "https://github.com/leiweibau/Pi.Alert"}, {"content_hash": "a9ede64c22c4ee363306ab9f6df51a0d93aa382d77d37eedfa1374ec28cfce85", "fetched_at": "2026-08-29T12:32:37.403090+00:00", "kind": "homepage", "missing": false, "url": "https://leiweibau.net"}], "taxonomy_version": 1}, "description": {"kind": "observed", "observed_at": "2026-09-01T02:14:03.680028+00:00", "source": "github"}, "domain": {"confidence": null, "enriched_at": "2026-08-30T06:26:07.111512+00:00", "kind": "inferred", "prompt_version": 1, "sources": [{"content_hash": "7e00f422638b622b8ef40c3427afe31dd12ed32fc706dd0693a79fb04f2d0457", "fetched_at": "2026-09-01T02:14:03.680028+00:00", "kind": "readme", "missing": false, "url": "https://github.com/leiweibau/Pi.Alert"}, {"content_hash": "a9ede64c22c4ee363306ab9f6df51a0d93aa382d77d37eedfa1374ec28cfce85", "fetched_at": "2026-08-29T12:32:37.403090+00:00", "kind": "homepage", "missing": false, "url": "https://leiweibau.net"}], "taxonomy_version": 1}, "enriched": {"inputs": [], "kind": "computed", "method": "enrichment_status"}, "function": {"confidence": null, "enriched_at": "2026-08-30T06:26:07.111512+00:00", "kind": "inferred", "prompt_version": 1, "sources": [{"content_hash": "7e00f422638b622b8ef40c3427afe31dd12ed32fc706dd0693a79fb04f2d0457", "fetched_at": "2026-09-01T02:14:03.680028+00:00", "kind": "readme", "missing": false, "url": "https://github.com/leiweibau/Pi.Alert"}, {"content_hash": "a9ede64c22c4ee363306ab9f6df51a0d93aa382d77d37eedfa1374ec28cfce85", "fetched_at": "2026-08-29T12:32:37.403090+00:00", "kind": "homepage", "missing": false, "url": "https://leiweibau.net"}], "taxonomy_version": 1}, "health_score": {"inputs": ["days_since_push", "days_since_release", "archived"], "kind": "computed", "method": "health_v1"}, "homepage": {"kind": "observed", "observed_at": "2026-09-01T02:14:03.680028+00:00", "source": "github"}, "language": {"kind": "observed", "observed_at": "2026-09-01T02:14:03.680028+00:00", "source": "github"}, "license": {"kind": "observed", "observed_at": "2026-09-01T02:14:03.680028+00:00", "source": "github"}, "license_family": {"inputs": ["license"], "kind": "computed", "method": "license_family"}, "maturity": {"confidence": null, "enriched_at": "2026-08-30T06:26:07.111512+00:00", "kind": "inferred", "prompt_version": 1, "sources": [{"content_hash": "7e00f422638b622b8ef40c3427afe31dd12ed32fc706dd0693a79fb04f2d0457", "fetched_at": "2026-09-01T02:14:03.680028+00:00", "kind": "readme", "missing": false, "url": "https://github.com/leiweibau/Pi.Alert"}, {"content_hash": "a9ede64c22c4ee363306ab9f6df51a0d93aa382d77d37eedfa1374ec28cfce85", "fetched_at": "2026-08-29T12:32:37.403090+00:00", "kind": "homepage", "missing": false, "url": "https://leiweibau.net"}], "taxonomy_version": 1}, "member_repos": {"kind": "observed", "observed_at": "2026-09-01T02:14:03.680028+00:00", "source": "github"}, "name": {"kind": "observed", "observed_at": "2026-09-01T02:14:03.680028+00:00", "source": "github"}, "platform": {"confidence": null, "enriched_at": "2026-08-30T06:26:07.111512+00:00", "kind": "inferred", "prompt_version": 1, "sources": [{"content_hash": "7e00f422638b622b8ef40c3427afe31dd12ed32fc706dd0693a79fb04f2d0457", "fetched_at": "2026-09-01T02:14:03.680028+00:00", "kind": "readme", "missing": false, "url": "https://github.com/leiweibau/Pi.Alert"}, {"content_hash": "a9ede64c22c4ee363306ab9f6df51a0d93aa382d77d37eedfa1374ec28cfce85", "fetched_at": "2026-08-29T12:32:37.403090+00:00", "kind": "homepage", "missing": false, "url": "https://leiweibau.net"}], "taxonomy_version": 1}, "pushed_at": {"kind": "observed", "observed_at": "2026-09-01T02:14:03.680028+00:00", "source": "github"}, "repo": {"kind": "observed", "observed_at": "2026-09-01T02:14:03.680028+00:00", "source": "github"}, "stars": {"kind": "observed", "observed_at": "2026-09-01T02:14:03.680028+00:00", "source": "github"}, "tags": {"confidence": null, "enriched_at": "2026-08-30T06:26:07.111512+00:00", "kind": "inferred", "prompt_version": 1, "sources": [{"content_hash": "7e00f422638b622b8ef40c3427afe31dd12ed32fc706dd0693a79fb04f2d0457", "fetched_at": "2026-09-01T02:14:03.680028+00:00", "kind": "readme", "missing": false, "url": "https://github.com/leiweibau/Pi.Alert"}, {"content_hash": "a9ede64c22c4ee363306ab9f6df51a0d93aa382d77d37eedfa1374ec28cfce85", "fetched_at": "2026-08-29T12:32:37.403090+00:00", "kind": "homepage", "missing": false, "url": "https://leiweibau.net"}], "taxonomy_version": 1}, "topics": {"kind": "observed", "observed_at": "2026-09-01T02:14:03.680028+00:00", "source": "github"}, "urls": {"kind": "observed", "observed_at": "2026-09-01T02:14:03.680028+00:00", "source": "github"}, "use_cases": {"confidence": null, "enriched_at": "2026-08-30T06:26:07.111512+00:00", "kind": "inferred", "prompt_version": 1, "sources": [{"content_hash": "7e00f422638b622b8ef40c3427afe31dd12ed32fc706dd0693a79fb04f2d0457", "fetched_at": "2026-09-01T02:14:03.680028+00:00", "kind": "readme", "missing": false, "url": "https://github.com/leiweibau/Pi.Alert"}, {"content_hash": "a9ede64c22c4ee363306ab9f6df51a0d93aa382d77d37eedfa1374ec28cfce85", "fetched_at": "2026-08-29T12:32:37.403090+00:00", "kind": "homepage", "missing": false, "url": "https://leiweibau.net"}], "taxonomy_version": 1}, "what_it_is": {"confidence": null, "enriched_at": "2026-08-30T06:26:07.111512+00:00", "kind": "inferred", "prompt_version": 1, "sources": [{"content_hash": "7e00f422638b622b8ef40c3427afe31dd12ed32fc706dd0693a79fb04f2d0457", "fetched_at": "2026-09-01T02:14:03.680028+00:00", "kind": "readme", "missing": false, "url": "https://github.com/leiweibau/Pi.Alert"}, {"content_hash": "a9ede64c22c4ee363306ab9f6df51a0d93aa382d77d37eedfa1374ec28cfce85", "fetched_at": "2026-08-29T12:32:37.403090+00:00", "kind": "homepage", "missing": false, "url": "https://leiweibau.net"}], "taxonomy_version": 1}, "when_to_avoid": {"confidence": null, "enriched_at": "2026-08-30T06:26:07.111512+00:00", "kind": "inferred", "prompt_version": 1, "sources": [{"content_hash": "7e00f422638b622b8ef40c3427afe31dd12ed32fc706dd0693a79fb04f2d0457", "fetched_at": "2026-09-01T02:14:03.680028+00:00", "kind": "readme", "missing": false, "url": "https://github.com/leiweibau/Pi.Alert"}, {"content_hash": "a9ede64c22c4ee363306ab9f6df51a0d93aa382d77d37eedfa1374ec28cfce85", "fetched_at": "2026-08-29T12:32:37.403090+00:00", "kind": "homepage", "missing": false, "url": "https://leiweibau.net"}], "taxonomy_version": 1}, "when_to_choose": {"confidence": null, "enriched_at": "2026-08-30T06:26:07.111512+00:00", "kind": "inferred", "prompt_version": 1, "sources": [{"content_hash": "7e00f422638b622b8ef40c3427afe31dd12ed32fc706dd0693a79fb04f2d0457", "fetched_at": "2026-09-01T02:14:03.680028+00:00", "kind": "readme", "missing": false, "url": "https://github.com/leiweibau/Pi.Alert"}, {"content_hash": "a9ede64c22c4ee363306ab9f6df51a0d93aa382d77d37eedfa1374ec28cfce85", "fetched_at": "2026-08-29T12:32:37.403090+00:00", "kind": "homepage", "missing": false, "url": "https://leiweibau.net"}], "taxonomy_version": 1}}, "score": {"components": {"activity": 100, "longevity": 100, "rhythm": 98}, "computed_at": "2026-09-03T02:20:16.233290+00:00", "flags": [], "formula": "round(0.45*activity + 0.35*rhythm + 0.20*longevity); archived -> min(score, 10)", "inputs": {"age_days": 1566, "days_push": 3, "days_rel": 19, "gap_med": 22, "n_releases_24m": 26}, "score": 99, "version": 2}, "staleness": {"enrichment_outdated": false, "low_confidence": false, "scrape_days": 5, "stale_scrape": false}}