{"adoption": {"forks": 147, "observed_at": "2026-08-28T04:06:53.737800+00:00", "stars": 2468}, "canonical_url": "https://ross.abutalabs.com/products/airguard", "card": {"archived": false, "artifact_type": "application", "description": "Protect yourself from being tracked 🌍 by AirTags 🏷 and Find My accessories 📍", "domain": ["security", "privacy", "android-tools", "mobile-development"], "enriched": true, "function": ["security", "privacy", "monitoring"], "health_score": 99, "homepage": null, "language": "Kotlin", "license": "Apache-2.0", "license_family": "permissive", "maturity": "active", "member_repos": ["seemoo-lab/AirGuard"], "name": "seemoo-lab/AirGuard", "platform": ["jvm"], "pushed_at": "2026-08-20T14:21:13+00:00", "repo": "seemoo-lab/AirGuard", "stars": 2468, "tags": ["airtag", "find-my", "anti-tracking", "ble-scanning", "stalkerware-detection", "notification", "android", "mobile"], "topics": [], "urls": [], "use_cases": ["detect if someone put an airtag in my bag", "get notified when a find my tracker follows me", "find a hidden airtag and make it beep", "see locations where a tracker followed me", "anti-stalking protection on android", "scan surroundings for bluetooth tracking devices"], "what_it_is": "AirGuard is an Android app that protects users from unwanted tracking via AirTags and other Apple Find My accessories. It periodically scans for nearby tracking devices, sends alerts when one appears to be following you, and lets you locate and play a sound on detected AirTags.", "when_to_avoid": ["you need detection of non-Find My trackers like Tile or Samsung SmartTags (limited support)", "you need an iOS app", "you want passive background-only scanning without periodic BLE scans"], "when_to_choose": ["you use Android and want AirTag/Find My tracking detection similar to iOS alerts", "you want an open-source, F-Droid-available anti-tracking app", "you need to locate and disable a found AirTag"]}, "data_as_of": "2026-08-30T08:39:29.467469+00:00", "members": [{"path": "/products/airguard", "repo": "seemoo-lab/AirGuard", "role": "main", "score": 92}], "provenance": {"archived": {"kind": "observed", "observed_at": "2026-08-28T04:06:53.737800+00:00", "source": "github"}, "artifact_type": {"confidence": null, "enriched_at": "2026-08-30T02:29:11.916491+00:00", "kind": "inferred", "prompt_version": 1, "sources": [{"content_hash": "f0cb6f4d1fec5f1003f5147a2ab3c8358a5ae3003ac9b2f238a197dd75993755", "fetched_at": "2026-08-28T04:06:53.737800+00:00", "kind": "readme", "missing": false, "url": "https://github.com/seemoo-lab/AirGuard"}], "taxonomy_version": 1}, "description": {"kind": "observed", "observed_at": "2026-08-28T04:06:53.737800+00:00", "source": "github"}, "domain": {"confidence": null, "enriched_at": "2026-08-30T02:29:11.916491+00:00", "kind": "inferred", "prompt_version": 1, "sources": [{"content_hash": "f0cb6f4d1fec5f1003f5147a2ab3c8358a5ae3003ac9b2f238a197dd75993755", "fetched_at": "2026-08-28T04:06:53.737800+00:00", "kind": "readme", "missing": false, "url": "https://github.com/seemoo-lab/AirGuard"}], "taxonomy_version": 1}, "enriched": {"inputs": [], "kind": "computed", "method": "enrichment_status"}, "function": {"confidence": null, "enriched_at": "2026-08-30T02:29:11.916491+00:00", "kind": "inferred", "prompt_version": 1, "sources": [{"content_hash": "f0cb6f4d1fec5f1003f5147a2ab3c8358a5ae3003ac9b2f238a197dd75993755", "fetched_at": "2026-08-28T04:06:53.737800+00:00", "kind": "readme", "missing": false, "url": "https://github.com/seemoo-lab/AirGuard"}], "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:06:53.737800+00:00", "source": "github"}, "language": {"kind": "observed", "observed_at": "2026-08-28T04:06:53.737800+00:00", "source": "github"}, "license": {"kind": "observed", "observed_at": "2026-08-28T04:06:53.737800+00:00", "source": "github"}, "license_family": {"inputs": ["license"], "kind": "computed", "method": "license_family"}, "maturity": {"confidence": null, "enriched_at": "2026-08-30T02:29:11.916491+00:00", "kind": "inferred", "prompt_version": 1, "sources": [{"content_hash": "f0cb6f4d1fec5f1003f5147a2ab3c8358a5ae3003ac9b2f238a197dd75993755", "fetched_at": "2026-08-28T04:06:53.737800+00:00", "kind": "readme", "missing": false, "url": "https://github.com/seemoo-lab/AirGuard"}], "taxonomy_version": 1}, "member_repos": {"kind": "observed", "observed_at": "2026-08-28T04:06:53.737800+00:00", "source": "github"}, "name": {"kind": "observed", "observed_at": "2026-08-28T04:06:53.737800+00:00", "source": "github"}, "platform": {"confidence": null, "enriched_at": "2026-08-30T02:29:11.916491+00:00", "kind": "inferred", "prompt_version": 1, "sources": [{"content_hash": "f0cb6f4d1fec5f1003f5147a2ab3c8358a5ae3003ac9b2f238a197dd75993755", "fetched_at": "2026-08-28T04:06:53.737800+00:00", "kind": "readme", "missing": false, "url": "https://github.com/seemoo-lab/AirGuard"}], "taxonomy_version": 1}, "pushed_at": {"kind": "observed", "observed_at": "2026-08-28T04:06:53.737800+00:00", "source": "github"}, "repo": {"kind": "observed", "observed_at": "2026-08-28T04:06:53.737800+00:00", "source": "github"}, "stars": {"kind": "observed", "observed_at": "2026-08-28T04:06:53.737800+00:00", "source": "github"}, "tags": {"confidence": null, "enriched_at": "2026-08-30T02:29:11.916491+00:00", "kind": "inferred", "prompt_version": 1, "sources": [{"content_hash": "f0cb6f4d1fec5f1003f5147a2ab3c8358a5ae3003ac9b2f238a197dd75993755", "fetched_at": "2026-08-28T04:06:53.737800+00:00", "kind": "readme", "missing": false, "url": "https://github.com/seemoo-lab/AirGuard"}], "taxonomy_version": 1}, "topics": {"kind": "observed", "observed_at": "2026-08-28T04:06:53.737800+00:00", "source": "github"}, "urls": {"kind": "observed", "observed_at": "2026-08-28T04:06:53.737800+00:00", "source": "github"}, "use_cases": {"confidence": null, "enriched_at": "2026-08-30T02:29:11.916491+00:00", "kind": "inferred", "prompt_version": 1, "sources": [{"content_hash": "f0cb6f4d1fec5f1003f5147a2ab3c8358a5ae3003ac9b2f238a197dd75993755", "fetched_at": "2026-08-28T04:06:53.737800+00:00", "kind": "readme", "missing": false, "url": "https://github.com/seemoo-lab/AirGuard"}], "taxonomy_version": 1}, "what_it_is": {"confidence": null, "enriched_at": "2026-08-30T02:29:11.916491+00:00", "kind": "inferred", "prompt_version": 1, "sources": [{"content_hash": "f0cb6f4d1fec5f1003f5147a2ab3c8358a5ae3003ac9b2f238a197dd75993755", "fetched_at": "2026-08-28T04:06:53.737800+00:00", "kind": "readme", "missing": false, "url": "https://github.com/seemoo-lab/AirGuard"}], "taxonomy_version": 1}, "when_to_avoid": {"confidence": null, "enriched_at": "2026-08-30T02:29:11.916491+00:00", "kind": "inferred", "prompt_version": 1, "sources": [{"content_hash": "f0cb6f4d1fec5f1003f5147a2ab3c8358a5ae3003ac9b2f238a197dd75993755", "fetched_at": "2026-08-28T04:06:53.737800+00:00", "kind": "readme", "missing": false, "url": "https://github.com/seemoo-lab/AirGuard"}], "taxonomy_version": 1}, "when_to_choose": {"confidence": null, "enriched_at": "2026-08-30T02:29:11.916491+00:00", "kind": "inferred", "prompt_version": 1, "sources": [{"content_hash": "f0cb6f4d1fec5f1003f5147a2ab3c8358a5ae3003ac9b2f238a197dd75993755", "fetched_at": "2026-08-28T04:06:53.737800+00:00", "kind": "readme", "missing": false, "url": "https://github.com/seemoo-lab/AirGuard"}], "taxonomy_version": 1}}, "score": {"components": {"activity": 98, "longevity": 100, "rhythm": 81}, "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": 1878, "days_push": 13, "days_rel": 44, "gap_med": 35.0, "n_releases_24m": 11}, "score": 92, "version": 2}, "staleness": {"enrichment_outdated": false, "low_confidence": false, "scrape_days": 9, "stale_scrape": false}}