{"adoption": {"forks": 189, "observed_at": "2026-08-28T04:07:07.453596+00:00", "stars": 2660}, "canonical_url": "https://ross.abutalabs.com/products/driftctl", "card": {"archived": false, "artifact_type": "cli-tool", "description": "Detect, track and alert on infrastructure drift", "domain": ["infrastructure-as-code", "cloud-computing", "security"], "enriched": true, "function": ["infrastructure-as-code", "monitoring", "alerting", "security", "developer-tools"], "health_score": 81, "homepage": null, "language": "Go", "license": "Apache-2.0", "license_family": "permissive", "maturity": "maintenance", "member_repos": ["snyk/driftctl"], "name": "snyk/driftctl", "platform": ["cli", "windows", "go"], "pushed_at": "2026-07-31T19:58:53+00:00", "repo": "snyk/driftctl", "stars": 2660, "tags": ["terraform", "infrastructure-drift", "iac-coverage", "aws", "azure", "gcp", "devsecops", "devops", "automation", "linux", "macos", "docker"], "topics": ["infrastructure-drift", "iac", "terraform", "aws", "drift", "infrastructure-as-code", "hacktoberfest"], "urls": [], "use_cases": ["detect terraform drift in aws infrastructure", "find cloud resources not managed by terraform", "measure infrastructure as code coverage", "alert when someone changes infra via the console", "track unmanaged resources across aws azure gcp", "audit infrastructure drift in ci pipeline"], "what_it_is": "driftctl is a free and open-source CLI that scans cloud providers (AWS, GitHub, Azure, GCP), maps resources against Terraform code, and detects infrastructure drift and unmanaged resources. It measures infrastructure-as-code coverage and warns about discrepancies between declared and actual infrastructure.", "when_to_avoid": ["you use OpenTofu/Pulumi/CloudFormation instead of Terraform", "you need actively developed features - the project is in maintenance mode", "you want continuous drift monitoring with a hosted dashboard rather than a CLI"], "when_to_choose": ["you use terraform and want to catch manual console changes", "you need a lightweight CLI to scan for drift and unmanaged resources", "you want IaC coverage metrics for AWS, GitHub, Azure, or GCP"]}, "data_as_of": "2026-08-30T08:39:29.467469+00:00", "members": [{"path": "/products/driftctl", "repo": "snyk/driftctl", "role": "main", "score": 66}], "provenance": {"archived": {"kind": "observed", "observed_at": "2026-08-28T04:07:07.453596+00:00", "source": "github"}, "artifact_type": {"confidence": null, "enriched_at": "2026-08-30T02:18:24.259070+00:00", "kind": "inferred", "prompt_version": 1, "sources": [{"content_hash": "ab2e29092eaa3db97919236750d61f8b819f08c80e2cff7c08a898353c814ba2", "fetched_at": "2026-08-28T04:07:07.453596+00:00", "kind": "readme", "missing": false, "url": "https://github.com/snyk/driftctl"}], "taxonomy_version": 1}, "description": {"kind": "observed", "observed_at": "2026-08-28T04:07:07.453596+00:00", "source": "github"}, "domain": {"confidence": null, "enriched_at": "2026-08-30T02:18:24.259070+00:00", "kind": "inferred", "prompt_version": 1, "sources": [{"content_hash": "ab2e29092eaa3db97919236750d61f8b819f08c80e2cff7c08a898353c814ba2", "fetched_at": "2026-08-28T04:07:07.453596+00:00", "kind": "readme", "missing": false, "url": "https://github.com/snyk/driftctl"}], "taxonomy_version": 1}, "enriched": {"inputs": [], "kind": "computed", "method": "enrichment_status"}, "function": {"confidence": null, "enriched_at": "2026-08-30T02:18:24.259070+00:00", "kind": "inferred", "prompt_version": 1, "sources": [{"content_hash": "ab2e29092eaa3db97919236750d61f8b819f08c80e2cff7c08a898353c814ba2", "fetched_at": "2026-08-28T04:07:07.453596+00:00", "kind": "readme", "missing": false, "url": "https://github.com/snyk/driftctl"}], "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:07:07.453596+00:00", "source": "github"}, "language": {"kind": "observed", "observed_at": "2026-08-28T04:07:07.453596+00:00", "source": "github"}, "license": {"kind": "observed", "observed_at": "2026-08-28T04:07:07.453596+00:00", "source": "github"}, "license_family": {"inputs": ["license"], "kind": "computed", "method": "license_family"}, "maturity": {"confidence": null, "enriched_at": "2026-08-30T02:18:24.259070+00:00", "kind": "inferred", "prompt_version": 1, "sources": [{"content_hash": "ab2e29092eaa3db97919236750d61f8b819f08c80e2cff7c08a898353c814ba2", "fetched_at": "2026-08-28T04:07:07.453596+00:00", "kind": "readme", "missing": false, "url": "https://github.com/snyk/driftctl"}], "taxonomy_version": 1}, "member_repos": {"kind": "observed", "observed_at": "2026-08-28T04:07:07.453596+00:00", "source": "github"}, "name": {"kind": "observed", "observed_at": "2026-08-28T04:07:07.453596+00:00", "source": "github"}, "platform": {"confidence": null, "enriched_at": "2026-08-30T02:18:24.259070+00:00", "kind": "inferred", "prompt_version": 1, "sources": [{"content_hash": "ab2e29092eaa3db97919236750d61f8b819f08c80e2cff7c08a898353c814ba2", "fetched_at": "2026-08-28T04:07:07.453596+00:00", "kind": "readme", "missing": false, "url": "https://github.com/snyk/driftctl"}], "taxonomy_version": 1}, "pushed_at": {"kind": "observed", "observed_at": "2026-08-28T04:07:07.453596+00:00", "source": "github"}, "repo": {"kind": "observed", "observed_at": "2026-08-28T04:07:07.453596+00:00", "source": "github"}, "stars": {"kind": "observed", "observed_at": "2026-08-28T04:07:07.453596+00:00", "source": "github"}, "tags": {"confidence": null, "enriched_at": "2026-08-30T02:18:24.259070+00:00", "kind": "inferred", "prompt_version": 1, "sources": [{"content_hash": "ab2e29092eaa3db97919236750d61f8b819f08c80e2cff7c08a898353c814ba2", "fetched_at": "2026-08-28T04:07:07.453596+00:00", "kind": "readme", "missing": false, "url": "https://github.com/snyk/driftctl"}], "taxonomy_version": 1}, "topics": {"kind": "observed", "observed_at": "2026-08-28T04:07:07.453596+00:00", "source": "github"}, "urls": {"kind": "observed", "observed_at": "2026-08-28T04:07:07.453596+00:00", "source": "github"}, "use_cases": {"confidence": null, "enriched_at": "2026-08-30T02:18:24.259070+00:00", "kind": "inferred", "prompt_version": 1, "sources": [{"content_hash": "ab2e29092eaa3db97919236750d61f8b819f08c80e2cff7c08a898353c814ba2", "fetched_at": "2026-08-28T04:07:07.453596+00:00", "kind": "readme", "missing": false, "url": "https://github.com/snyk/driftctl"}], "taxonomy_version": 1}, "what_it_is": {"confidence": null, "enriched_at": "2026-08-30T02:18:24.259070+00:00", "kind": "inferred", "prompt_version": 1, "sources": [{"content_hash": "ab2e29092eaa3db97919236750d61f8b819f08c80e2cff7c08a898353c814ba2", "fetched_at": "2026-08-28T04:07:07.453596+00:00", "kind": "readme", "missing": false, "url": "https://github.com/snyk/driftctl"}], "taxonomy_version": 1}, "when_to_avoid": {"confidence": null, "enriched_at": "2026-08-30T02:18:24.259070+00:00", "kind": "inferred", "prompt_version": 1, "sources": [{"content_hash": "ab2e29092eaa3db97919236750d61f8b819f08c80e2cff7c08a898353c814ba2", "fetched_at": "2026-08-28T04:07:07.453596+00:00", "kind": "readme", "missing": false, "url": "https://github.com/snyk/driftctl"}], "taxonomy_version": 1}, "when_to_choose": {"confidence": null, "enriched_at": "2026-08-30T02:18:24.259070+00:00", "kind": "inferred", "prompt_version": 1, "sources": [{"content_hash": "ab2e29092eaa3db97919236750d61f8b819f08c80e2cff7c08a898353c814ba2", "fetched_at": "2026-08-28T04:07:07.453596+00:00", "kind": "readme", "missing": false, "url": "https://github.com/snyk/driftctl"}], "taxonomy_version": 1}}, "score": {"components": {"activity": 95, "longevity": 100, "rhythm": 8}, "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": 2171, "days_push": 33, "days_rel": null, "gap_med": null, "n_releases_24m": 0}, "score": 66, "version": 2}, "staleness": {"enrichment_outdated": false, "low_confidence": false, "scrape_days": 9, "stale_scrape": false}}