{"adoption": {"forks": 191, "observed_at": "2026-09-03T02:15:19.922359+00:00", "stars": 1170}, "canonical_url": "https://ross.abutalabs.com/products/topolvm", "card": {"archived": false, "artifact_type": "service", "description": "Capacity-aware CSI plugin for Kubernetes", "domain": ["cloud-computing", "infrastructure-as-code"], "enriched": true, "function": ["deployment", "monitoring", "scheduling"], "health_score": 100, "homepage": null, "language": "Go", "license": "Apache-2.0", "license_family": "permissive", "maturity": "active", "member_repos": ["topolvm/topolvm"], "name": "topolvm/topolvm", "platform": ["go"], "pushed_at": "2026-09-02T09:31:12+00:00", "repo": "topolvm/topolvm", "stars": 1170, "tags": ["csi", "lvm", "kubernetes-storage", "persistent-volumes", "dynamic-provisioning", "topology-aware", "block-storage", "prometheus-metrics", "storage", "containers", "devops", "linux", "kubernetes", "docker"], "topics": ["kubernetes", "csi", "lvm2"], "urls": [], "use_cases": ["provision local persistent volumes on kubernetes nodes with lvm", "dynamically create pvcs backed by lvm logical volumes", "schedule pods to nodes with the most free storage capacity", "expose raw block devices to containers in kubernetes", "expand persistent volumes without downtime", "export volume usage metrics to prometheus", "run stateful workloads with local storage on bare metal kubernetes"], "what_it_is": "TopoLVM is a capacity-aware CSI (Container Storage Interface) plugin for Kubernetes that provisions persistent volumes using LVM2 on Linux nodes. It implements local persistent volumes with dynamic provisioning, topology-aware scheduling, raw block volumes, volume expansion, and Prometheus metrics.", "when_to_avoid": ["you need shared or replicated storage across nodes rather than node-local volumes", "your cluster runs on non-Linux nodes or hosts without LVM2", "you want cloud-managed storage like EBS or Persistent Disk instead of local disks"], "when_to_choose": ["you run kubernetes on bare metal or VMs with LVM2-managed local disks", "you need dynamic provisioning of local persistent volumes with topology awareness", "you want capacity-aware pod scheduling based on remaining storage", "you need raw block volumes or volume expansion on local storage"]}, "data_as_of": "2026-08-30T08:39:29.467469+00:00", "members": [{"path": "/products/topolvm", "repo": "topolvm/topolvm", "role": "main", "score": 100}], "provenance": {"archived": {"kind": "observed", "observed_at": "2026-09-03T02:15:19.922359+00:00", "source": "github"}, "artifact_type": {"confidence": null, "enriched_at": "2026-08-30T06:29:28.746056+00:00", "kind": "inferred", "prompt_version": 1, "sources": [{"content_hash": "6f0773a713a292d6cf7b695b96f62c7ca74797c2747fbb1667e3987fb1ab8c2b", "fetched_at": "2026-09-03T02:15:19.922359+00:00", "kind": "readme", "missing": false, "url": "https://github.com/topolvm/topolvm"}], "taxonomy_version": 1}, "description": {"kind": "observed", "observed_at": "2026-09-03T02:15:19.922359+00:00", "source": "github"}, "domain": {"confidence": null, "enriched_at": "2026-08-30T06:29:28.746056+00:00", "kind": "inferred", "prompt_version": 1, "sources": [{"content_hash": "6f0773a713a292d6cf7b695b96f62c7ca74797c2747fbb1667e3987fb1ab8c2b", "fetched_at": "2026-09-03T02:15:19.922359+00:00", "kind": "readme", "missing": false, "url": "https://github.com/topolvm/topolvm"}], "taxonomy_version": 1}, "enriched": {"inputs": [], "kind": "computed", "method": "enrichment_status"}, "function": {"confidence": null, "enriched_at": "2026-08-30T06:29:28.746056+00:00", "kind": "inferred", "prompt_version": 1, "sources": [{"content_hash": "6f0773a713a292d6cf7b695b96f62c7ca74797c2747fbb1667e3987fb1ab8c2b", "fetched_at": "2026-09-03T02:15:19.922359+00:00", "kind": "readme", "missing": false, "url": "https://github.com/topolvm/topolvm"}], "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:19.922359+00:00", "source": "github"}, "language": {"kind": "observed", "observed_at": "2026-09-03T02:15:19.922359+00:00", "source": "github"}, "license": {"kind": "observed", "observed_at": "2026-09-03T02:15:19.922359+00:00", "source": "github"}, "license_family": {"inputs": ["license"], "kind": "computed", "method": "license_family"}, "maturity": {"confidence": null, "enriched_at": "2026-08-30T06:29:28.746056+00:00", "kind": "inferred", "prompt_version": 1, "sources": [{"content_hash": "6f0773a713a292d6cf7b695b96f62c7ca74797c2747fbb1667e3987fb1ab8c2b", "fetched_at": "2026-09-03T02:15:19.922359+00:00", "kind": "readme", "missing": false, "url": "https://github.com/topolvm/topolvm"}], "taxonomy_version": 1}, "member_repos": {"kind": "observed", "observed_at": "2026-09-03T02:15:19.922359+00:00", "source": "github"}, "name": {"kind": "observed", "observed_at": "2026-09-03T02:15:19.922359+00:00", "source": "github"}, "platform": {"confidence": null, "enriched_at": "2026-08-30T06:29:28.746056+00:00", "kind": "inferred", "prompt_version": 1, "sources": [{"content_hash": "6f0773a713a292d6cf7b695b96f62c7ca74797c2747fbb1667e3987fb1ab8c2b", "fetched_at": "2026-09-03T02:15:19.922359+00:00", "kind": "readme", "missing": false, "url": "https://github.com/topolvm/topolvm"}], "taxonomy_version": 1}, "pushed_at": {"kind": "observed", "observed_at": "2026-09-03T02:15:19.922359+00:00", "source": "github"}, "repo": {"kind": "observed", "observed_at": "2026-09-03T02:15:19.922359+00:00", "source": "github"}, "stars": {"kind": "observed", "observed_at": "2026-09-03T02:15:19.922359+00:00", "source": "github"}, "tags": {"confidence": null, "enriched_at": "2026-08-30T06:29:28.746056+00:00", "kind": "inferred", "prompt_version": 1, "sources": [{"content_hash": "6f0773a713a292d6cf7b695b96f62c7ca74797c2747fbb1667e3987fb1ab8c2b", "fetched_at": "2026-09-03T02:15:19.922359+00:00", "kind": "readme", "missing": false, "url": "https://github.com/topolvm/topolvm"}], "taxonomy_version": 1}, "topics": {"kind": "observed", "observed_at": "2026-09-03T02:15:19.922359+00:00", "source": "github"}, "urls": {"kind": "observed", "observed_at": "2026-09-03T02:15:19.922359+00:00", "source": "github"}, "use_cases": {"confidence": null, "enriched_at": "2026-08-30T06:29:28.746056+00:00", "kind": "inferred", "prompt_version": 1, "sources": [{"content_hash": "6f0773a713a292d6cf7b695b96f62c7ca74797c2747fbb1667e3987fb1ab8c2b", "fetched_at": "2026-09-03T02:15:19.922359+00:00", "kind": "readme", "missing": false, "url": "https://github.com/topolvm/topolvm"}], "taxonomy_version": 1}, "what_it_is": {"confidence": null, "enriched_at": "2026-08-30T06:29:28.746056+00:00", "kind": "inferred", "prompt_version": 1, "sources": [{"content_hash": "6f0773a713a292d6cf7b695b96f62c7ca74797c2747fbb1667e3987fb1ab8c2b", "fetched_at": "2026-09-03T02:15:19.922359+00:00", "kind": "readme", "missing": false, "url": "https://github.com/topolvm/topolvm"}], "taxonomy_version": 1}, "when_to_avoid": {"confidence": null, "enriched_at": "2026-08-30T06:29:28.746056+00:00", "kind": "inferred", "prompt_version": 1, "sources": [{"content_hash": "6f0773a713a292d6cf7b695b96f62c7ca74797c2747fbb1667e3987fb1ab8c2b", "fetched_at": "2026-09-03T02:15:19.922359+00:00", "kind": "readme", "missing": false, "url": "https://github.com/topolvm/topolvm"}], "taxonomy_version": 1}, "when_to_choose": {"confidence": null, "enriched_at": "2026-08-30T06:29:28.746056+00:00", "kind": "inferred", "prompt_version": 1, "sources": [{"content_hash": "6f0773a713a292d6cf7b695b96f62c7ca74797c2747fbb1667e3987fb1ab8c2b", "fetched_at": "2026-09-03T02:15:19.922359+00:00", "kind": "readme", "missing": false, "url": "https://github.com/topolvm/topolvm"}], "taxonomy_version": 1}}, "score": {"components": {"activity": 100, "longevity": 100, "rhythm": 100}, "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": 2686, "days_push": 0, "days_rel": 0, "gap_med": 22.5, "n_releases_24m": 39}, "score": 100, "version": 2}, "staleness": {"enrichment_outdated": false, "low_confidence": false, "scrape_days": 3, "stale_scrape": false}}