{"adoption": {"forks": 450, "observed_at": "2026-08-28T04:04:27.395638+00:00", "stars": 1346}, "canonical_url": "https://ross.abutalabs.com/products/android-udev-rules", "card": {"archived": false, "artifact_type": "cli-tool", "description": "Android udev rules list aimed to be the most comprehensive on the net", "domain": ["android-tools", "developer-tools", "operating-systems"], "enriched": true, "function": ["developer-tools", "configuration-management"], "health_score": 97, "homepage": null, "language": "Shell", "license": "GPL-3.0", "license_family": "copyleft", "maturity": "active", "member_repos": ["M0Rf30/android-udev-rules"], "name": "M0Rf30/android-udev-rules", "platform": [], "pushed_at": "2026-08-20T13:34:47+00:00", "repo": "M0Rf30/android-udev-rules", "stars": 1346, "tags": ["udev-rules", "adb", "android-debugging", "usb-devices", "shell", "linux"], "topics": ["android", "udev", "rules"], "urls": [], "use_cases": ["adb devices shows no device on linux", "fix android usb permissions on linux", "fastboot cannot detect my device", "set up android debugging on arch or fedora", "udev rules for android phones and tablets", "plug in android device without root for adb"], "what_it_is": "A comprehensive collection of udev rules for Linux that grants proper USB permissions for Android devices, enabling tools like adb and fastboot to detect them. It is installed as a system rules file and maintained by the community.", "when_to_avoid": ["you are on Windows or macOS, which do not use udev", "you only use an Android emulator and never connect hardware", "you need a GUI tool for device management"], "when_to_choose": ["you develop or debug Android apps on a Linux machine and adb/fastboot cannot see your device", "you want a comprehensive, community-maintained rules file covering many vendors", "you run a systemd-based GNU/Linux distro"]}, "data_as_of": "2026-08-30T08:39:29.467469+00:00", "members": [{"path": "/products/android-udev-rules", "repo": "M0Rf30/android-udev-rules", "role": "main", "score": 84}], "provenance": {"archived": {"kind": "observed", "observed_at": "2026-08-28T04:04:27.395638+00:00", "source": "github"}, "artifact_type": {"confidence": null, "enriched_at": "2026-08-30T04:42:40.486686+00:00", "kind": "inferred", "prompt_version": 1, "sources": [{"content_hash": "a15a8d2550a96a7d8ec06087a7da23021b589f3b3ebe0f48a4edf601f4eed5af", "fetched_at": "2026-08-28T04:04:27.395638+00:00", "kind": "readme", "missing": false, "url": "https://github.com/M0Rf30/android-udev-rules"}], "taxonomy_version": 1}, "description": {"kind": "observed", "observed_at": "2026-08-28T04:04:27.395638+00:00", "source": "github"}, "domain": {"confidence": null, "enriched_at": "2026-08-30T04:42:40.486686+00:00", "kind": "inferred", "prompt_version": 1, "sources": [{"content_hash": "a15a8d2550a96a7d8ec06087a7da23021b589f3b3ebe0f48a4edf601f4eed5af", "fetched_at": "2026-08-28T04:04:27.395638+00:00", "kind": "readme", "missing": false, "url": "https://github.com/M0Rf30/android-udev-rules"}], "taxonomy_version": 1}, "enriched": {"inputs": [], "kind": "computed", "method": "enrichment_status"}, "function": {"confidence": null, "enriched_at": "2026-08-30T04:42:40.486686+00:00", "kind": "inferred", "prompt_version": 1, "sources": [{"content_hash": "a15a8d2550a96a7d8ec06087a7da23021b589f3b3ebe0f48a4edf601f4eed5af", "fetched_at": "2026-08-28T04:04:27.395638+00:00", "kind": "readme", "missing": false, "url": "https://github.com/M0Rf30/android-udev-rules"}], "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:04:27.395638+00:00", "source": "github"}, "language": {"kind": "observed", "observed_at": "2026-08-28T04:04:27.395638+00:00", "source": "github"}, "license": {"kind": "observed", "observed_at": "2026-08-28T04:04:27.395638+00:00", "source": "github"}, "license_family": {"inputs": ["license"], "kind": "computed", "method": "license_family"}, "maturity": {"confidence": null, "enriched_at": "2026-08-30T04:42:40.486686+00:00", "kind": "inferred", "prompt_version": 1, "sources": [{"content_hash": "a15a8d2550a96a7d8ec06087a7da23021b589f3b3ebe0f48a4edf601f4eed5af", "fetched_at": "2026-08-28T04:04:27.395638+00:00", "kind": "readme", "missing": false, "url": "https://github.com/M0Rf30/android-udev-rules"}], "taxonomy_version": 1}, "member_repos": {"kind": "observed", "observed_at": "2026-08-28T04:04:27.395638+00:00", "source": "github"}, "name": {"kind": "observed", "observed_at": "2026-08-28T04:04:27.395638+00:00", "source": "github"}, "platform": {"confidence": null, "enriched_at": "2026-08-30T04:42:40.486686+00:00", "kind": "inferred", "prompt_version": 1, "sources": [{"content_hash": "a15a8d2550a96a7d8ec06087a7da23021b589f3b3ebe0f48a4edf601f4eed5af", "fetched_at": "2026-08-28T04:04:27.395638+00:00", "kind": "readme", "missing": false, "url": "https://github.com/M0Rf30/android-udev-rules"}], "taxonomy_version": 1}, "pushed_at": {"kind": "observed", "observed_at": "2026-08-28T04:04:27.395638+00:00", "source": "github"}, "repo": {"kind": "observed", "observed_at": "2026-08-28T04:04:27.395638+00:00", "source": "github"}, "stars": {"kind": "observed", "observed_at": "2026-08-28T04:04:27.395638+00:00", "source": "github"}, "tags": {"confidence": null, "enriched_at": "2026-08-30T04:42:40.486686+00:00", "kind": "inferred", "prompt_version": 1, "sources": [{"content_hash": "a15a8d2550a96a7d8ec06087a7da23021b589f3b3ebe0f48a4edf601f4eed5af", "fetched_at": "2026-08-28T04:04:27.395638+00:00", "kind": "readme", "missing": false, "url": "https://github.com/M0Rf30/android-udev-rules"}], "taxonomy_version": 1}, "topics": {"kind": "observed", "observed_at": "2026-08-28T04:04:27.395638+00:00", "source": "github"}, "urls": {"kind": "observed", "observed_at": "2026-08-28T04:04:27.395638+00:00", "source": "github"}, "use_cases": {"confidence": null, "enriched_at": "2026-08-30T04:42:40.486686+00:00", "kind": "inferred", "prompt_version": 1, "sources": [{"content_hash": "a15a8d2550a96a7d8ec06087a7da23021b589f3b3ebe0f48a4edf601f4eed5af", "fetched_at": "2026-08-28T04:04:27.395638+00:00", "kind": "readme", "missing": false, "url": "https://github.com/M0Rf30/android-udev-rules"}], "taxonomy_version": 1}, "what_it_is": {"confidence": null, "enriched_at": "2026-08-30T04:42:40.486686+00:00", "kind": "inferred", "prompt_version": 1, "sources": [{"content_hash": "a15a8d2550a96a7d8ec06087a7da23021b589f3b3ebe0f48a4edf601f4eed5af", "fetched_at": "2026-08-28T04:04:27.395638+00:00", "kind": "readme", "missing": false, "url": "https://github.com/M0Rf30/android-udev-rules"}], "taxonomy_version": 1}, "when_to_avoid": {"confidence": null, "enriched_at": "2026-08-30T04:42:40.486686+00:00", "kind": "inferred", "prompt_version": 1, "sources": [{"content_hash": "a15a8d2550a96a7d8ec06087a7da23021b589f3b3ebe0f48a4edf601f4eed5af", "fetched_at": "2026-08-28T04:04:27.395638+00:00", "kind": "readme", "missing": false, "url": "https://github.com/M0Rf30/android-udev-rules"}], "taxonomy_version": 1}, "when_to_choose": {"confidence": null, "enriched_at": "2026-08-30T04:42:40.486686+00:00", "kind": "inferred", "prompt_version": 1, "sources": [{"content_hash": "a15a8d2550a96a7d8ec06087a7da23021b589f3b3ebe0f48a4edf601f4eed5af", "fetched_at": "2026-08-28T04:04:27.395638+00:00", "kind": "readme", "missing": false, "url": "https://github.com/M0Rf30/android-udev-rules"}], "taxonomy_version": 1}}, "score": {"components": {"activity": 98, "longevity": 100, "rhythm": 56}, "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": 5230, "days_push": 13, "days_rel": 132, "gap_med": 98.0, "n_releases_24m": 5}, "score": 84, "version": 2}, "staleness": {"enrichment_outdated": false, "low_confidence": false, "scrape_days": 9, "stale_scrape": false}}