{"adoption": {"forks": 351, "observed_at": "2026-08-28T04:06:54.804105+00:00", "stars": 2473}, "canonical_url": "https://ross.abutalabs.com/products/openmptcprouter", "card": {"archived": false, "artifact_type": "application", "description": "OpenMPTCProuter is an open source solution to aggregate multiple internet connections using Multipath TCP (MPTCP) on OpenWrt", "domain": ["networking", "self-hosted", "privacy", "infrastructure-as-code"], "enriched": true, "function": ["networking", "vpn", "security", "self-hosted", "routing"], "health_score": 80, "homepage": "https://www.openmptcprouter.com/", "language": "Makefile", "license": "GPL-3.0", "license_family": "copyleft", "maturity": "active", "member_repos": ["Ysurac/openmptcprouter"], "name": "Ysurac/openmptcprouter", "platform": ["embedded", "self-hosted"], "pushed_at": "2026-08-26T08:29:19+00:00", "repo": "Ysurac/openmptcprouter", "stars": 2473, "tags": ["mptcp", "openwrt", "bonding", "multi-wan", "link-aggregation", "failover", "router-firmware", "shadowsocks", "mlvpn", "glorytun", "vps", "4g-lte", "sd-wan", "linux", "docker"], "topics": ["mptcp", "openwrt", "lede", "shadowsocks", "aggregate", "multipath-tcp", "raspberry-pi", "mlvpn", "lte", "4g", "adsl", "xdsl", "vpn", "network"], "urls": [], "use_cases": ["bond multiple internet connections into one faster link", "combine fiber and 4G/5G connections for hybrid WAN", "set up automatic failover between WAN connections", "get a dedicated public IP behind a VPS", "encrypt traffic between router and server", "build a multi-WAN router on a Raspberry Pi", "aggregate DSL and LTE links for reliable internet"], "what_it_is": "OpenMPTCProuter is an OpenWrt-based router distribution that aggregates multiple internet connections (fiber, ADSL, 4G/5G, etc.) using Multipath TCP, terminating traffic on a VPS for encryption, failover, and a dedicated public IP. It also supports MLVPN and Glorytun UDP aggregation and ships with a LuCI web interface.", "when_to_avoid": ["you only have a single internet connection", "you don't control or want to rent a VPS server", "you need a plug-and-play consumer router with no configuration", "you need commercial support or SLAs"], "when_to_choose": ["you need true bandwidth aggregation across heterogeneous WAN types", "you want failover and redundancy for critical connectivity", "you need a public IP or encrypted tunnel via your own VPS", "you want an OpenWrt-based router with a web UI and extensible packages"]}, "data_as_of": "2026-08-30T08:39:29.467469+00:00", "members": [{"path": "/products/openmptcprouter", "repo": "Ysurac/openmptcprouter", "role": "main", "score": 77}], "provenance": {"archived": {"kind": "observed", "observed_at": "2026-08-28T04:06:54.804105+00:00", "source": "github"}, "artifact_type": {"confidence": null, "enriched_at": "2026-08-30T02:28:31.407696+00:00", "kind": "inferred", "prompt_version": 1, "sources": [{"content_hash": "d3761ddc52a46f262918d5d7f10fe6a604bd5d922eeaf109978cffad2b0f2637", "fetched_at": "2026-08-28T04:06:54.804105+00:00", "kind": "readme", "missing": false, "url": "https://github.com/Ysurac/openmptcprouter"}, {"content_hash": "9c25c41ca2d324d11c236d82955ddb0dc8cfea491b8d659601ca5baa865e78dd", "fetched_at": "2026-08-29T10:10:26.958693+00:00", "kind": "homepage", "missing": false, "url": "https://www.openmptcprouter.com/"}, {"content_hash": "f62e39d4d6cc1a998592627b8f8c685aa4adfc6a60e08f7ad5098f0f36000cac", "fetched_at": "2026-08-29T10:10:26.961381+00:00", "kind": "site_page", "missing": false, "url": "https://www.openmptcprouter.com/about"}], "taxonomy_version": 1}, "description": {"kind": "observed", "observed_at": "2026-08-28T04:06:54.804105+00:00", "source": "github"}, "domain": {"confidence": null, "enriched_at": "2026-08-30T02:28:31.407696+00:00", "kind": "inferred", "prompt_version": 1, "sources": [{"content_hash": "d3761ddc52a46f262918d5d7f10fe6a604bd5d922eeaf109978cffad2b0f2637", "fetched_at": "2026-08-28T04:06:54.804105+00:00", "kind": "readme", "missing": false, "url": "https://github.com/Ysurac/openmptcprouter"}, {"content_hash": "9c25c41ca2d324d11c236d82955ddb0dc8cfea491b8d659601ca5baa865e78dd", "fetched_at": "2026-08-29T10:10:26.958693+00:00", "kind": "homepage", "missing": false, "url": "https://www.openmptcprouter.com/"}, {"content_hash": "f62e39d4d6cc1a998592627b8f8c685aa4adfc6a60e08f7ad5098f0f36000cac", "fetched_at": "2026-08-29T10:10:26.961381+00:00", "kind": "site_page", "missing": false, "url": "https://www.openmptcprouter.com/about"}], "taxonomy_version": 1}, "enriched": {"inputs": [], "kind": "computed", "method": "enrichment_status"}, "function": {"confidence": null, "enriched_at": "2026-08-30T02:28:31.407696+00:00", "kind": "inferred", "prompt_version": 1, "sources": [{"content_hash": "d3761ddc52a46f262918d5d7f10fe6a604bd5d922eeaf109978cffad2b0f2637", "fetched_at": "2026-08-28T04:06:54.804105+00:00", "kind": "readme", "missing": false, "url": "https://github.com/Ysurac/openmptcprouter"}, {"content_hash": "9c25c41ca2d324d11c236d82955ddb0dc8cfea491b8d659601ca5baa865e78dd", "fetched_at": "2026-08-29T10:10:26.958693+00:00", "kind": "homepage", "missing": false, "url": "https://www.openmptcprouter.com/"}, {"content_hash": "f62e39d4d6cc1a998592627b8f8c685aa4adfc6a60e08f7ad5098f0f36000cac", "fetched_at": "2026-08-29T10:10:26.961381+00:00", "kind": "site_page", "missing": false, "url": "https://www.openmptcprouter.com/about"}], "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:54.804105+00:00", "source": "github"}, "language": {"kind": "observed", "observed_at": "2026-08-28T04:06:54.804105+00:00", "source": "github"}, "license": {"kind": "observed", "observed_at": "2026-08-28T04:06:54.804105+00:00", "source": "github"}, "license_family": {"inputs": ["license"], "kind": "computed", "method": "license_family"}, "maturity": {"confidence": null, "enriched_at": "2026-08-30T02:28:31.407696+00:00", "kind": "inferred", "prompt_version": 1, "sources": [{"content_hash": "d3761ddc52a46f262918d5d7f10fe6a604bd5d922eeaf109978cffad2b0f2637", "fetched_at": "2026-08-28T04:06:54.804105+00:00", "kind": "readme", "missing": false, "url": "https://github.com/Ysurac/openmptcprouter"}, {"content_hash": "9c25c41ca2d324d11c236d82955ddb0dc8cfea491b8d659601ca5baa865e78dd", "fetched_at": "2026-08-29T10:10:26.958693+00:00", "kind": "homepage", "missing": false, "url": "https://www.openmptcprouter.com/"}, {"content_hash": "f62e39d4d6cc1a998592627b8f8c685aa4adfc6a60e08f7ad5098f0f36000cac", "fetched_at": "2026-08-29T10:10:26.961381+00:00", "kind": "site_page", "missing": false, "url": "https://www.openmptcprouter.com/about"}], "taxonomy_version": 1}, "member_repos": {"kind": "observed", "observed_at": "2026-08-28T04:06:54.804105+00:00", "source": "github"}, "name": {"kind": "observed", "observed_at": "2026-08-28T04:06:54.804105+00:00", "source": "github"}, "platform": {"confidence": null, "enriched_at": "2026-08-30T02:28:31.407696+00:00", "kind": "inferred", "prompt_version": 1, "sources": [{"content_hash": "d3761ddc52a46f262918d5d7f10fe6a604bd5d922eeaf109978cffad2b0f2637", "fetched_at": "2026-08-28T04:06:54.804105+00:00", "kind": "readme", "missing": false, "url": "https://github.com/Ysurac/openmptcprouter"}, {"content_hash": "9c25c41ca2d324d11c236d82955ddb0dc8cfea491b8d659601ca5baa865e78dd", "fetched_at": "2026-08-29T10:10:26.958693+00:00", "kind": "homepage", "missing": false, "url": "https://www.openmptcprouter.com/"}, {"content_hash": "f62e39d4d6cc1a998592627b8f8c685aa4adfc6a60e08f7ad5098f0f36000cac", "fetched_at": "2026-08-29T10:10:26.961381+00:00", "kind": "site_page", "missing": false, "url": "https://www.openmptcprouter.com/about"}], "taxonomy_version": 1}, "pushed_at": {"kind": "observed", "observed_at": "2026-08-28T04:06:54.804105+00:00", "source": "github"}, "repo": {"kind": "observed", "observed_at": "2026-08-28T04:06:54.804105+00:00", "source": "github"}, "stars": {"kind": "observed", "observed_at": "2026-08-28T04:06:54.804105+00:00", "source": "github"}, "tags": {"confidence": null, "enriched_at": "2026-08-30T02:28:31.407696+00:00", "kind": "inferred", "prompt_version": 1, "sources": [{"content_hash": "d3761ddc52a46f262918d5d7f10fe6a604bd5d922eeaf109978cffad2b0f2637", "fetched_at": "2026-08-28T04:06:54.804105+00:00", "kind": "readme", "missing": false, "url": "https://github.com/Ysurac/openmptcprouter"}, {"content_hash": "9c25c41ca2d324d11c236d82955ddb0dc8cfea491b8d659601ca5baa865e78dd", "fetched_at": "2026-08-29T10:10:26.958693+00:00", "kind": "homepage", "missing": false, "url": "https://www.openmptcprouter.com/"}, {"content_hash": "f62e39d4d6cc1a998592627b8f8c685aa4adfc6a60e08f7ad5098f0f36000cac", "fetched_at": "2026-08-29T10:10:26.961381+00:00", "kind": "site_page", "missing": false, "url": "https://www.openmptcprouter.com/about"}], "taxonomy_version": 1}, "topics": {"kind": "observed", "observed_at": "2026-08-28T04:06:54.804105+00:00", "source": "github"}, "urls": {"kind": "observed", "observed_at": "2026-08-28T04:06:54.804105+00:00", "source": "github"}, "use_cases": {"confidence": null, "enriched_at": "2026-08-30T02:28:31.407696+00:00", "kind": "inferred", "prompt_version": 1, "sources": [{"content_hash": "d3761ddc52a46f262918d5d7f10fe6a604bd5d922eeaf109978cffad2b0f2637", "fetched_at": "2026-08-28T04:06:54.804105+00:00", "kind": "readme", "missing": false, "url": "https://github.com/Ysurac/openmptcprouter"}, {"content_hash": "9c25c41ca2d324d11c236d82955ddb0dc8cfea491b8d659601ca5baa865e78dd", "fetched_at": "2026-08-29T10:10:26.958693+00:00", "kind": "homepage", "missing": false, "url": "https://www.openmptcprouter.com/"}, {"content_hash": "f62e39d4d6cc1a998592627b8f8c685aa4adfc6a60e08f7ad5098f0f36000cac", "fetched_at": "2026-08-29T10:10:26.961381+00:00", "kind": "site_page", "missing": false, "url": "https://www.openmptcprouter.com/about"}], "taxonomy_version": 1}, "what_it_is": {"confidence": null, "enriched_at": "2026-08-30T02:28:31.407696+00:00", "kind": "inferred", "prompt_version": 1, "sources": [{"content_hash": "d3761ddc52a46f262918d5d7f10fe6a604bd5d922eeaf109978cffad2b0f2637", "fetched_at": "2026-08-28T04:06:54.804105+00:00", "kind": "readme", "missing": false, "url": "https://github.com/Ysurac/openmptcprouter"}, {"content_hash": "9c25c41ca2d324d11c236d82955ddb0dc8cfea491b8d659601ca5baa865e78dd", "fetched_at": "2026-08-29T10:10:26.958693+00:00", "kind": "homepage", "missing": false, "url": "https://www.openmptcprouter.com/"}, {"content_hash": "f62e39d4d6cc1a998592627b8f8c685aa4adfc6a60e08f7ad5098f0f36000cac", "fetched_at": "2026-08-29T10:10:26.961381+00:00", "kind": "site_page", "missing": false, "url": "https://www.openmptcprouter.com/about"}], "taxonomy_version": 1}, "when_to_avoid": {"confidence": null, "enriched_at": "2026-08-30T02:28:31.407696+00:00", "kind": "inferred", "prompt_version": 1, "sources": [{"content_hash": "d3761ddc52a46f262918d5d7f10fe6a604bd5d922eeaf109978cffad2b0f2637", "fetched_at": "2026-08-28T04:06:54.804105+00:00", "kind": "readme", "missing": false, "url": "https://github.com/Ysurac/openmptcprouter"}, {"content_hash": "9c25c41ca2d324d11c236d82955ddb0dc8cfea491b8d659601ca5baa865e78dd", "fetched_at": "2026-08-29T10:10:26.958693+00:00", "kind": "homepage", "missing": false, "url": "https://www.openmptcprouter.com/"}, {"content_hash": "f62e39d4d6cc1a998592627b8f8c685aa4adfc6a60e08f7ad5098f0f36000cac", "fetched_at": "2026-08-29T10:10:26.961381+00:00", "kind": "site_page", "missing": false, "url": "https://www.openmptcprouter.com/about"}], "taxonomy_version": 1}, "when_to_choose": {"confidence": null, "enriched_at": "2026-08-30T02:28:31.407696+00:00", "kind": "inferred", "prompt_version": 1, "sources": [{"content_hash": "d3761ddc52a46f262918d5d7f10fe6a604bd5d922eeaf109978cffad2b0f2637", "fetched_at": "2026-08-28T04:06:54.804105+00:00", "kind": "readme", "missing": false, "url": "https://github.com/Ysurac/openmptcprouter"}, {"content_hash": "9c25c41ca2d324d11c236d82955ddb0dc8cfea491b8d659601ca5baa865e78dd", "fetched_at": "2026-08-29T10:10:26.958693+00:00", "kind": "homepage", "missing": false, "url": "https://www.openmptcprouter.com/"}, {"content_hash": "f62e39d4d6cc1a998592627b8f8c685aa4adfc6a60e08f7ad5098f0f36000cac", "fetched_at": "2026-08-29T10:10:26.961381+00:00", "kind": "site_page", "missing": false, "url": "https://www.openmptcprouter.com/about"}], "taxonomy_version": 1}}, "score": {"components": {"activity": 99, "longevity": 100, "rhythm": 35}, "computed_at": "2026-09-02T17:46:02.011165+00:00", "flags": ["no_releases"], "formula": "round(0.45*activity + 0.35*rhythm + 0.20*longevity); archived -> min(score, 10)", "inputs": {"age_days": 3176, "days_push": 7, "days_rel": null, "gap_med": null, "n_releases_24m": 0}, "score": 77, "version": 2}, "staleness": {"enrichment_outdated": false, "low_confidence": false, "scrape_days": 9, "stale_scrape": false}}