{"adoption": {"forks": 313, "observed_at": "2026-09-03T02:15:14.188978+00:00", "stars": 1074}, "canonical_url": "https://ross.abutalabs.com/products/node-feature-discovery", "card": {"archived": false, "artifact_type": "service", "description": "Node feature discovery for Kubernetes", "domain": ["hardware", "cloud-computing", "infrastructure-as-code"], "enriched": true, "function": ["monitoring", "configuration-management", "deployment"], "health_score": 100, "homepage": null, "language": "Go", "license": "Apache-2.0", "license_family": "permissive", "maturity": "active", "member_repos": ["kubernetes-sigs/node-feature-discovery"], "name": "kubernetes-sigs/node-feature-discovery", "platform": ["go", "self-hosted"], "pushed_at": "2026-09-02T08:18:48+00:00", "repo": "kubernetes-sigs/node-feature-discovery", "stars": 1074, "tags": ["node-labels", "feature-detection", "hardware-discovery", "cpuid", "k8s-sig-node", "helm-chart", "kustomize", "kubernetes", "linux", "docker"], "topics": ["kubernetes", "hardware", "feature-detection", "node-labels", "cpuid", "rdt", "k8s-sig-node", "hacktoberfest"], "urls": [], "use_cases": ["label kubernetes nodes with hardware capabilities like cpuid features", "schedule pods only onto nodes with specific cpu instructions", "detect gpu and other pci devices in a kubernetes cluster", "discover node system configuration for workload placement", "automate hardware-aware scheduling in kubernetes", "expose node topology and rdt capabilities as labels"], "what_it_is": "Node Feature Discovery (NFD) is a Kubernetes add-on that detects hardware features and system configuration on cluster nodes and advertises them as node labels. It enables Kubernetes workloads to be scheduled onto nodes with specific CPU capabilities, devices, or other node attributes.", "when_to_avoid": ["you are not running kubernetes", "you need application-level feature flags rather than node hardware discovery", "your cluster is homogeneous and default kubernetes labels suffice"], "when_to_choose": ["you run kubernetes on heterogeneous hardware and need hardware-aware scheduling", "you want automatic node labeling of cpu, memory, or device features", "you deploy kubernetes add-ons via helm or kustomize and want a maintained sig-node project"]}, "data_as_of": "2026-08-30T08:39:29.467469+00:00", "members": [{"path": "/products/node-feature-discovery", "repo": "kubernetes-sigs/node-feature-discovery", "role": "main", "score": 97}], "provenance": {"archived": {"kind": "observed", "observed_at": "2026-09-03T02:15:14.188978+00:00", "source": "github"}, "artifact_type": {"confidence": null, "enriched_at": "2026-08-30T06:54:43.529776+00:00", "kind": "inferred", "prompt_version": 1, "sources": [{"content_hash": "38c3fc5ee532c771708bb661ea8992aec77e8259d09773c366f9513c68c5728d", "fetched_at": "2026-09-03T02:15:14.188978+00:00", "kind": "readme", "missing": false, "url": "https://github.com/kubernetes-sigs/node-feature-discovery"}], "taxonomy_version": 1}, "description": {"kind": "observed", "observed_at": "2026-09-03T02:15:14.188978+00:00", "source": "github"}, "domain": {"confidence": null, "enriched_at": "2026-08-30T06:54:43.529776+00:00", "kind": "inferred", "prompt_version": 1, "sources": [{"content_hash": "38c3fc5ee532c771708bb661ea8992aec77e8259d09773c366f9513c68c5728d", "fetched_at": "2026-09-03T02:15:14.188978+00:00", "kind": "readme", "missing": false, "url": "https://github.com/kubernetes-sigs/node-feature-discovery"}], "taxonomy_version": 1}, "enriched": {"inputs": [], "kind": "computed", "method": "enrichment_status"}, "function": {"confidence": null, "enriched_at": "2026-08-30T06:54:43.529776+00:00", "kind": "inferred", "prompt_version": 1, "sources": [{"content_hash": "38c3fc5ee532c771708bb661ea8992aec77e8259d09773c366f9513c68c5728d", "fetched_at": "2026-09-03T02:15:14.188978+00:00", "kind": "readme", "missing": false, "url": "https://github.com/kubernetes-sigs/node-feature-discovery"}], "taxonomy_version": 1}, "health_score": {"inputs": ["days_since_push", "days_since_release", "archived"], "kind": "computed", "method": "health_v1"}, "homepage": {"kind": "observed", "observed_at": "2026-09-03T02:15:14.188978+00:00", "source": "github"}, "language": {"kind": "observed", "observed_at": "2026-09-03T02:15:14.188978+00:00", "source": "github"}, "license": {"kind": "observed", "observed_at": "2026-09-03T02:15:14.188978+00:00", "source": "github"}, "license_family": {"inputs": ["license"], "kind": "computed", "method": "license_family"}, "maturity": {"confidence": null, "enriched_at": "2026-08-30T06:54:43.529776+00:00", "kind": "inferred", "prompt_version": 1, "sources": [{"content_hash": "38c3fc5ee532c771708bb661ea8992aec77e8259d09773c366f9513c68c5728d", "fetched_at": "2026-09-03T02:15:14.188978+00:00", "kind": "readme", "missing": false, "url": "https://github.com/kubernetes-sigs/node-feature-discovery"}], "taxonomy_version": 1}, "member_repos": {"kind": "observed", "observed_at": "2026-09-03T02:15:14.188978+00:00", "source": "github"}, "name": {"kind": "observed", "observed_at": "2026-09-03T02:15:14.188978+00:00", "source": "github"}, "platform": {"confidence": null, "enriched_at": "2026-08-30T06:54:43.529776+00:00", "kind": "inferred", "prompt_version": 1, "sources": [{"content_hash": "38c3fc5ee532c771708bb661ea8992aec77e8259d09773c366f9513c68c5728d", "fetched_at": "2026-09-03T02:15:14.188978+00:00", "kind": "readme", "missing": false, "url": "https://github.com/kubernetes-sigs/node-feature-discovery"}], "taxonomy_version": 1}, "pushed_at": {"kind": "observed", "observed_at": "2026-09-03T02:15:14.188978+00:00", "source": "github"}, "repo": {"kind": "observed", "observed_at": "2026-09-03T02:15:14.188978+00:00", "source": "github"}, "stars": {"kind": "observed", "observed_at": "2026-09-03T02:15:14.188978+00:00", "source": "github"}, "tags": {"confidence": null, "enriched_at": "2026-08-30T06:54:43.529776+00:00", "kind": "inferred", "prompt_version": 1, "sources": [{"content_hash": "38c3fc5ee532c771708bb661ea8992aec77e8259d09773c366f9513c68c5728d", "fetched_at": "2026-09-03T02:15:14.188978+00:00", "kind": "readme", "missing": false, "url": "https://github.com/kubernetes-sigs/node-feature-discovery"}], "taxonomy_version": 1}, "topics": {"kind": "observed", "observed_at": "2026-09-03T02:15:14.188978+00:00", "source": "github"}, "urls": {"kind": "observed", "observed_at": "2026-09-03T02:15:14.188978+00:00", "source": "github"}, "use_cases": {"confidence": null, "enriched_at": "2026-08-30T06:54:43.529776+00:00", "kind": "inferred", "prompt_version": 1, "sources": [{"content_hash": "38c3fc5ee532c771708bb661ea8992aec77e8259d09773c366f9513c68c5728d", "fetched_at": "2026-09-03T02:15:14.188978+00:00", "kind": "readme", "missing": false, "url": "https://github.com/kubernetes-sigs/node-feature-discovery"}], "taxonomy_version": 1}, "what_it_is": {"confidence": null, "enriched_at": "2026-08-30T06:54:43.529776+00:00", "kind": "inferred", "prompt_version": 1, "sources": [{"content_hash": "38c3fc5ee532c771708bb661ea8992aec77e8259d09773c366f9513c68c5728d", "fetched_at": "2026-09-03T02:15:14.188978+00:00", "kind": "readme", "missing": false, "url": "https://github.com/kubernetes-sigs/node-feature-discovery"}], "taxonomy_version": 1}, "when_to_avoid": {"confidence": null, "enriched_at": "2026-08-30T06:54:43.529776+00:00", "kind": "inferred", "prompt_version": 1, "sources": [{"content_hash": "38c3fc5ee532c771708bb661ea8992aec77e8259d09773c366f9513c68c5728d", "fetched_at": "2026-09-03T02:15:14.188978+00:00", "kind": "readme", "missing": false, "url": "https://github.com/kubernetes-sigs/node-feature-discovery"}], "taxonomy_version": 1}, "when_to_choose": {"confidence": null, "enriched_at": "2026-08-30T06:54:43.529776+00:00", "kind": "inferred", "prompt_version": 1, "sources": [{"content_hash": "38c3fc5ee532c771708bb661ea8992aec77e8259d09773c366f9513c68c5728d", "fetched_at": "2026-09-03T02:15:14.188978+00:00", "kind": "readme", "missing": false, "url": "https://github.com/kubernetes-sigs/node-feature-discovery"}], "taxonomy_version": 1}}, "score": {"components": {"activity": 100, "longevity": 100, "rhythm": 92}, "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": 3693, "days_push": 0, "days_rel": 54, "gap_med": 13, "n_releases_24m": 16}, "score": 97, "version": 2}, "staleness": {"enrichment_outdated": false, "low_confidence": false, "scrape_days": 3, "stale_scrape": false}}