{"adoption": {"forks": 1706, "observed_at": "2026-08-28T04:11:53.567122+00:00", "stars": 29585}, "canonical_url": "https://ross.abutalabs.com/products/librepods", "card": {"archived": false, "artifact_type": "application", "description": "AirPods liberated from Apple's ecosystem.", "domain": ["hardware", "reverse-engineering", "accessibility", "cross-platform"], "enriched": true, "function": ["reverse-engineering", "developer-tools"], "health_score": 99, "homepage": null, "language": "Kotlin", "license": "GPL-3.0", "license_family": "copyleft", "maturity": "active", "member_repos": ["librepods-org/librepods"], "name": "librepods-org/librepods", "platform": ["jvm"], "pushed_at": "2026-08-25T11:17:03+00:00", "repo": "librepods-org/librepods", "stars": 29585, "tags": ["airpods", "bluetooth", "proprietary-protocol", "battery-monitor", "ear-detection", "hearing-aid", "conversational-awareness", "noise-control", "android", "linux"], "topics": ["airpods", "linux", "reverse-engineering", "android", "battery-monitor", "ear-detection", "conversational-awareness", "accessiblity", "hearing-aid", "hearing-aids"], "urls": [], "use_cases": ["use AirPods noise control modes on Android", "get accurate AirPods battery status on Linux", "enable ear detection outside the Apple ecosystem", "use AirPods hearing aid feature on non-Apple devices", "enable conversational awareness on Android", "rename AirPods from Linux or Android", "use AirPods head gestures on Android"], "what_it_is": "LibrePods is an open-source app that unlocks Apple AirPods-exclusive features on Linux and Android by implementing the proprietary Bluetooth protocol between AirPods and Apple devices. It supports noise control modes, ear detection, battery status, head gestures, conversational awareness, and hearing aid functionality.", "when_to_avoid": ["you only use AirPods with Apple devices where features work natively", "you need features like Loud Sound Reduction that are incomplete on your platform", "you are uncomfortable with apps that reverse-engineer proprietary protocols"], "when_to_choose": ["you use AirPods with Android or Linux and want Apple-exclusive features", "you want an open-source alternative to Apple's ecosystem lock-in", "you need AirPods accessibility features like hearing aid on non-Apple platforms"]}, "data_as_of": "2026-08-30T08:39:29.467469+00:00", "members": [{"path": "/products/librepods", "repo": "librepods-org/librepods", "role": "main", "score": 86}], "provenance": {"archived": {"kind": "observed", "observed_at": "2026-08-28T04:11:53.567122+00:00", "source": "github"}, "artifact_type": {"confidence": null, "enriched_at": "2026-08-29T16:52:54.891281+00:00", "kind": "inferred", "prompt_version": 1, "sources": [{"content_hash": "9fa4e3f1704d953b9c09d7911870d729c29ca2710310257041c5b1071be398bd", "fetched_at": "2026-08-28T04:11:53.567122+00:00", "kind": "readme", "missing": false, "url": "https://github.com/librepods-org/librepods"}], "taxonomy_version": 1}, "description": {"kind": "observed", "observed_at": "2026-08-28T04:11:53.567122+00:00", "source": "github"}, "domain": {"confidence": null, "enriched_at": "2026-08-29T16:52:54.891281+00:00", "kind": "inferred", "prompt_version": 1, "sources": [{"content_hash": "9fa4e3f1704d953b9c09d7911870d729c29ca2710310257041c5b1071be398bd", "fetched_at": "2026-08-28T04:11:53.567122+00:00", "kind": "readme", "missing": false, "url": "https://github.com/librepods-org/librepods"}], "taxonomy_version": 1}, "enriched": {"inputs": [], "kind": "computed", "method": "enrichment_status"}, "function": {"confidence": null, "enriched_at": "2026-08-29T16:52:54.891281+00:00", "kind": "inferred", "prompt_version": 1, "sources": [{"content_hash": "9fa4e3f1704d953b9c09d7911870d729c29ca2710310257041c5b1071be398bd", "fetched_at": "2026-08-28T04:11:53.567122+00:00", "kind": "readme", "missing": false, "url": "https://github.com/librepods-org/librepods"}], "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:11:53.567122+00:00", "source": "github"}, "language": {"kind": "observed", "observed_at": "2026-08-28T04:11:53.567122+00:00", "source": "github"}, "license": {"kind": "observed", "observed_at": "2026-08-28T04:11:53.567122+00:00", "source": "github"}, "license_family": {"inputs": ["license"], "kind": "computed", "method": "license_family"}, "maturity": {"confidence": null, "enriched_at": "2026-08-29T16:52:54.891281+00:00", "kind": "inferred", "prompt_version": 1, "sources": [{"content_hash": "9fa4e3f1704d953b9c09d7911870d729c29ca2710310257041c5b1071be398bd", "fetched_at": "2026-08-28T04:11:53.567122+00:00", "kind": "readme", "missing": false, "url": "https://github.com/librepods-org/librepods"}], "taxonomy_version": 1}, "member_repos": {"kind": "observed", "observed_at": "2026-08-28T04:11:53.567122+00:00", "source": "github"}, "name": {"kind": "observed", "observed_at": "2026-08-28T04:11:53.567122+00:00", "source": "github"}, "platform": {"confidence": null, "enriched_at": "2026-08-29T16:52:54.891281+00:00", "kind": "inferred", "prompt_version": 1, "sources": [{"content_hash": "9fa4e3f1704d953b9c09d7911870d729c29ca2710310257041c5b1071be398bd", "fetched_at": "2026-08-28T04:11:53.567122+00:00", "kind": "readme", "missing": false, "url": "https://github.com/librepods-org/librepods"}], "taxonomy_version": 1}, "pushed_at": {"kind": "observed", "observed_at": "2026-08-28T04:11:53.567122+00:00", "source": "github"}, "repo": {"kind": "observed", "observed_at": "2026-08-28T04:11:53.567122+00:00", "source": "github"}, "stars": {"kind": "observed", "observed_at": "2026-08-28T04:11:53.567122+00:00", "source": "github"}, "tags": {"confidence": null, "enriched_at": "2026-08-29T16:52:54.891281+00:00", "kind": "inferred", "prompt_version": 1, "sources": [{"content_hash": "9fa4e3f1704d953b9c09d7911870d729c29ca2710310257041c5b1071be398bd", "fetched_at": "2026-08-28T04:11:53.567122+00:00", "kind": "readme", "missing": false, "url": "https://github.com/librepods-org/librepods"}], "taxonomy_version": 1}, "topics": {"kind": "observed", "observed_at": "2026-08-28T04:11:53.567122+00:00", "source": "github"}, "urls": {"kind": "observed", "observed_at": "2026-08-28T04:11:53.567122+00:00", "source": "github"}, "use_cases": {"confidence": null, "enriched_at": "2026-08-29T16:52:54.891281+00:00", "kind": "inferred", "prompt_version": 1, "sources": [{"content_hash": "9fa4e3f1704d953b9c09d7911870d729c29ca2710310257041c5b1071be398bd", "fetched_at": "2026-08-28T04:11:53.567122+00:00", "kind": "readme", "missing": false, "url": "https://github.com/librepods-org/librepods"}], "taxonomy_version": 1}, "what_it_is": {"confidence": null, "enriched_at": "2026-08-29T16:52:54.891281+00:00", "kind": "inferred", "prompt_version": 1, "sources": [{"content_hash": "9fa4e3f1704d953b9c09d7911870d729c29ca2710310257041c5b1071be398bd", "fetched_at": "2026-08-28T04:11:53.567122+00:00", "kind": "readme", "missing": false, "url": "https://github.com/librepods-org/librepods"}], "taxonomy_version": 1}, "when_to_avoid": {"confidence": null, "enriched_at": "2026-08-29T16:52:54.891281+00:00", "kind": "inferred", "prompt_version": 1, "sources": [{"content_hash": "9fa4e3f1704d953b9c09d7911870d729c29ca2710310257041c5b1071be398bd", "fetched_at": "2026-08-28T04:11:53.567122+00:00", "kind": "readme", "missing": false, "url": "https://github.com/librepods-org/librepods"}], "taxonomy_version": 1}, "when_to_choose": {"confidence": null, "enriched_at": "2026-08-29T16:52:54.891281+00:00", "kind": "inferred", "prompt_version": 1, "sources": [{"content_hash": "9fa4e3f1704d953b9c09d7911870d729c29ca2710310257041c5b1071be398bd", "fetched_at": "2026-08-28T04:11:53.567122+00:00", "kind": "readme", "missing": false, "url": "https://github.com/librepods-org/librepods"}], "taxonomy_version": 1}}, "score": {"components": {"activity": 99, "longevity": 50, "rhythm": 89}, "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": 706, "days_push": 8, "days_rel": 74, "gap_med": 22, "n_releases_24m": 12}, "score": 86, "version": 2}, "staleness": {"enrichment_outdated": false, "low_confidence": false, "scrape_days": 9, "stale_scrape": false}}