{"adoption": {"forks": 731, "observed_at": "2026-08-28T04:08:07.563290+00:00", "stars": 3504}, "canonical_url": "https://ross.abutalabs.com/products/openwrt-passwall2", "card": {"archived": false, "artifact_type": "plugin", "description": "A simple powerful OpenWrt LuCI proxy application.", "domain": ["networking", "privacy", "self-hosted", "censorship-circumvention", "developer-tools"], "enriched": true, "function": ["proxy", "networking", "routing", "privacy", "web-framework"], "health_score": 100, "homepage": null, "language": "Lua", "license": "GPL-3.0", "license_family": "copyleft", "maturity": "active", "member_repos": ["Openwrt-Passwall/openwrt-passwall2"], "name": "Openwrt-Passwall/openwrt-passwall2", "platform": ["self-hosted"], "pushed_at": "2026-08-26T16:22:33+00:00", "repo": "Openwrt-Passwall/openwrt-passwall2", "stars": 3504, "tags": ["openwrt", "luci", "router", "proxy", "censorship-circumvention", "xray", "transparent-proxy", "linux", "web-server"], "topics": [], "urls": [], "use_cases": ["set up a transparent proxy on my OpenWrt router", "route traffic through xray/v2ray on my router", "bypass censorship for my whole home network", "configure proxy rules and access control in LuCI", "split traffic between direct and proxied connections on a router", "install a proxy manager on OpenWrt with opkg or apk"], "what_it_is": "PassWall2 is a LuCI web interface application for OpenWrt routers that provides advanced proxy functionality and network traffic management. It supports multiple proxy protocols and offers routing, access control, and traffic splitting on OpenWrt-based routers.", "when_to_avoid": ["you need a proxy client on desktop or mobile rather than a router", "you don't use OpenWrt or another LuCI-based firmware", "you want a simple single-protocol client without web UI configuration"], "when_to_choose": ["you run OpenWrt 21.02+ and want a full-featured LuCI proxy manager", "you need multi-protocol proxy support (xray, sing-box, etc.) on a router", "you want transparent proxying for all devices behind the router"]}, "data_as_of": "2026-08-30T08:39:29.467469+00:00", "members": [{"path": "/products/openwrt-passwall2", "repo": "Openwrt-Passwall/openwrt-passwall2", "role": "main", "score": 99}], "provenance": {"archived": {"kind": "observed", "observed_at": "2026-08-28T04:08:07.563290+00:00", "source": "github"}, "artifact_type": {"confidence": null, "enriched_at": "2026-08-29T18:35:46.806116+00:00", "kind": "inferred", "prompt_version": 1, "sources": [{"content_hash": "94f3621d04040a2b586cca3fe24fe73574cf26be787810323d6a5266f03bcf96", "fetched_at": "2026-08-28T04:08:07.563290+00:00", "kind": "readme", "missing": false, "url": "https://github.com/Openwrt-Passwall/openwrt-passwall2"}], "taxonomy_version": 1}, "description": {"kind": "observed", "observed_at": "2026-08-28T04:08:07.563290+00:00", "source": "github"}, "domain": {"confidence": null, "enriched_at": "2026-08-29T18:35:46.806116+00:00", "kind": "inferred", "prompt_version": 1, "sources": [{"content_hash": "94f3621d04040a2b586cca3fe24fe73574cf26be787810323d6a5266f03bcf96", "fetched_at": "2026-08-28T04:08:07.563290+00:00", "kind": "readme", "missing": false, "url": "https://github.com/Openwrt-Passwall/openwrt-passwall2"}], "taxonomy_version": 1}, "enriched": {"inputs": [], "kind": "computed", "method": "enrichment_status"}, "function": {"confidence": null, "enriched_at": "2026-08-29T18:35:46.806116+00:00", "kind": "inferred", "prompt_version": 1, "sources": [{"content_hash": "94f3621d04040a2b586cca3fe24fe73574cf26be787810323d6a5266f03bcf96", "fetched_at": "2026-08-28T04:08:07.563290+00:00", "kind": "readme", "missing": false, "url": "https://github.com/Openwrt-Passwall/openwrt-passwall2"}], "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:08:07.563290+00:00", "source": "github"}, "language": {"kind": "observed", "observed_at": "2026-08-28T04:08:07.563290+00:00", "source": "github"}, "license": {"kind": "observed", "observed_at": "2026-08-28T04:08:07.563290+00:00", "source": "github"}, "license_family": {"inputs": ["license"], "kind": "computed", "method": "license_family"}, "maturity": {"confidence": null, "enriched_at": "2026-08-29T18:35:46.806116+00:00", "kind": "inferred", "prompt_version": 1, "sources": [{"content_hash": "94f3621d04040a2b586cca3fe24fe73574cf26be787810323d6a5266f03bcf96", "fetched_at": "2026-08-28T04:08:07.563290+00:00", "kind": "readme", "missing": false, "url": "https://github.com/Openwrt-Passwall/openwrt-passwall2"}], "taxonomy_version": 1}, "member_repos": {"kind": "observed", "observed_at": "2026-08-28T04:08:07.563290+00:00", "source": "github"}, "name": {"kind": "observed", "observed_at": "2026-08-28T04:08:07.563290+00:00", "source": "github"}, "platform": {"confidence": null, "enriched_at": "2026-08-29T18:35:46.806116+00:00", "kind": "inferred", "prompt_version": 1, "sources": [{"content_hash": "94f3621d04040a2b586cca3fe24fe73574cf26be787810323d6a5266f03bcf96", "fetched_at": "2026-08-28T04:08:07.563290+00:00", "kind": "readme", "missing": false, "url": "https://github.com/Openwrt-Passwall/openwrt-passwall2"}], "taxonomy_version": 1}, "pushed_at": {"kind": "observed", "observed_at": "2026-08-28T04:08:07.563290+00:00", "source": "github"}, "repo": {"kind": "observed", "observed_at": "2026-08-28T04:08:07.563290+00:00", "source": "github"}, "stars": {"kind": "observed", "observed_at": "2026-08-28T04:08:07.563290+00:00", "source": "github"}, "tags": {"confidence": null, "enriched_at": "2026-08-29T18:35:46.806116+00:00", "kind": "inferred", "prompt_version": 1, "sources": [{"content_hash": "94f3621d04040a2b586cca3fe24fe73574cf26be787810323d6a5266f03bcf96", "fetched_at": "2026-08-28T04:08:07.563290+00:00", "kind": "readme", "missing": false, "url": "https://github.com/Openwrt-Passwall/openwrt-passwall2"}], "taxonomy_version": 1}, "topics": {"kind": "observed", "observed_at": "2026-08-28T04:08:07.563290+00:00", "source": "github"}, "urls": {"kind": "observed", "observed_at": "2026-08-28T04:08:07.563290+00:00", "source": "github"}, "use_cases": {"confidence": null, "enriched_at": "2026-08-29T18:35:46.806116+00:00", "kind": "inferred", "prompt_version": 1, "sources": [{"content_hash": "94f3621d04040a2b586cca3fe24fe73574cf26be787810323d6a5266f03bcf96", "fetched_at": "2026-08-28T04:08:07.563290+00:00", "kind": "readme", "missing": false, "url": "https://github.com/Openwrt-Passwall/openwrt-passwall2"}], "taxonomy_version": 1}, "what_it_is": {"confidence": null, "enriched_at": "2026-08-29T18:35:46.806116+00:00", "kind": "inferred", "prompt_version": 1, "sources": [{"content_hash": "94f3621d04040a2b586cca3fe24fe73574cf26be787810323d6a5266f03bcf96", "fetched_at": "2026-08-28T04:08:07.563290+00:00", "kind": "readme", "missing": false, "url": "https://github.com/Openwrt-Passwall/openwrt-passwall2"}], "taxonomy_version": 1}, "when_to_avoid": {"confidence": null, "enriched_at": "2026-08-29T18:35:46.806116+00:00", "kind": "inferred", "prompt_version": 1, "sources": [{"content_hash": "94f3621d04040a2b586cca3fe24fe73574cf26be787810323d6a5266f03bcf96", "fetched_at": "2026-08-28T04:08:07.563290+00:00", "kind": "readme", "missing": false, "url": "https://github.com/Openwrt-Passwall/openwrt-passwall2"}], "taxonomy_version": 1}, "when_to_choose": {"confidence": null, "enriched_at": "2026-08-29T18:35:46.806116+00:00", "kind": "inferred", "prompt_version": 1, "sources": [{"content_hash": "94f3621d04040a2b586cca3fe24fe73574cf26be787810323d6a5266f03bcf96", "fetched_at": "2026-08-28T04:08:07.563290+00:00", "kind": "readme", "missing": false, "url": "https://github.com/Openwrt-Passwall/openwrt-passwall2"}], "taxonomy_version": 1}}, "score": {"components": {"activity": 99, "longevity": 100, "rhythm": 99}, "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": 1641, "days_push": 7, "days_rel": 7, "gap_med": 11.5, "n_releases_24m": 45}, "score": 99, "version": 2}, "staleness": {"enrichment_outdated": false, "low_confidence": false, "scrape_days": 9, "stale_scrape": false}}