{"adoption": {"forks": 190, "observed_at": "2026-08-28T04:05:37.901549+00:00", "stars": 1799}, "canonical_url": "https://ross.abutalabs.com/products/wg-portal", "card": {"archived": false, "artifact_type": "application", "description": "WireGuard Configuration Portal with LDAP connection", "domain": ["networking", "security", "self-hosted", "privacy"], "enriched": true, "function": ["web-framework", "auth", "api-framework", "monitoring"], "health_score": 99, "homepage": "https://wgportal.org/", "language": "Go", "license": "MIT", "license_family": "permissive", "maturity": "active", "member_repos": ["h44z/wg-portal"], "name": "h44z/wg-portal", "platform": ["self-hosted"], "pushed_at": "2026-08-24T13:54:38+00:00", "repo": "h44z/wg-portal", "stars": 1799, "tags": ["wireguard", "vpn-management", "ldap", "oauth", "peer-management", "qr-code", "rest-api", "linux", "docker", "web-server"], "topics": ["wireguard", "vpn", "ui", "webinterface", "usermanagement", "ldap"], "urls": [], "use_cases": ["manage wireguard vpn peers through a web ui", "self-hosted wireguard configuration portal with ldap authentication", "generate qr codes for wireguard mobile clients", "integrate vpn user management with active directory", "manage multiple wireguard interfaces and backends", "monitor wireguard peers with prometheus metrics", "provision vpn clients via rest api"], "what_it_is": "WireGuard Portal is a self-hosted, web-based configuration portal for managing WireGuard VPN servers and peers. It is a single Go binary with a Vue.js UI that supports database, OAuth, or LDAP user sources and manages interfaces via wgctrl.", "when_to_avoid": ["you run wireguard on non-Linux systems (except via MikroTik/pfSense backends)", "you need automatic iptables/nftables firewall rule management", "you want automatic import of existing private keys"], "when_to_choose": ["you need centralized web-based management of wireguard peers and interfaces", "your users authenticate via LDAP, Active Directory, or OAuth", "you want a single self-hosted binary with docker support", "you need QR codes, email delivery, and wg-quick config generation for clients"]}, "data_as_of": "2026-08-30T08:39:29.467469+00:00", "members": [{"path": "/products/wg-portal", "repo": "h44z/wg-portal", "role": "main", "score": 95}], "provenance": {"archived": {"kind": "observed", "observed_at": "2026-08-28T04:05:37.901549+00:00", "source": "github"}, "artifact_type": {"confidence": null, "enriched_at": "2026-08-30T03:22:17.320787+00:00", "kind": "inferred", "prompt_version": 1, "sources": [{"content_hash": "cac0cb1f02aa9e0fefe8696cc014f79b4e5add3423565535be1ca06221e8a272", "fetched_at": "2026-08-28T04:05:37.901549+00:00", "kind": "readme", "missing": false, "url": "https://github.com/h44z/wg-portal"}, {"content_hash": "36c6c3c2e4f9f7e35fb7fea86ea9bfd1cf7fe7061016698b1a017ae1cc7f4a36", "fetched_at": "2026-08-29T11:01:07.765496+00:00", "kind": "homepage", "missing": false, "url": "https://wgportal.org/"}], "taxonomy_version": 1}, "description": {"kind": "observed", "observed_at": "2026-08-28T04:05:37.901549+00:00", "source": "github"}, "domain": {"confidence": null, "enriched_at": "2026-08-30T03:22:17.320787+00:00", "kind": "inferred", "prompt_version": 1, "sources": [{"content_hash": "cac0cb1f02aa9e0fefe8696cc014f79b4e5add3423565535be1ca06221e8a272", "fetched_at": "2026-08-28T04:05:37.901549+00:00", "kind": "readme", "missing": false, "url": "https://github.com/h44z/wg-portal"}, {"content_hash": "36c6c3c2e4f9f7e35fb7fea86ea9bfd1cf7fe7061016698b1a017ae1cc7f4a36", "fetched_at": "2026-08-29T11:01:07.765496+00:00", "kind": "homepage", "missing": false, "url": "https://wgportal.org/"}], "taxonomy_version": 1}, "enriched": {"inputs": [], "kind": "computed", "method": "enrichment_status"}, "function": {"confidence": null, "enriched_at": "2026-08-30T03:22:17.320787+00:00", "kind": "inferred", "prompt_version": 1, "sources": [{"content_hash": "cac0cb1f02aa9e0fefe8696cc014f79b4e5add3423565535be1ca06221e8a272", "fetched_at": "2026-08-28T04:05:37.901549+00:00", "kind": "readme", "missing": false, "url": "https://github.com/h44z/wg-portal"}, {"content_hash": "36c6c3c2e4f9f7e35fb7fea86ea9bfd1cf7fe7061016698b1a017ae1cc7f4a36", "fetched_at": "2026-08-29T11:01:07.765496+00:00", "kind": "homepage", "missing": false, "url": "https://wgportal.org/"}], "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:37.901549+00:00", "source": "github"}, "language": {"kind": "observed", "observed_at": "2026-08-28T04:05:37.901549+00:00", "source": "github"}, "license": {"kind": "observed", "observed_at": "2026-08-28T04:05:37.901549+00:00", "source": "github"}, "license_family": {"inputs": ["license"], "kind": "computed", "method": "license_family"}, "maturity": {"confidence": null, "enriched_at": "2026-08-30T03:22:17.320787+00:00", "kind": "inferred", "prompt_version": 1, "sources": [{"content_hash": "cac0cb1f02aa9e0fefe8696cc014f79b4e5add3423565535be1ca06221e8a272", "fetched_at": "2026-08-28T04:05:37.901549+00:00", "kind": "readme", "missing": false, "url": "https://github.com/h44z/wg-portal"}, {"content_hash": "36c6c3c2e4f9f7e35fb7fea86ea9bfd1cf7fe7061016698b1a017ae1cc7f4a36", "fetched_at": "2026-08-29T11:01:07.765496+00:00", "kind": "homepage", "missing": false, "url": "https://wgportal.org/"}], "taxonomy_version": 1}, "member_repos": {"kind": "observed", "observed_at": "2026-08-28T04:05:37.901549+00:00", "source": "github"}, "name": {"kind": "observed", "observed_at": "2026-08-28T04:05:37.901549+00:00", "source": "github"}, "platform": {"confidence": null, "enriched_at": "2026-08-30T03:22:17.320787+00:00", "kind": "inferred", "prompt_version": 1, "sources": [{"content_hash": "cac0cb1f02aa9e0fefe8696cc014f79b4e5add3423565535be1ca06221e8a272", "fetched_at": "2026-08-28T04:05:37.901549+00:00", "kind": "readme", "missing": false, "url": "https://github.com/h44z/wg-portal"}, {"content_hash": "36c6c3c2e4f9f7e35fb7fea86ea9bfd1cf7fe7061016698b1a017ae1cc7f4a36", "fetched_at": "2026-08-29T11:01:07.765496+00:00", "kind": "homepage", "missing": false, "url": "https://wgportal.org/"}], "taxonomy_version": 1}, "pushed_at": {"kind": "observed", "observed_at": "2026-08-28T04:05:37.901549+00:00", "source": "github"}, "repo": {"kind": "observed", "observed_at": "2026-08-28T04:05:37.901549+00:00", "source": "github"}, "stars": {"kind": "observed", "observed_at": "2026-08-28T04:05:37.901549+00:00", "source": "github"}, "tags": {"confidence": null, "enriched_at": "2026-08-30T03:22:17.320787+00:00", "kind": "inferred", "prompt_version": 1, "sources": [{"content_hash": "cac0cb1f02aa9e0fefe8696cc014f79b4e5add3423565535be1ca06221e8a272", "fetched_at": "2026-08-28T04:05:37.901549+00:00", "kind": "readme", "missing": false, "url": "https://github.com/h44z/wg-portal"}, {"content_hash": "36c6c3c2e4f9f7e35fb7fea86ea9bfd1cf7fe7061016698b1a017ae1cc7f4a36", "fetched_at": "2026-08-29T11:01:07.765496+00:00", "kind": "homepage", "missing": false, "url": "https://wgportal.org/"}], "taxonomy_version": 1}, "topics": {"kind": "observed", "observed_at": "2026-08-28T04:05:37.901549+00:00", "source": "github"}, "urls": {"kind": "observed", "observed_at": "2026-08-28T04:05:37.901549+00:00", "source": "github"}, "use_cases": {"confidence": null, "enriched_at": "2026-08-30T03:22:17.320787+00:00", "kind": "inferred", "prompt_version": 1, "sources": [{"content_hash": "cac0cb1f02aa9e0fefe8696cc014f79b4e5add3423565535be1ca06221e8a272", "fetched_at": "2026-08-28T04:05:37.901549+00:00", "kind": "readme", "missing": false, "url": "https://github.com/h44z/wg-portal"}, {"content_hash": "36c6c3c2e4f9f7e35fb7fea86ea9bfd1cf7fe7061016698b1a017ae1cc7f4a36", "fetched_at": "2026-08-29T11:01:07.765496+00:00", "kind": "homepage", "missing": false, "url": "https://wgportal.org/"}], "taxonomy_version": 1}, "what_it_is": {"confidence": null, "enriched_at": "2026-08-30T03:22:17.320787+00:00", "kind": "inferred", "prompt_version": 1, "sources": [{"content_hash": "cac0cb1f02aa9e0fefe8696cc014f79b4e5add3423565535be1ca06221e8a272", "fetched_at": "2026-08-28T04:05:37.901549+00:00", "kind": "readme", "missing": false, "url": "https://github.com/h44z/wg-portal"}, {"content_hash": "36c6c3c2e4f9f7e35fb7fea86ea9bfd1cf7fe7061016698b1a017ae1cc7f4a36", "fetched_at": "2026-08-29T11:01:07.765496+00:00", "kind": "homepage", "missing": false, "url": "https://wgportal.org/"}], "taxonomy_version": 1}, "when_to_avoid": {"confidence": null, "enriched_at": "2026-08-30T03:22:17.320787+00:00", "kind": "inferred", "prompt_version": 1, "sources": [{"content_hash": "cac0cb1f02aa9e0fefe8696cc014f79b4e5add3423565535be1ca06221e8a272", "fetched_at": "2026-08-28T04:05:37.901549+00:00", "kind": "readme", "missing": false, "url": "https://github.com/h44z/wg-portal"}, {"content_hash": "36c6c3c2e4f9f7e35fb7fea86ea9bfd1cf7fe7061016698b1a017ae1cc7f4a36", "fetched_at": "2026-08-29T11:01:07.765496+00:00", "kind": "homepage", "missing": false, "url": "https://wgportal.org/"}], "taxonomy_version": 1}, "when_to_choose": {"confidence": null, "enriched_at": "2026-08-30T03:22:17.320787+00:00", "kind": "inferred", "prompt_version": 1, "sources": [{"content_hash": "cac0cb1f02aa9e0fefe8696cc014f79b4e5add3423565535be1ca06221e8a272", "fetched_at": "2026-08-28T04:05:37.901549+00:00", "kind": "readme", "missing": false, "url": "https://github.com/h44z/wg-portal"}, {"content_hash": "36c6c3c2e4f9f7e35fb7fea86ea9bfd1cf7fe7061016698b1a017ae1cc7f4a36", "fetched_at": "2026-08-29T11:01:07.765496+00:00", "kind": "homepage", "missing": false, "url": "https://wgportal.org/"}], "taxonomy_version": 1}}, "score": {"components": {"activity": 99, "longevity": 100, "rhythm": 88}, "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": 2127, "days_push": 9, "days_rel": 82, "gap_med": 22, "n_releases_24m": 16}, "score": 95, "version": 2}, "staleness": {"enrichment_outdated": false, "low_confidence": false, "scrape_days": 9, "stale_scrape": false}}