{"adoption": {"forks": 208, "observed_at": "2026-08-28T04:04:45.499373+00:00", "stars": 1448}, "canonical_url": "https://ross.abutalabs.com/products/clusternet", "card": {"archived": false, "artifact_type": "framework", "description": "[CNCF Sandbox Project] Managing your Kubernetes clusters (including public, private, edge, etc.) as easily as visiting the Internet", "domain": ["cloud-computing", "infrastructure-as-code", "microservices", "self-hosted"], "enriched": true, "function": ["container-orchestration", "deployment", "networking", "api-framework", "cli", "configuration-management"], "health_score": 99, "homepage": "https://clusternet.io", "language": "Go", "license": "Apache-2.0", "license_family": "permissive", "maturity": "active", "member_repos": ["clusternet/clusternet"], "name": "clusternet/clusternet", "platform": ["go", "cross-platform", "cli", "self-hosted"], "pushed_at": "2026-08-24T21:32:29+00:00", "repo": "clusternet/clusternet", "stars": 1448, "tags": ["multi-cluster", "kubernetes-operator", "edge-computing", "hybrid-cloud", "multicloud", "cncf-sandbox", "helm", "rbac", "kubectl-plugin", "containers", "devops", "linux", "kubernetes"], "topics": ["cluster-management", "distributed-cloud", "public-cloud", "hybrid-cloud", "edge-cloud", "cloud-native", "kubernetes", "multicloud", "orchestration", "out-of-the-box", "multi-cluster-management"], "urls": [], "use_cases": ["manage thousands of kubernetes clusters from one control plane", "deploy helm charts to multiple clusters at once", "access edge or private clusters behind a firewall", "unify multicloud and hybrid cloud cluster management", "register and discover clusters automatically", "visit managed clusters with kubeconfig and rbac", "orchestrate applications across multi-cluster environments"], "what_it_is": "Clusternet is a CNCF Sandbox open-source add-on for managing large fleets of Kubernetes clusters across public, private, hybrid, and edge environments from a single hosting cluster. It provides Kubernetes-native APIs, network tunnels for reaching clusters behind firewalls or VPCs, multi-cluster application deployment (Helm charts and Kubernetes resources), and a kubectl plugin.", "when_to_avoid": ["you manage only one or two clusters and plain kubectl suffices", "you need a full commercial multi-cluster platform with advanced policy and cost features", "your clusters run older than Kubernetes v1.17", "you need non-Linux control-plane hosts"], "when_to_choose": ["you run many Kubernetes clusters across clouds, on-prem, or edge", "you want Kubernetes-native APIs and kubectl-style workflows for fleet management", "you need multi-cluster application deployment with per-cluster configuration overrides", "you want an out-of-the-box add-on rather than a full platform replacement"]}, "data_as_of": "2026-08-30T08:39:29.467469+00:00", "members": [{"path": "/products/clusternet", "repo": "clusternet/clusternet", "role": "main", "score": 96}], "provenance": {"archived": {"kind": "observed", "observed_at": "2026-08-28T04:04:45.499373+00:00", "source": "github"}, "artifact_type": {"confidence": null, "enriched_at": "2026-08-30T04:36:03.135016+00:00", "kind": "inferred", "prompt_version": 1, "sources": [{"content_hash": "c17c2edc52598bce5d925d572791c0f1c772720802a89171794ed1f85b92b7b9", "fetched_at": "2026-08-28T04:04:45.499373+00:00", "kind": "readme", "missing": false, "url": "https://github.com/clusternet/clusternet"}, {"content_hash": "475bd27c65aaa20badd7770ddc9df89be79c3fe73766b88b0c8c4ce0164e38e5", "fetched_at": "2026-08-29T11:45:50.139658+00:00", "kind": "homepage", "missing": false, "url": "https://clusternet.io"}, {"content_hash": "5c1a280f362410eafcce643ad5e2a885748ecfbaa2cfdfdd7182dd8f5d4c92fa", "fetched_at": "2026-08-29T11:45:50.142169+00:00", "kind": "site_page", "missing": false, "url": "https://clusternet.io/docs"}, {"content_hash": "615141d900fd34e04aa71b92f803fdcb7816c8d942f91678e9f8c20973f8ea10", "fetched_at": "2026-08-29T11:45:50.146224+00:00", "kind": "site_page", "missing": false, "url": "https://clusternet.io/docs/introduction"}, {"content_hash": "e6ca18a2dabd714c11b7714a78d52f1f941ce647cd7fa373d9731402ed5b726a", "fetched_at": "2026-08-29T11:45:50.151298+00:00", "kind": "site_page", "missing": false, "url": "https://clusternet.io/docs/kubectl-clusternet"}, {"content_hash": "b2d77a2a3443338cc92e1b01c67dbbfc41d49edd69228c9919726c47d8b0be94", "fetched_at": "2026-08-29T11:45:50.144071+00:00", "kind": "site_page", "missing": false, "url": "https://clusternet.io/releases"}], "taxonomy_version": 1}, "description": {"kind": "observed", "observed_at": "2026-08-28T04:04:45.499373+00:00", "source": "github"}, "domain": {"confidence": null, "enriched_at": "2026-08-30T04:36:03.135016+00:00", "kind": "inferred", "prompt_version": 1, "sources": [{"content_hash": "c17c2edc52598bce5d925d572791c0f1c772720802a89171794ed1f85b92b7b9", "fetched_at": "2026-08-28T04:04:45.499373+00:00", "kind": "readme", "missing": false, "url": "https://github.com/clusternet/clusternet"}, {"content_hash": "475bd27c65aaa20badd7770ddc9df89be79c3fe73766b88b0c8c4ce0164e38e5", "fetched_at": "2026-08-29T11:45:50.139658+00:00", "kind": "homepage", "missing": false, "url": "https://clusternet.io"}, {"content_hash": "5c1a280f362410eafcce643ad5e2a885748ecfbaa2cfdfdd7182dd8f5d4c92fa", "fetched_at": "2026-08-29T11:45:50.142169+00:00", "kind": "site_page", "missing": false, "url": "https://clusternet.io/docs"}, {"content_hash": "615141d900fd34e04aa71b92f803fdcb7816c8d942f91678e9f8c20973f8ea10", "fetched_at": "2026-08-29T11:45:50.146224+00:00", "kind": "site_page", "missing": false, "url": "https://clusternet.io/docs/introduction"}, {"content_hash": "e6ca18a2dabd714c11b7714a78d52f1f941ce647cd7fa373d9731402ed5b726a", "fetched_at": "2026-08-29T11:45:50.151298+00:00", "kind": "site_page", "missing": false, "url": "https://clusternet.io/docs/kubectl-clusternet"}, {"content_hash": "b2d77a2a3443338cc92e1b01c67dbbfc41d49edd69228c9919726c47d8b0be94", "fetched_at": "2026-08-29T11:45:50.144071+00:00", "kind": "site_page", "missing": false, "url": "https://clusternet.io/releases"}], "taxonomy_version": 1}, "enriched": {"inputs": [], "kind": "computed", "method": "enrichment_status"}, "function": {"confidence": null, "enriched_at": "2026-08-30T04:36:03.135016+00:00", "kind": "inferred", "prompt_version": 1, "sources": [{"content_hash": "c17c2edc52598bce5d925d572791c0f1c772720802a89171794ed1f85b92b7b9", "fetched_at": "2026-08-28T04:04:45.499373+00:00", "kind": "readme", "missing": false, "url": "https://github.com/clusternet/clusternet"}, {"content_hash": "475bd27c65aaa20badd7770ddc9df89be79c3fe73766b88b0c8c4ce0164e38e5", "fetched_at": "2026-08-29T11:45:50.139658+00:00", "kind": "homepage", "missing": false, "url": "https://clusternet.io"}, {"content_hash": "5c1a280f362410eafcce643ad5e2a885748ecfbaa2cfdfdd7182dd8f5d4c92fa", "fetched_at": "2026-08-29T11:45:50.142169+00:00", "kind": "site_page", "missing": false, "url": "https://clusternet.io/docs"}, {"content_hash": "615141d900fd34e04aa71b92f803fdcb7816c8d942f91678e9f8c20973f8ea10", "fetched_at": "2026-08-29T11:45:50.146224+00:00", "kind": "site_page", "missing": false, "url": "https://clusternet.io/docs/introduction"}, {"content_hash": "e6ca18a2dabd714c11b7714a78d52f1f941ce647cd7fa373d9731402ed5b726a", "fetched_at": "2026-08-29T11:45:50.151298+00:00", "kind": "site_page", "missing": false, "url": "https://clusternet.io/docs/kubectl-clusternet"}, {"content_hash": "b2d77a2a3443338cc92e1b01c67dbbfc41d49edd69228c9919726c47d8b0be94", "fetched_at": "2026-08-29T11:45:50.144071+00:00", "kind": "site_page", "missing": false, "url": "https://clusternet.io/releases"}], "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:45.499373+00:00", "source": "github"}, "language": {"kind": "observed", "observed_at": "2026-08-28T04:04:45.499373+00:00", "source": "github"}, "license": {"kind": "observed", "observed_at": "2026-08-28T04:04:45.499373+00:00", "source": "github"}, "license_family": {"inputs": ["license"], "kind": "computed", "method": "license_family"}, "maturity": {"confidence": null, "enriched_at": "2026-08-30T04:36:03.135016+00:00", "kind": "inferred", "prompt_version": 1, "sources": [{"content_hash": "c17c2edc52598bce5d925d572791c0f1c772720802a89171794ed1f85b92b7b9", "fetched_at": "2026-08-28T04:04:45.499373+00:00", "kind": "readme", "missing": false, "url": "https://github.com/clusternet/clusternet"}, {"content_hash": "475bd27c65aaa20badd7770ddc9df89be79c3fe73766b88b0c8c4ce0164e38e5", "fetched_at": "2026-08-29T11:45:50.139658+00:00", "kind": "homepage", "missing": false, "url": "https://clusternet.io"}, {"content_hash": "5c1a280f362410eafcce643ad5e2a885748ecfbaa2cfdfdd7182dd8f5d4c92fa", "fetched_at": "2026-08-29T11:45:50.142169+00:00", "kind": "site_page", "missing": false, "url": "https://clusternet.io/docs"}, {"content_hash": "615141d900fd34e04aa71b92f803fdcb7816c8d942f91678e9f8c20973f8ea10", "fetched_at": "2026-08-29T11:45:50.146224+00:00", "kind": "site_page", "missing": false, "url": "https://clusternet.io/docs/introduction"}, {"content_hash": "e6ca18a2dabd714c11b7714a78d52f1f941ce647cd7fa373d9731402ed5b726a", "fetched_at": "2026-08-29T11:45:50.151298+00:00", "kind": "site_page", "missing": false, "url": "https://clusternet.io/docs/kubectl-clusternet"}, {"content_hash": "b2d77a2a3443338cc92e1b01c67dbbfc41d49edd69228c9919726c47d8b0be94", "fetched_at": "2026-08-29T11:45:50.144071+00:00", "kind": "site_page", "missing": false, "url": "https://clusternet.io/releases"}], "taxonomy_version": 1}, "member_repos": {"kind": "observed", "observed_at": "2026-08-28T04:04:45.499373+00:00", "source": "github"}, "name": {"kind": "observed", "observed_at": "2026-08-28T04:04:45.499373+00:00", "source": "github"}, "platform": {"confidence": null, "enriched_at": "2026-08-30T04:36:03.135016+00:00", "kind": "inferred", "prompt_version": 1, "sources": [{"content_hash": "c17c2edc52598bce5d925d572791c0f1c772720802a89171794ed1f85b92b7b9", "fetched_at": "2026-08-28T04:04:45.499373+00:00", "kind": "readme", "missing": false, "url": "https://github.com/clusternet/clusternet"}, {"content_hash": "475bd27c65aaa20badd7770ddc9df89be79c3fe73766b88b0c8c4ce0164e38e5", "fetched_at": "2026-08-29T11:45:50.139658+00:00", "kind": "homepage", "missing": false, "url": "https://clusternet.io"}, {"content_hash": "5c1a280f362410eafcce643ad5e2a885748ecfbaa2cfdfdd7182dd8f5d4c92fa", "fetched_at": "2026-08-29T11:45:50.142169+00:00", "kind": "site_page", "missing": false, "url": "https://clusternet.io/docs"}, {"content_hash": "615141d900fd34e04aa71b92f803fdcb7816c8d942f91678e9f8c20973f8ea10", "fetched_at": "2026-08-29T11:45:50.146224+00:00", "kind": "site_page", "missing": false, "url": "https://clusternet.io/docs/introduction"}, {"content_hash": "e6ca18a2dabd714c11b7714a78d52f1f941ce647cd7fa373d9731402ed5b726a", "fetched_at": "2026-08-29T11:45:50.151298+00:00", "kind": "site_page", "missing": false, "url": "https://clusternet.io/docs/kubectl-clusternet"}, {"content_hash": "b2d77a2a3443338cc92e1b01c67dbbfc41d49edd69228c9919726c47d8b0be94", "fetched_at": "2026-08-29T11:45:50.144071+00:00", "kind": "site_page", "missing": false, "url": "https://clusternet.io/releases"}], "taxonomy_version": 1}, "pushed_at": {"kind": "observed", "observed_at": "2026-08-28T04:04:45.499373+00:00", "source": "github"}, "repo": {"kind": "observed", "observed_at": "2026-08-28T04:04:45.499373+00:00", "source": "github"}, "stars": {"kind": "observed", "observed_at": "2026-08-28T04:04:45.499373+00:00", "source": "github"}, "tags": {"confidence": null, "enriched_at": "2026-08-30T04:36:03.135016+00:00", "kind": "inferred", "prompt_version": 1, "sources": [{"content_hash": "c17c2edc52598bce5d925d572791c0f1c772720802a89171794ed1f85b92b7b9", "fetched_at": "2026-08-28T04:04:45.499373+00:00", "kind": "readme", "missing": false, "url": "https://github.com/clusternet/clusternet"}, {"content_hash": "475bd27c65aaa20badd7770ddc9df89be79c3fe73766b88b0c8c4ce0164e38e5", "fetched_at": "2026-08-29T11:45:50.139658+00:00", "kind": "homepage", "missing": false, "url": "https://clusternet.io"}, {"content_hash": "5c1a280f362410eafcce643ad5e2a885748ecfbaa2cfdfdd7182dd8f5d4c92fa", "fetched_at": "2026-08-29T11:45:50.142169+00:00", "kind": "site_page", "missing": false, "url": "https://clusternet.io/docs"}, {"content_hash": "615141d900fd34e04aa71b92f803fdcb7816c8d942f91678e9f8c20973f8ea10", "fetched_at": "2026-08-29T11:45:50.146224+00:00", "kind": "site_page", "missing": false, "url": "https://clusternet.io/docs/introduction"}, {"content_hash": "e6ca18a2dabd714c11b7714a78d52f1f941ce647cd7fa373d9731402ed5b726a", "fetched_at": "2026-08-29T11:45:50.151298+00:00", "kind": "site_page", "missing": false, "url": "https://clusternet.io/docs/kubectl-clusternet"}, {"content_hash": "b2d77a2a3443338cc92e1b01c67dbbfc41d49edd69228c9919726c47d8b0be94", "fetched_at": "2026-08-29T11:45:50.144071+00:00", "kind": "site_page", "missing": false, "url": "https://clusternet.io/releases"}], "taxonomy_version": 1}, "topics": {"kind": "observed", "observed_at": "2026-08-28T04:04:45.499373+00:00", "source": "github"}, "urls": {"kind": "observed", "observed_at": "2026-08-28T04:04:45.499373+00:00", "source": "github"}, "use_cases": {"confidence": null, "enriched_at": "2026-08-30T04:36:03.135016+00:00", "kind": "inferred", "prompt_version": 1, "sources": [{"content_hash": "c17c2edc52598bce5d925d572791c0f1c772720802a89171794ed1f85b92b7b9", "fetched_at": "2026-08-28T04:04:45.499373+00:00", "kind": "readme", "missing": false, "url": "https://github.com/clusternet/clusternet"}, {"content_hash": "475bd27c65aaa20badd7770ddc9df89be79c3fe73766b88b0c8c4ce0164e38e5", "fetched_at": "2026-08-29T11:45:50.139658+00:00", "kind": "homepage", "missing": false, "url": "https://clusternet.io"}, {"content_hash": "5c1a280f362410eafcce643ad5e2a885748ecfbaa2cfdfdd7182dd8f5d4c92fa", "fetched_at": "2026-08-29T11:45:50.142169+00:00", "kind": "site_page", "missing": false, "url": "https://clusternet.io/docs"}, {"content_hash": "615141d900fd34e04aa71b92f803fdcb7816c8d942f91678e9f8c20973f8ea10", "fetched_at": "2026-08-29T11:45:50.146224+00:00", "kind": "site_page", "missing": false, "url": "https://clusternet.io/docs/introduction"}, {"content_hash": "e6ca18a2dabd714c11b7714a78d52f1f941ce647cd7fa373d9731402ed5b726a", "fetched_at": "2026-08-29T11:45:50.151298+00:00", "kind": "site_page", "missing": false, "url": "https://clusternet.io/docs/kubectl-clusternet"}, {"content_hash": "b2d77a2a3443338cc92e1b01c67dbbfc41d49edd69228c9919726c47d8b0be94", "fetched_at": "2026-08-29T11:45:50.144071+00:00", "kind": "site_page", "missing": false, "url": "https://clusternet.io/releases"}], "taxonomy_version": 1}, "what_it_is": {"confidence": null, "enriched_at": "2026-08-30T04:36:03.135016+00:00", "kind": "inferred", "prompt_version": 1, "sources": [{"content_hash": "c17c2edc52598bce5d925d572791c0f1c772720802a89171794ed1f85b92b7b9", "fetched_at": "2026-08-28T04:04:45.499373+00:00", "kind": "readme", "missing": false, "url": "https://github.com/clusternet/clusternet"}, {"content_hash": "475bd27c65aaa20badd7770ddc9df89be79c3fe73766b88b0c8c4ce0164e38e5", "fetched_at": "2026-08-29T11:45:50.139658+00:00", "kind": "homepage", "missing": false, "url": "https://clusternet.io"}, {"content_hash": "5c1a280f362410eafcce643ad5e2a885748ecfbaa2cfdfdd7182dd8f5d4c92fa", "fetched_at": "2026-08-29T11:45:50.142169+00:00", "kind": "site_page", "missing": false, "url": "https://clusternet.io/docs"}, {"content_hash": "615141d900fd34e04aa71b92f803fdcb7816c8d942f91678e9f8c20973f8ea10", "fetched_at": "2026-08-29T11:45:50.146224+00:00", "kind": "site_page", "missing": false, "url": "https://clusternet.io/docs/introduction"}, {"content_hash": "e6ca18a2dabd714c11b7714a78d52f1f941ce647cd7fa373d9731402ed5b726a", "fetched_at": "2026-08-29T11:45:50.151298+00:00", "kind": "site_page", "missing": false, "url": "https://clusternet.io/docs/kubectl-clusternet"}, {"content_hash": "b2d77a2a3443338cc92e1b01c67dbbfc41d49edd69228c9919726c47d8b0be94", "fetched_at": "2026-08-29T11:45:50.144071+00:00", "kind": "site_page", "missing": false, "url": "https://clusternet.io/releases"}], "taxonomy_version": 1}, "when_to_avoid": {"confidence": null, "enriched_at": "2026-08-30T04:36:03.135016+00:00", "kind": "inferred", "prompt_version": 1, "sources": [{"content_hash": "c17c2edc52598bce5d925d572791c0f1c772720802a89171794ed1f85b92b7b9", "fetched_at": "2026-08-28T04:04:45.499373+00:00", "kind": "readme", "missing": false, "url": "https://github.com/clusternet/clusternet"}, {"content_hash": "475bd27c65aaa20badd7770ddc9df89be79c3fe73766b88b0c8c4ce0164e38e5", "fetched_at": "2026-08-29T11:45:50.139658+00:00", "kind": "homepage", "missing": false, "url": "https://clusternet.io"}, {"content_hash": "5c1a280f362410eafcce643ad5e2a885748ecfbaa2cfdfdd7182dd8f5d4c92fa", "fetched_at": "2026-08-29T11:45:50.142169+00:00", "kind": "site_page", "missing": false, "url": "https://clusternet.io/docs"}, {"content_hash": "615141d900fd34e04aa71b92f803fdcb7816c8d942f91678e9f8c20973f8ea10", "fetched_at": "2026-08-29T11:45:50.146224+00:00", "kind": "site_page", "missing": false, "url": "https://clusternet.io/docs/introduction"}, {"content_hash": "e6ca18a2dabd714c11b7714a78d52f1f941ce647cd7fa373d9731402ed5b726a", "fetched_at": "2026-08-29T11:45:50.151298+00:00", "kind": "site_page", "missing": false, "url": "https://clusternet.io/docs/kubectl-clusternet"}, {"content_hash": "b2d77a2a3443338cc92e1b01c67dbbfc41d49edd69228c9919726c47d8b0be94", "fetched_at": "2026-08-29T11:45:50.144071+00:00", "kind": "site_page", "missing": false, "url": "https://clusternet.io/releases"}], "taxonomy_version": 1}, "when_to_choose": {"confidence": null, "enriched_at": "2026-08-30T04:36:03.135016+00:00", "kind": "inferred", "prompt_version": 1, "sources": [{"content_hash": "c17c2edc52598bce5d925d572791c0f1c772720802a89171794ed1f85b92b7b9", "fetched_at": "2026-08-28T04:04:45.499373+00:00", "kind": "readme", "missing": false, "url": "https://github.com/clusternet/clusternet"}, {"content_hash": "475bd27c65aaa20badd7770ddc9df89be79c3fe73766b88b0c8c4ce0164e38e5", "fetched_at": "2026-08-29T11:45:50.139658+00:00", "kind": "homepage", "missing": false, "url": "https://clusternet.io"}, {"content_hash": "5c1a280f362410eafcce643ad5e2a885748ecfbaa2cfdfdd7182dd8f5d4c92fa", "fetched_at": "2026-08-29T11:45:50.142169+00:00", "kind": "site_page", "missing": false, "url": "https://clusternet.io/docs"}, {"content_hash": "615141d900fd34e04aa71b92f803fdcb7816c8d942f91678e9f8c20973f8ea10", "fetched_at": "2026-08-29T11:45:50.146224+00:00", "kind": "site_page", "missing": false, "url": "https://clusternet.io/docs/introduction"}, {"content_hash": "e6ca18a2dabd714c11b7714a78d52f1f941ce647cd7fa373d9731402ed5b726a", "fetched_at": "2026-08-29T11:45:50.151298+00:00", "kind": "site_page", "missing": false, "url": "https://clusternet.io/docs/kubectl-clusternet"}, {"content_hash": "b2d77a2a3443338cc92e1b01c67dbbfc41d49edd69228c9919726c47d8b0be94", "fetched_at": "2026-08-29T11:45:50.144071+00:00", "kind": "site_page", "missing": false, "url": "https://clusternet.io/releases"}], "taxonomy_version": 1}}, "score": {"components": {"activity": 99, "longevity": 100, "rhythm": 90}, "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": 1913, "days_push": 9, "days_rel": 67, "gap_med": 12.0, "n_releases_24m": 7}, "score": 96, "version": 2}, "staleness": {"enrichment_outdated": false, "low_confidence": false, "scrape_days": 9, "stale_scrape": false}}