{"adoption": {"forks": 344, "observed_at": "2026-08-28T04:08:38.677389+00:00", "stars": 4187}, "canonical_url": "https://ross.abutalabs.com/products/cml", "card": {"archived": false, "artifact_type": "cli-tool", "description": "♾️ CML - Continuous Machine Learning | CI/CD for ML", "domain": ["machine-learning", "data-science", "developer-tools"], "enriched": true, "function": ["ci-cd", "cli", "workflow-automation", "machine-learning", "data-visualization"], "health_score": 44, "homepage": "http://cml.dev", "language": "JavaScript", "license": "Apache-2.0", "license_family": "permissive", "maturity": "active", "member_repos": ["iterative/cml"], "name": "iterative/cml", "platform": ["cli", "cloud", "self-hosted"], "pushed_at": "2025-06-02T04:40:57+00:00", "repo": "iterative/cml", "stars": 4187, "tags": ["mlops", "github-actions", "gitlab-ci", "bitbucket-pipelines", "dvc", "continuous-integration", "continuous-delivery", "experiment-tracking", "iterative-ai", "reporting", "devops", "automation", "nodejs", "docker"], "topics": ["machine-learning", "data-science", "cicd", "ci-cd", "github-actions", "gitlab-ci", "developer-tools", "continuous-integration", "continuous-delivery", "ci", "bitbucket-pipelines", "hacktoberfest", "cli"], "urls": [], "use_cases": ["add ci/cd to machine learning projects", "auto-generate ml experiment reports on pull requests", "train and evaluate models in github actions or gitlab ci", "compare ml experiments across project history", "provision self-hosted or cloud runners for ml training", "monitor changing datasets in ci pipelines", "build an ml platform without extra services"], "what_it_is": "CML (Continuous Machine Learning) is an open-source CLI tool that brings CI/CD practices to machine learning projects on GitHub, GitLab, and Bitbucket. It automates model training and evaluation, provisions cloud or self-hosted runners, and posts visual reports with metrics and plots on every pull request.", "when_to_avoid": ["you need a full managed ML platform with UI-based experiment tracking", "your project is not hosted on GitHub, GitLab, or Bitbucket", "you don't use CI/CD workflows for your ML development"], "when_to_choose": ["you want MLOps automation using only your existing Git hosting platform", "you need automatic metrics and plot reports in pull requests", "you use DVC and want data and models in your CI pipeline", "you want to avoid running a separate ML platform service"]}, "data_as_of": "2026-08-30T08:39:29.467469+00:00", "members": [{"path": "/products/cml", "repo": "iterative/cml", "role": "main", "score": 45}], "provenance": {"archived": {"kind": "observed", "observed_at": "2026-08-28T04:08:38.677389+00:00", "source": "github"}, "artifact_type": {"confidence": null, "enriched_at": "2026-08-29T18:22:37.380127+00:00", "kind": "inferred", "prompt_version": 1, "sources": [{"content_hash": "0d59eb6a34c46093405777aef2c6130d440f53e7c7c8eac53e3ccbb55c5618c8", "fetched_at": "2026-08-28T04:08:38.677389+00:00", "kind": "readme", "missing": false, "url": "https://github.com/iterative/cml"}, {"content_hash": "a411e2b436bc24988338382fcfe15eb8d8eac4e00d1962b2e779ec5d1d193253", "fetched_at": "2026-08-29T09:13:24.488310+00:00", "kind": "homepage", "missing": false, "url": "http://cml.dev"}, {"content_hash": "7ea3430400c2849d6806d8605635c3a027aaccfac4321881bb67cfbf2f9f9741", "fetched_at": "2026-08-29T09:13:24.499368+00:00", "kind": "site_page", "missing": false, "url": "https://cml.dev/doc/install"}, {"content_hash": "3b1108ba7bd7890704e0df04f5ea1e496287d3f54662f9c47eb2e9ab3edd8bf5", "fetched_at": "2026-08-29T09:13:24.497644+00:00", "kind": "site_page", "missing": false, "url": "https://cml.dev/doc"}], "taxonomy_version": 1}, "description": {"kind": "observed", "observed_at": "2026-08-28T04:08:38.677389+00:00", "source": "github"}, "domain": {"confidence": null, "enriched_at": "2026-08-29T18:22:37.380127+00:00", "kind": "inferred", "prompt_version": 1, "sources": [{"content_hash": "0d59eb6a34c46093405777aef2c6130d440f53e7c7c8eac53e3ccbb55c5618c8", "fetched_at": "2026-08-28T04:08:38.677389+00:00", "kind": "readme", "missing": false, "url": "https://github.com/iterative/cml"}, {"content_hash": "a411e2b436bc24988338382fcfe15eb8d8eac4e00d1962b2e779ec5d1d193253", "fetched_at": "2026-08-29T09:13:24.488310+00:00", "kind": "homepage", "missing": false, "url": "http://cml.dev"}, {"content_hash": "7ea3430400c2849d6806d8605635c3a027aaccfac4321881bb67cfbf2f9f9741", "fetched_at": "2026-08-29T09:13:24.499368+00:00", "kind": "site_page", "missing": false, "url": "https://cml.dev/doc/install"}, {"content_hash": "3b1108ba7bd7890704e0df04f5ea1e496287d3f54662f9c47eb2e9ab3edd8bf5", "fetched_at": "2026-08-29T09:13:24.497644+00:00", "kind": "site_page", "missing": false, "url": "https://cml.dev/doc"}], "taxonomy_version": 1}, "enriched": {"inputs": [], "kind": "computed", "method": "enrichment_status"}, "function": {"confidence": null, "enriched_at": "2026-08-29T18:22:37.380127+00:00", "kind": "inferred", "prompt_version": 1, "sources": [{"content_hash": "0d59eb6a34c46093405777aef2c6130d440f53e7c7c8eac53e3ccbb55c5618c8", "fetched_at": "2026-08-28T04:08:38.677389+00:00", "kind": "readme", "missing": false, "url": "https://github.com/iterative/cml"}, {"content_hash": "a411e2b436bc24988338382fcfe15eb8d8eac4e00d1962b2e779ec5d1d193253", "fetched_at": "2026-08-29T09:13:24.488310+00:00", "kind": "homepage", "missing": false, "url": "http://cml.dev"}, {"content_hash": "7ea3430400c2849d6806d8605635c3a027aaccfac4321881bb67cfbf2f9f9741", "fetched_at": "2026-08-29T09:13:24.499368+00:00", "kind": "site_page", "missing": false, "url": "https://cml.dev/doc/install"}, {"content_hash": "3b1108ba7bd7890704e0df04f5ea1e496287d3f54662f9c47eb2e9ab3edd8bf5", "fetched_at": "2026-08-29T09:13:24.497644+00:00", "kind": "site_page", "missing": false, "url": "https://cml.dev/doc"}], "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:08:38.677389+00:00", "source": "github"}, "language": {"kind": "observed", "observed_at": "2026-08-28T04:08:38.677389+00:00", "source": "github"}, "license": {"kind": "observed", "observed_at": "2026-08-28T04:08:38.677389+00:00", "source": "github"}, "license_family": {"inputs": ["license"], "kind": "computed", "method": "license_family"}, "maturity": {"confidence": null, "enriched_at": "2026-08-29T18:22:37.380127+00:00", "kind": "inferred", "prompt_version": 1, "sources": [{"content_hash": "0d59eb6a34c46093405777aef2c6130d440f53e7c7c8eac53e3ccbb55c5618c8", "fetched_at": "2026-08-28T04:08:38.677389+00:00", "kind": "readme", "missing": false, "url": "https://github.com/iterative/cml"}, {"content_hash": "a411e2b436bc24988338382fcfe15eb8d8eac4e00d1962b2e779ec5d1d193253", "fetched_at": "2026-08-29T09:13:24.488310+00:00", "kind": "homepage", "missing": false, "url": "http://cml.dev"}, {"content_hash": "7ea3430400c2849d6806d8605635c3a027aaccfac4321881bb67cfbf2f9f9741", "fetched_at": "2026-08-29T09:13:24.499368+00:00", "kind": "site_page", "missing": false, "url": "https://cml.dev/doc/install"}, {"content_hash": "3b1108ba7bd7890704e0df04f5ea1e496287d3f54662f9c47eb2e9ab3edd8bf5", "fetched_at": "2026-08-29T09:13:24.497644+00:00", "kind": "site_page", "missing": false, "url": "https://cml.dev/doc"}], "taxonomy_version": 1}, "member_repos": {"kind": "observed", "observed_at": "2026-08-28T04:08:38.677389+00:00", "source": "github"}, "name": {"kind": "observed", "observed_at": "2026-08-28T04:08:38.677389+00:00", "source": "github"}, "platform": {"confidence": null, "enriched_at": "2026-08-29T18:22:37.380127+00:00", "kind": "inferred", "prompt_version": 1, "sources": [{"content_hash": "0d59eb6a34c46093405777aef2c6130d440f53e7c7c8eac53e3ccbb55c5618c8", "fetched_at": "2026-08-28T04:08:38.677389+00:00", "kind": "readme", "missing": false, "url": "https://github.com/iterative/cml"}, {"content_hash": "a411e2b436bc24988338382fcfe15eb8d8eac4e00d1962b2e779ec5d1d193253", "fetched_at": "2026-08-29T09:13:24.488310+00:00", "kind": "homepage", "missing": false, "url": "http://cml.dev"}, {"content_hash": "7ea3430400c2849d6806d8605635c3a027aaccfac4321881bb67cfbf2f9f9741", "fetched_at": "2026-08-29T09:13:24.499368+00:00", "kind": "site_page", "missing": false, "url": "https://cml.dev/doc/install"}, {"content_hash": "3b1108ba7bd7890704e0df04f5ea1e496287d3f54662f9c47eb2e9ab3edd8bf5", "fetched_at": "2026-08-29T09:13:24.497644+00:00", "kind": "site_page", "missing": false, "url": "https://cml.dev/doc"}], "taxonomy_version": 1}, "pushed_at": {"kind": "observed", "observed_at": "2026-08-28T04:08:38.677389+00:00", "source": "github"}, "repo": {"kind": "observed", "observed_at": "2026-08-28T04:08:38.677389+00:00", "source": "github"}, "stars": {"kind": "observed", "observed_at": "2026-08-28T04:08:38.677389+00:00", "source": "github"}, "tags": {"confidence": null, "enriched_at": "2026-08-29T18:22:37.380127+00:00", "kind": "inferred", "prompt_version": 1, "sources": [{"content_hash": "0d59eb6a34c46093405777aef2c6130d440f53e7c7c8eac53e3ccbb55c5618c8", "fetched_at": "2026-08-28T04:08:38.677389+00:00", "kind": "readme", "missing": false, "url": "https://github.com/iterative/cml"}, {"content_hash": "a411e2b436bc24988338382fcfe15eb8d8eac4e00d1962b2e779ec5d1d193253", "fetched_at": "2026-08-29T09:13:24.488310+00:00", "kind": "homepage", "missing": false, "url": "http://cml.dev"}, {"content_hash": "7ea3430400c2849d6806d8605635c3a027aaccfac4321881bb67cfbf2f9f9741", "fetched_at": "2026-08-29T09:13:24.499368+00:00", "kind": "site_page", "missing": false, "url": "https://cml.dev/doc/install"}, {"content_hash": "3b1108ba7bd7890704e0df04f5ea1e496287d3f54662f9c47eb2e9ab3edd8bf5", "fetched_at": "2026-08-29T09:13:24.497644+00:00", "kind": "site_page", "missing": false, "url": "https://cml.dev/doc"}], "taxonomy_version": 1}, "topics": {"kind": "observed", "observed_at": "2026-08-28T04:08:38.677389+00:00", "source": "github"}, "urls": {"kind": "observed", "observed_at": "2026-08-28T04:08:38.677389+00:00", "source": "github"}, "use_cases": {"confidence": null, "enriched_at": "2026-08-29T18:22:37.380127+00:00", "kind": "inferred", "prompt_version": 1, "sources": [{"content_hash": "0d59eb6a34c46093405777aef2c6130d440f53e7c7c8eac53e3ccbb55c5618c8", "fetched_at": "2026-08-28T04:08:38.677389+00:00", "kind": "readme", "missing": false, "url": "https://github.com/iterative/cml"}, {"content_hash": "a411e2b436bc24988338382fcfe15eb8d8eac4e00d1962b2e779ec5d1d193253", "fetched_at": "2026-08-29T09:13:24.488310+00:00", "kind": "homepage", "missing": false, "url": "http://cml.dev"}, {"content_hash": "7ea3430400c2849d6806d8605635c3a027aaccfac4321881bb67cfbf2f9f9741", "fetched_at": "2026-08-29T09:13:24.499368+00:00", "kind": "site_page", "missing": false, "url": "https://cml.dev/doc/install"}, {"content_hash": "3b1108ba7bd7890704e0df04f5ea1e496287d3f54662f9c47eb2e9ab3edd8bf5", "fetched_at": "2026-08-29T09:13:24.497644+00:00", "kind": "site_page", "missing": false, "url": "https://cml.dev/doc"}], "taxonomy_version": 1}, "what_it_is": {"confidence": null, "enriched_at": "2026-08-29T18:22:37.380127+00:00", "kind": "inferred", "prompt_version": 1, "sources": [{"content_hash": "0d59eb6a34c46093405777aef2c6130d440f53e7c7c8eac53e3ccbb55c5618c8", "fetched_at": "2026-08-28T04:08:38.677389+00:00", "kind": "readme", "missing": false, "url": "https://github.com/iterative/cml"}, {"content_hash": "a411e2b436bc24988338382fcfe15eb8d8eac4e00d1962b2e779ec5d1d193253", "fetched_at": "2026-08-29T09:13:24.488310+00:00", "kind": "homepage", "missing": false, "url": "http://cml.dev"}, {"content_hash": "7ea3430400c2849d6806d8605635c3a027aaccfac4321881bb67cfbf2f9f9741", "fetched_at": "2026-08-29T09:13:24.499368+00:00", "kind": "site_page", "missing": false, "url": "https://cml.dev/doc/install"}, {"content_hash": "3b1108ba7bd7890704e0df04f5ea1e496287d3f54662f9c47eb2e9ab3edd8bf5", "fetched_at": "2026-08-29T09:13:24.497644+00:00", "kind": "site_page", "missing": false, "url": "https://cml.dev/doc"}], "taxonomy_version": 1}, "when_to_avoid": {"confidence": null, "enriched_at": "2026-08-29T18:22:37.380127+00:00", "kind": "inferred", "prompt_version": 1, "sources": [{"content_hash": "0d59eb6a34c46093405777aef2c6130d440f53e7c7c8eac53e3ccbb55c5618c8", "fetched_at": "2026-08-28T04:08:38.677389+00:00", "kind": "readme", "missing": false, "url": "https://github.com/iterative/cml"}, {"content_hash": "a411e2b436bc24988338382fcfe15eb8d8eac4e00d1962b2e779ec5d1d193253", "fetched_at": "2026-08-29T09:13:24.488310+00:00", "kind": "homepage", "missing": false, "url": "http://cml.dev"}, {"content_hash": "7ea3430400c2849d6806d8605635c3a027aaccfac4321881bb67cfbf2f9f9741", "fetched_at": "2026-08-29T09:13:24.499368+00:00", "kind": "site_page", "missing": false, "url": "https://cml.dev/doc/install"}, {"content_hash": "3b1108ba7bd7890704e0df04f5ea1e496287d3f54662f9c47eb2e9ab3edd8bf5", "fetched_at": "2026-08-29T09:13:24.497644+00:00", "kind": "site_page", "missing": false, "url": "https://cml.dev/doc"}], "taxonomy_version": 1}, "when_to_choose": {"confidence": null, "enriched_at": "2026-08-29T18:22:37.380127+00:00", "kind": "inferred", "prompt_version": 1, "sources": [{"content_hash": "0d59eb6a34c46093405777aef2c6130d440f53e7c7c8eac53e3ccbb55c5618c8", "fetched_at": "2026-08-28T04:08:38.677389+00:00", "kind": "readme", "missing": false, "url": "https://github.com/iterative/cml"}, {"content_hash": "a411e2b436bc24988338382fcfe15eb8d8eac4e00d1962b2e779ec5d1d193253", "fetched_at": "2026-08-29T09:13:24.488310+00:00", "kind": "homepage", "missing": false, "url": "http://cml.dev"}, {"content_hash": "7ea3430400c2849d6806d8605635c3a027aaccfac4321881bb67cfbf2f9f9741", "fetched_at": "2026-08-29T09:13:24.499368+00:00", "kind": "site_page", "missing": false, "url": "https://cml.dev/doc/install"}, {"content_hash": "3b1108ba7bd7890704e0df04f5ea1e496287d3f54662f9c47eb2e9ab3edd8bf5", "fetched_at": "2026-08-29T09:13:24.497644+00:00", "kind": "site_page", "missing": false, "url": "https://cml.dev/doc"}], "taxonomy_version": 1}}, "score": {"components": {"activity": 24, "longevity": 100, "rhythm": 40}, "computed_at": "2026-09-02T17:46:02.011165+00:00", "flags": [], "formula": "round(0.45*activity + 0.35*rhythm + 0.20*longevity); archived -> min(score, 10)", "inputs": {"age_days": 2380, "days_push": 457, "days_rel": 678, "gap_med": 0, "n_releases_24m": 2}, "score": 45, "version": 2}, "staleness": {"enrichment_outdated": false, "low_confidence": false, "scrape_days": 9, "stale_scrape": false}}