{"adoption": {"forks": 126, "observed_at": "2026-08-28T04:04:22.385011+00:00", "stars": 1324}, "canonical_url": "https://ross.abutalabs.com/products/democratic-csi", "card": {"archived": false, "artifact_type": "service", "description": "csi storage for container orchestration systems", "domain": ["infrastructure-as-code", "self-hosted"], "enriched": true, "function": ["deployment", "container-orchestration"], "health_score": 72, "homepage": null, "language": "JavaScript", "license": "MIT", "license_family": "permissive", "maturity": "active", "member_repos": ["democratic-csi/democratic-csi"], "name": "democratic-csi/democratic-csi", "platform": ["bsd", "self-hosted"], "pushed_at": "2026-01-07T22:17:05+00:00", "repo": "democratic-csi/democratic-csi", "stars": 1324, "tags": ["csi-driver", "zfs", "truenas", "freenas", "nfs", "iscsi", "smb", "nvmeof", "storage-provisioning", "persistent-volumes", "storage", "containers", "devops", "kubernetes", "docker", "linux"], "topics": ["freenas", "k8s", "csi-driver", "csi", "kubernetes", "ubuntu", "truenas", "nfs", "iscsi", "storage", "zfs", "zfsonlinux", "centos", "rhel", "freebsd", "debian"], "urls": [], "use_cases": ["provision persistent volumes in Kubernetes from TrueNAS", "dynamically create zfs datasets over NFS for k8s pods", "csi driver for iscsi storage on freenas", "snapshot and resize persistent volume claims on zfs", "use zfs on ubuntu as kubernetes storage backend", "provision node-local zfs zvols for kubernetes"], "what_it_is": "democratic-csi implements the Container Storage Interface (CSI) spec to provide dynamic storage provisioning for container orchestration systems like Kubernetes. It offers multiple drivers for zfs-based storage systems (TrueNAS/FreeNAS, ZoL) sharing volumes over NFS, iSCSI, SMB, and NVMe-oF, plus a framework for developing new CSI drivers.", "when_to_avoid": ["you use a cloud provider with managed CSI drivers (EBS, PD, etc.)", "your storage backend is not zfs-based or one of the supported systems", "you need a non-container storage solution"], "when_to_choose": ["you run Kubernetes (or another orchestrator) against TrueNAS/FreeNAS or a zfs-on-linux server", "you need full CSI features like resizing, snapshots, and clones from zfs-backed storage", "you want a self-hosted alternative to cloud storage drivers"]}, "data_as_of": "2026-08-30T08:39:29.467469+00:00", "members": [{"path": "/products/democratic-csi", "repo": "democratic-csi/democratic-csi", "role": "main", "score": 55}], "provenance": {"archived": {"kind": "observed", "observed_at": "2026-08-28T04:04:22.385011+00:00", "source": "github"}, "artifact_type": {"confidence": null, "enriched_at": "2026-08-30T04:46:41.594376+00:00", "kind": "inferred", "prompt_version": 1, "sources": [{"content_hash": "c5038dad09fa5d16c47fe2dec1c9107ffc1b7e92fff82a5fafc4c896c8f168d7", "fetched_at": "2026-08-28T04:04:22.385011+00:00", "kind": "readme", "missing": false, "url": "https://github.com/democratic-csi/democratic-csi"}], "taxonomy_version": 1}, "description": {"kind": "observed", "observed_at": "2026-08-28T04:04:22.385011+00:00", "source": "github"}, "domain": {"confidence": null, "enriched_at": "2026-08-30T04:46:41.594376+00:00", "kind": "inferred", "prompt_version": 1, "sources": [{"content_hash": "c5038dad09fa5d16c47fe2dec1c9107ffc1b7e92fff82a5fafc4c896c8f168d7", "fetched_at": "2026-08-28T04:04:22.385011+00:00", "kind": "readme", "missing": false, "url": "https://github.com/democratic-csi/democratic-csi"}], "taxonomy_version": 1}, "enriched": {"inputs": [], "kind": "computed", "method": "enrichment_status"}, "function": {"confidence": null, "enriched_at": "2026-08-30T04:46:41.594376+00:00", "kind": "inferred", "prompt_version": 1, "sources": [{"content_hash": "c5038dad09fa5d16c47fe2dec1c9107ffc1b7e92fff82a5fafc4c896c8f168d7", "fetched_at": "2026-08-28T04:04:22.385011+00:00", "kind": "readme", "missing": false, "url": "https://github.com/democratic-csi/democratic-csi"}], "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:22.385011+00:00", "source": "github"}, "language": {"kind": "observed", "observed_at": "2026-08-28T04:04:22.385011+00:00", "source": "github"}, "license": {"kind": "observed", "observed_at": "2026-08-28T04:04:22.385011+00:00", "source": "github"}, "license_family": {"inputs": ["license"], "kind": "computed", "method": "license_family"}, "maturity": {"confidence": null, "enriched_at": "2026-08-30T04:46:41.594376+00:00", "kind": "inferred", "prompt_version": 1, "sources": [{"content_hash": "c5038dad09fa5d16c47fe2dec1c9107ffc1b7e92fff82a5fafc4c896c8f168d7", "fetched_at": "2026-08-28T04:04:22.385011+00:00", "kind": "readme", "missing": false, "url": "https://github.com/democratic-csi/democratic-csi"}], "taxonomy_version": 1}, "member_repos": {"kind": "observed", "observed_at": "2026-08-28T04:04:22.385011+00:00", "source": "github"}, "name": {"kind": "observed", "observed_at": "2026-08-28T04:04:22.385011+00:00", "source": "github"}, "platform": {"confidence": null, "enriched_at": "2026-08-30T04:46:41.594376+00:00", "kind": "inferred", "prompt_version": 1, "sources": [{"content_hash": "c5038dad09fa5d16c47fe2dec1c9107ffc1b7e92fff82a5fafc4c896c8f168d7", "fetched_at": "2026-08-28T04:04:22.385011+00:00", "kind": "readme", "missing": false, "url": "https://github.com/democratic-csi/democratic-csi"}], "taxonomy_version": 1}, "pushed_at": {"kind": "observed", "observed_at": "2026-08-28T04:04:22.385011+00:00", "source": "github"}, "repo": {"kind": "observed", "observed_at": "2026-08-28T04:04:22.385011+00:00", "source": "github"}, "stars": {"kind": "observed", "observed_at": "2026-08-28T04:04:22.385011+00:00", "source": "github"}, "tags": {"confidence": null, "enriched_at": "2026-08-30T04:46:41.594376+00:00", "kind": "inferred", "prompt_version": 1, "sources": [{"content_hash": "c5038dad09fa5d16c47fe2dec1c9107ffc1b7e92fff82a5fafc4c896c8f168d7", "fetched_at": "2026-08-28T04:04:22.385011+00:00", "kind": "readme", "missing": false, "url": "https://github.com/democratic-csi/democratic-csi"}], "taxonomy_version": 1}, "topics": {"kind": "observed", "observed_at": "2026-08-28T04:04:22.385011+00:00", "source": "github"}, "urls": {"kind": "observed", "observed_at": "2026-08-28T04:04:22.385011+00:00", "source": "github"}, "use_cases": {"confidence": null, "enriched_at": "2026-08-30T04:46:41.594376+00:00", "kind": "inferred", "prompt_version": 1, "sources": [{"content_hash": "c5038dad09fa5d16c47fe2dec1c9107ffc1b7e92fff82a5fafc4c896c8f168d7", "fetched_at": "2026-08-28T04:04:22.385011+00:00", "kind": "readme", "missing": false, "url": "https://github.com/democratic-csi/democratic-csi"}], "taxonomy_version": 1}, "what_it_is": {"confidence": null, "enriched_at": "2026-08-30T04:46:41.594376+00:00", "kind": "inferred", "prompt_version": 1, "sources": [{"content_hash": "c5038dad09fa5d16c47fe2dec1c9107ffc1b7e92fff82a5fafc4c896c8f168d7", "fetched_at": "2026-08-28T04:04:22.385011+00:00", "kind": "readme", "missing": false, "url": "https://github.com/democratic-csi/democratic-csi"}], "taxonomy_version": 1}, "when_to_avoid": {"confidence": null, "enriched_at": "2026-08-30T04:46:41.594376+00:00", "kind": "inferred", "prompt_version": 1, "sources": [{"content_hash": "c5038dad09fa5d16c47fe2dec1c9107ffc1b7e92fff82a5fafc4c896c8f168d7", "fetched_at": "2026-08-28T04:04:22.385011+00:00", "kind": "readme", "missing": false, "url": "https://github.com/democratic-csi/democratic-csi"}], "taxonomy_version": 1}, "when_to_choose": {"confidence": null, "enriched_at": "2026-08-30T04:46:41.594376+00:00", "kind": "inferred", "prompt_version": 1, "sources": [{"content_hash": "c5038dad09fa5d16c47fe2dec1c9107ffc1b7e92fff82a5fafc4c896c8f168d7", "fetched_at": "2026-08-28T04:04:22.385011+00:00", "kind": "readme", "missing": false, "url": "https://github.com/democratic-csi/democratic-csi"}], "taxonomy_version": 1}}, "score": {"components": {"activity": 61, "longevity": 100, "rhythm": 21}, "computed_at": "2026-09-03T02:20:16.233290+00:00", "flags": ["prerelease_only"], "formula": "round(0.45*activity + 0.35*rhythm + 0.20*longevity); archived -> min(score, 10)", "inputs": {"age_days": 2477, "days_push": 238, "days_rel": 313, "gap_med": null, "n_releases_24m": 1}, "score": 55, "version": 2}, "staleness": {"enrichment_outdated": false, "low_confidence": false, "scrape_days": 9, "stale_scrape": false}}