{"adoption": {"forks": 100, "observed_at": "2026-08-28T04:06:41.902039+00:00", "stars": 2374}, "canonical_url": "https://ross.abutalabs.com/products/blocker", "card": {"archived": false, "artifact_type": "application", "description": "Utilize an integrated firewall to manage application components.", "domain": ["android-tools", "privacy", "developer-tools"], "enriched": true, "function": ["security", "developer-tools"], "health_score": 98, "homepage": null, "language": "Kotlin", "license": "Apache-2.0", "license_family": "permissive", "maturity": "active", "member_repos": ["lihenggui/blocker"], "name": "lihenggui/blocker", "platform": [], "pushed_at": "2026-08-26T11:59:41+00:00", "repo": "lihenggui/blocker", "stars": 2374, "tags": ["firewall", "component-controller", "jetpack-compose", "root", "app-management", "android"], "topics": ["android", "compose", "firewall", "kotlin"], "urls": [], "use_cases": ["disable unnecessary components in bloated android apps", "block app background services with intent firewall", "export and import component control rules between devices", "convert MyAndroidTools backups to intent firewall rules", "save battery by disabling redundant app features"], "what_it_is": "Blocker is an Android application that manages app components (activities, services, receivers, providers) using PackageManager and Intent Firewall. It lets users disable redundant components in bloated apps and export/import rules, including MyAndroidTools backup conversion.", "when_to_avoid": ["you need a network-level firewall rather than component control", "your device is not rooted and you need features requiring root or Shizuku", "you need an iOS or desktop component manager"], "when_to_choose": ["you want a lightweight Android component controller with multiple control backends", "you need rule export/import and MyAndroidTools compatibility", "you prefer an open-source, actively maintained app available on F-Droid and Play Store"]}, "data_as_of": "2026-08-30T08:39:29.467469+00:00", "members": [{"path": "/products/blocker", "repo": "lihenggui/blocker", "role": "main", "score": 72}], "provenance": {"archived": {"kind": "observed", "observed_at": "2026-08-28T04:06:41.902039+00:00", "source": "github"}, "artifact_type": {"confidence": null, "enriched_at": "2026-08-30T02:35:04.501826+00:00", "kind": "inferred", "prompt_version": 1, "sources": [{"content_hash": "69e01fcc0362d1bf528959e88b70bef1a24a2906f96a9497a8381d24ac056e9a", "fetched_at": "2026-08-28T04:06:41.902039+00:00", "kind": "readme", "missing": false, "url": "https://github.com/lihenggui/blocker"}], "taxonomy_version": 1}, "description": {"kind": "observed", "observed_at": "2026-08-28T04:06:41.902039+00:00", "source": "github"}, "domain": {"confidence": null, "enriched_at": "2026-08-30T02:35:04.501826+00:00", "kind": "inferred", "prompt_version": 1, "sources": [{"content_hash": "69e01fcc0362d1bf528959e88b70bef1a24a2906f96a9497a8381d24ac056e9a", "fetched_at": "2026-08-28T04:06:41.902039+00:00", "kind": "readme", "missing": false, "url": "https://github.com/lihenggui/blocker"}], "taxonomy_version": 1}, "enriched": {"inputs": [], "kind": "computed", "method": "enrichment_status"}, "function": {"confidence": null, "enriched_at": "2026-08-30T02:35:04.501826+00:00", "kind": "inferred", "prompt_version": 1, "sources": [{"content_hash": "69e01fcc0362d1bf528959e88b70bef1a24a2906f96a9497a8381d24ac056e9a", "fetched_at": "2026-08-28T04:06:41.902039+00:00", "kind": "readme", "missing": false, "url": "https://github.com/lihenggui/blocker"}], "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:41.902039+00:00", "source": "github"}, "language": {"kind": "observed", "observed_at": "2026-08-28T04:06:41.902039+00:00", "source": "github"}, "license": {"kind": "observed", "observed_at": "2026-08-28T04:06:41.902039+00:00", "source": "github"}, "license_family": {"inputs": ["license"], "kind": "computed", "method": "license_family"}, "maturity": {"confidence": null, "enriched_at": "2026-08-30T02:35:04.501826+00:00", "kind": "inferred", "prompt_version": 1, "sources": [{"content_hash": "69e01fcc0362d1bf528959e88b70bef1a24a2906f96a9497a8381d24ac056e9a", "fetched_at": "2026-08-28T04:06:41.902039+00:00", "kind": "readme", "missing": false, "url": "https://github.com/lihenggui/blocker"}], "taxonomy_version": 1}, "member_repos": {"kind": "observed", "observed_at": "2026-08-28T04:06:41.902039+00:00", "source": "github"}, "name": {"kind": "observed", "observed_at": "2026-08-28T04:06:41.902039+00:00", "source": "github"}, "platform": {"confidence": null, "enriched_at": "2026-08-30T02:35:04.501826+00:00", "kind": "inferred", "prompt_version": 1, "sources": [{"content_hash": "69e01fcc0362d1bf528959e88b70bef1a24a2906f96a9497a8381d24ac056e9a", "fetched_at": "2026-08-28T04:06:41.902039+00:00", "kind": "readme", "missing": false, "url": "https://github.com/lihenggui/blocker"}], "taxonomy_version": 1}, "pushed_at": {"kind": "observed", "observed_at": "2026-08-28T04:06:41.902039+00:00", "source": "github"}, "repo": {"kind": "observed", "observed_at": "2026-08-28T04:06:41.902039+00:00", "source": "github"}, "stars": {"kind": "observed", "observed_at": "2026-08-28T04:06:41.902039+00:00", "source": "github"}, "tags": {"confidence": null, "enriched_at": "2026-08-30T02:35:04.501826+00:00", "kind": "inferred", "prompt_version": 1, "sources": [{"content_hash": "69e01fcc0362d1bf528959e88b70bef1a24a2906f96a9497a8381d24ac056e9a", "fetched_at": "2026-08-28T04:06:41.902039+00:00", "kind": "readme", "missing": false, "url": "https://github.com/lihenggui/blocker"}], "taxonomy_version": 1}, "topics": {"kind": "observed", "observed_at": "2026-08-28T04:06:41.902039+00:00", "source": "github"}, "urls": {"kind": "observed", "observed_at": "2026-08-28T04:06:41.902039+00:00", "source": "github"}, "use_cases": {"confidence": null, "enriched_at": "2026-08-30T02:35:04.501826+00:00", "kind": "inferred", "prompt_version": 1, "sources": [{"content_hash": "69e01fcc0362d1bf528959e88b70bef1a24a2906f96a9497a8381d24ac056e9a", "fetched_at": "2026-08-28T04:06:41.902039+00:00", "kind": "readme", "missing": false, "url": "https://github.com/lihenggui/blocker"}], "taxonomy_version": 1}, "what_it_is": {"confidence": null, "enriched_at": "2026-08-30T02:35:04.501826+00:00", "kind": "inferred", "prompt_version": 1, "sources": [{"content_hash": "69e01fcc0362d1bf528959e88b70bef1a24a2906f96a9497a8381d24ac056e9a", "fetched_at": "2026-08-28T04:06:41.902039+00:00", "kind": "readme", "missing": false, "url": "https://github.com/lihenggui/blocker"}], "taxonomy_version": 1}, "when_to_avoid": {"confidence": null, "enriched_at": "2026-08-30T02:35:04.501826+00:00", "kind": "inferred", "prompt_version": 1, "sources": [{"content_hash": "69e01fcc0362d1bf528959e88b70bef1a24a2906f96a9497a8381d24ac056e9a", "fetched_at": "2026-08-28T04:06:41.902039+00:00", "kind": "readme", "missing": false, "url": "https://github.com/lihenggui/blocker"}], "taxonomy_version": 1}, "when_to_choose": {"confidence": null, "enriched_at": "2026-08-30T02:35:04.501826+00:00", "kind": "inferred", "prompt_version": 1, "sources": [{"content_hash": "69e01fcc0362d1bf528959e88b70bef1a24a2906f96a9497a8381d24ac056e9a", "fetched_at": "2026-08-28T04:06:41.902039+00:00", "kind": "readme", "missing": false, "url": "https://github.com/lihenggui/blocker"}], "taxonomy_version": 1}}, "score": {"components": {"activity": 99, "longevity": 100, "rhythm": 21}, "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": 3172, "days_push": 7, "days_rel": 318, "gap_med": 201.5, "n_releases_24m": 3}, "score": 72, "version": 2}, "staleness": {"enrichment_outdated": false, "low_confidence": false, "scrape_days": 9, "stale_scrape": false}}