{"adoption": {"forks": 544, "observed_at": "2026-08-28T04:05:24.280218+00:00", "stars": 1701}, "canonical_url": "https://ross.abutalabs.com/products/luci-app-adguardhome", "card": {"archived": false, "artifact_type": "plugin", "description": "maybe the best AdGuardHome luci for openwrt", "domain": ["networking", "privacy", "self-hosted", "developer-tools"], "enriched": true, "function": ["networking", "configuration-management", "cli", "scheduling", "developer-tools"], "health_score": 20, "homepage": null, "language": "Shell", "license": null, "license_family": "other", "maturity": "maintenance", "member_repos": ["rufengsuixing/luci-app-adguardhome"], "name": "rufengsuixing/luci-app-adguardhome", "platform": ["self-hosted", "cli"], "pushed_at": "2022-11-19T20:23:34+00:00", "repo": "rufengsuixing/luci-app-adguardhome", "stars": 1701, "tags": ["openwrt", "luci", "adguardhome", "dns-filtering", "ad-blocking", "shell", "router", "linux"], "topics": ["adguardhome", "luci"], "urls": [], "use_cases": ["manage AdGuardHome from the OpenWrt web interface", "set up network-wide ad blocking on a router", "redirect DNS port 53 to AdGuardHome", "use AdGuardHome as dnsmasq upstream", "auto-update AdGuardHome core and gfwlist on a schedule", "compress the AdGuardHome binary with upx to save router storage", "keep AdGuardHome config and database across OpenWrt system upgrades"], "what_it_is": "A LuCI web interface plugin for OpenWrt that manages AdGuardHome, a network-wide DNS-based ad blocker. It provides core download/update, DNS redirection modes, path configuration, log viewing, and scheduled maintenance tasks from the router's admin UI.", "when_to_avoid": ["you don't use OpenWrt or LuCI", "you need ipset support, which AdGuardHome itself lacks", "your router filesystem is jffs2 and you can't tolerate the DNS database being symlinked to tmpfs", "you need a maintained project - the last release was 2022 and there is no license"], "when_to_choose": ["you run OpenWrt and want a GUI to install, configure, and update AdGuardHome", "you need DNS redirection modes (dnsmasq upstream, port 53 redirect, or dnsmasq replacement)", "you want scheduled log truncation, gfwlist updates, and config backups on a router"]}, "data_as_of": "2026-08-30T08:39:29.467469+00:00", "members": [{"path": "/products/luci-app-adguardhome", "repo": "rufengsuixing/luci-app-adguardhome", "role": "main", "score": 23}], "provenance": {"archived": {"kind": "observed", "observed_at": "2026-08-28T04:05:24.280218+00:00", "source": "github"}, "artifact_type": {"confidence": null, "enriched_at": "2026-08-30T03:37:43.772455+00:00", "kind": "inferred", "prompt_version": 1, "sources": [{"content_hash": "21cf7b30fb50336fa8112e8c6f7443fe1dc91d41b6f64167999c60717404091b", "fetched_at": "2026-08-28T04:05:24.280218+00:00", "kind": "readme", "missing": false, "url": "https://github.com/rufengsuixing/luci-app-adguardhome"}], "taxonomy_version": 1}, "description": {"kind": "observed", "observed_at": "2026-08-28T04:05:24.280218+00:00", "source": "github"}, "domain": {"confidence": null, "enriched_at": "2026-08-30T03:37:43.772455+00:00", "kind": "inferred", "prompt_version": 1, "sources": [{"content_hash": "21cf7b30fb50336fa8112e8c6f7443fe1dc91d41b6f64167999c60717404091b", "fetched_at": "2026-08-28T04:05:24.280218+00:00", "kind": "readme", "missing": false, "url": "https://github.com/rufengsuixing/luci-app-adguardhome"}], "taxonomy_version": 1}, "enriched": {"inputs": [], "kind": "computed", "method": "enrichment_status"}, "function": {"confidence": null, "enriched_at": "2026-08-30T03:37:43.772455+00:00", "kind": "inferred", "prompt_version": 1, "sources": [{"content_hash": "21cf7b30fb50336fa8112e8c6f7443fe1dc91d41b6f64167999c60717404091b", "fetched_at": "2026-08-28T04:05:24.280218+00:00", "kind": "readme", "missing": false, "url": "https://github.com/rufengsuixing/luci-app-adguardhome"}], "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:05:24.280218+00:00", "source": "github"}, "language": {"kind": "observed", "observed_at": "2026-08-28T04:05:24.280218+00:00", "source": "github"}, "license": {"kind": "observed", "observed_at": "2026-08-28T04:05:24.280218+00:00", "source": "github"}, "license_family": {"inputs": ["license"], "kind": "computed", "method": "license_family"}, "maturity": {"confidence": null, "enriched_at": "2026-08-30T03:37:43.772455+00:00", "kind": "inferred", "prompt_version": 1, "sources": [{"content_hash": "21cf7b30fb50336fa8112e8c6f7443fe1dc91d41b6f64167999c60717404091b", "fetched_at": "2026-08-28T04:05:24.280218+00:00", "kind": "readme", "missing": false, "url": "https://github.com/rufengsuixing/luci-app-adguardhome"}], "taxonomy_version": 1}, "member_repos": {"kind": "observed", "observed_at": "2026-08-28T04:05:24.280218+00:00", "source": "github"}, "name": {"kind": "observed", "observed_at": "2026-08-28T04:05:24.280218+00:00", "source": "github"}, "platform": {"confidence": null, "enriched_at": "2026-08-30T03:37:43.772455+00:00", "kind": "inferred", "prompt_version": 1, "sources": [{"content_hash": "21cf7b30fb50336fa8112e8c6f7443fe1dc91d41b6f64167999c60717404091b", "fetched_at": "2026-08-28T04:05:24.280218+00:00", "kind": "readme", "missing": false, "url": "https://github.com/rufengsuixing/luci-app-adguardhome"}], "taxonomy_version": 1}, "pushed_at": {"kind": "observed", "observed_at": "2026-08-28T04:05:24.280218+00:00", "source": "github"}, "repo": {"kind": "observed", "observed_at": "2026-08-28T04:05:24.280218+00:00", "source": "github"}, "stars": {"kind": "observed", "observed_at": "2026-08-28T04:05:24.280218+00:00", "source": "github"}, "tags": {"confidence": null, "enriched_at": "2026-08-30T03:37:43.772455+00:00", "kind": "inferred", "prompt_version": 1, "sources": [{"content_hash": "21cf7b30fb50336fa8112e8c6f7443fe1dc91d41b6f64167999c60717404091b", "fetched_at": "2026-08-28T04:05:24.280218+00:00", "kind": "readme", "missing": false, "url": "https://github.com/rufengsuixing/luci-app-adguardhome"}], "taxonomy_version": 1}, "topics": {"kind": "observed", "observed_at": "2026-08-28T04:05:24.280218+00:00", "source": "github"}, "urls": {"kind": "observed", "observed_at": "2026-08-28T04:05:24.280218+00:00", "source": "github"}, "use_cases": {"confidence": null, "enriched_at": "2026-08-30T03:37:43.772455+00:00", "kind": "inferred", "prompt_version": 1, "sources": [{"content_hash": "21cf7b30fb50336fa8112e8c6f7443fe1dc91d41b6f64167999c60717404091b", "fetched_at": "2026-08-28T04:05:24.280218+00:00", "kind": "readme", "missing": false, "url": "https://github.com/rufengsuixing/luci-app-adguardhome"}], "taxonomy_version": 1}, "what_it_is": {"confidence": null, "enriched_at": "2026-08-30T03:37:43.772455+00:00", "kind": "inferred", "prompt_version": 1, "sources": [{"content_hash": "21cf7b30fb50336fa8112e8c6f7443fe1dc91d41b6f64167999c60717404091b", "fetched_at": "2026-08-28T04:05:24.280218+00:00", "kind": "readme", "missing": false, "url": "https://github.com/rufengsuixing/luci-app-adguardhome"}], "taxonomy_version": 1}, "when_to_avoid": {"confidence": null, "enriched_at": "2026-08-30T03:37:43.772455+00:00", "kind": "inferred", "prompt_version": 1, "sources": [{"content_hash": "21cf7b30fb50336fa8112e8c6f7443fe1dc91d41b6f64167999c60717404091b", "fetched_at": "2026-08-28T04:05:24.280218+00:00", "kind": "readme", "missing": false, "url": "https://github.com/rufengsuixing/luci-app-adguardhome"}], "taxonomy_version": 1}, "when_to_choose": {"confidence": null, "enriched_at": "2026-08-30T03:37:43.772455+00:00", "kind": "inferred", "prompt_version": 1, "sources": [{"content_hash": "21cf7b30fb50336fa8112e8c6f7443fe1dc91d41b6f64167999c60717404091b", "fetched_at": "2026-08-28T04:05:24.280218+00:00", "kind": "readme", "missing": false, "url": "https://github.com/rufengsuixing/luci-app-adguardhome"}], "taxonomy_version": 1}}, "score": {"components": {"activity": 0, "longevity": 100, "rhythm": 8}, "computed_at": "2026-09-03T02:20:16.233290+00:00", "flags": ["no_license"], "formula": "round(0.45*activity + 0.35*rhythm + 0.20*longevity); archived -> min(score, 10)", "inputs": {"age_days": 2476, "days_push": 1383, "days_rel": null, "gap_med": null, "n_releases_24m": 0}, "score": 23, "version": 2}, "staleness": {"enrichment_outdated": false, "low_confidence": false, "scrape_days": 9, "stale_scrape": false}}