{"adoption": {"forks": 238, "observed_at": "2026-08-28T04:08:57.464816+00:00", "stars": 4717}, "canonical_url": "https://ross.abutalabs.com/products/werf", "card": {"archived": false, "artifact_type": "cli-tool", "description": "A solution for implementing efficient and consistent software delivery to Kubernetes facilitating best practices.", "domain": ["cloud-computing", "infrastructure-as-code", "developer-tools"], "enriched": true, "function": ["deployment", "build-tool", "container-runtime", "ci-cd", "infrastructure-as-code", "developer-tools"], "health_score": 100, "homepage": "https://werf.io", "language": "Go", "license": "Apache-2.0", "license_family": "permissive", "maturity": "stable", "member_repos": ["werf/werf", "werf/nelm"], "name": "werf", "platform": ["windows", "cli", "cloud", "go"], "pushed_at": "2026-08-26T13:44:19+00:00", "repo": "werf/werf", "stars": 4717, "tags": ["kubernetes", "helm", "gitops", "dockerfile", "buildah", "giterminism", "container-registry", "cncf-sandbox", "continuous-delivery", "image-cleanup", "devops", "containers", "automation", "linux", "macos", "docker"], "topics": ["iac", "docker", "devops", "kubernetes", "continuous-integration", "continuous-delivery", "ci-cd", "docker-image", "werf", "gitops", "dockerfile", "giterminism", "buildah", "helm", "golang"], "urls": [{"kind": "homepage", "url": "https://werf.io"}, {"kind": "site_page", "url": "https://werf.io/docs/v2"}, {"kind": "site_page", "url": "https://werf.io/about/release_channels.html"}, {"kind": "site_page", "url": "https://werf.io/about/changelog.html"}], "use_cases": ["deploy applications to kubernetes from ci", "build and publish docker images in a ci pipeline", "gitops delivery to kubernetes", "clean up unused images in a container registry", "manage helm deployments with better resource tracking", "reproducible container image builds from git", "ci/cd for monorepo with multiple services", "implement infrastructure as code for kubernetes delivery"], "what_it_is": "werf is a CNCF Sandbox CLI tool that implements full-cycle CI/CD for Kubernetes, integrating with your CI system to build, publish, test, and deploy container images using Git, Dockerfile, Helm, and Buildah. It provides deterministic, reproducible delivery with features like content-based tagging, incremental builds, enhanced Helm resource tracking, and automated container registry cleanup.", "when_to_avoid": ["you deploy to non-Kubernetes targets like VMs or serverless platforms", "you already have a mature pipeline with separate tools (e.g., plain Docker + Helm + Argo CD) and don't want to migrate", "you need a GUI or dashboard-driven delivery platform rather than a CLI", "your team is unwilling to adopt werf.yaml configuration and the giterminism workflow"], "when_to_choose": ["you want an all-in-one build-and-deploy tool for Kubernetes that glues Git, Dockerfile, Helm, and Buildah", "you need deterministic, reproducible CI/CD with Git as the single source of truth (giterminism)", "you want automatic build caching, content-based tagging, and registry cleanup out of the box", "you deploy from a monorepo and need independent image tagging per component", "you want a production-proven tool (used since 2017) with CNCF Sandbox backing"]}, "data_as_of": "2026-08-30T08:39:29.467469+00:00", "members": [{"path": "/repos/werf/werf", "repo": "werf/werf", "role": "main", "score": 94}, {"path": "/repos/werf/nelm", "repo": "werf/nelm", "role": "backend", "score": 91}], "provenance": {"archived": {"kind": "observed", "observed_at": "2026-08-28T04:08:57.464816+00:00", "source": "github"}, "artifact_type": {"confidence": null, "enriched_at": "2026-08-29T18:19:06.850529+00:00", "kind": "inferred", "prompt_version": 1, "sources": [{"content_hash": "b244ddbc95a04c52790fcd58f40cfa7abe56b3ca1d70aa85dcc16a3b573b51ec", "fetched_at": "2026-08-28T04:08:57.464816+00:00", "kind": "readme", "missing": false, "url": "https://github.com/werf/werf"}, {"content_hash": "60b80c913536da4aba3e50b07f33cadbac8505b8dceb5be45f119c608dc2ecf7", "fetched_at": "2026-08-29T09:03:02.656517+00:00", "kind": "homepage", "missing": false, "url": "https://werf.io"}, {"content_hash": "9ee593c82373f8ae9b1e73c8d940ff47ebc43ea62d1f3bad98710823279be686", "fetched_at": "2026-08-29T09:03:02.667353+00:00", "kind": "site_page", "missing": false, "url": "https://werf.io/docs/v2"}, {"content_hash": "d124d4111b3dda71d72aa2d5c3f426df3a537439fbec22399ac273a15a7889ac", "fetched_at": "2026-08-29T09:03:02.669705+00:00", "kind": "site_page", "missing": false, "url": "https://werf.io/about/release_channels.html"}, {"content_hash": "a3a16db55cd4c04a2fb6a3c22531ec4c2c338142e72a4334e434657ad10a92b3", "fetched_at": "2026-08-29T09:03:02.671752+00:00", "kind": "site_page", "missing": false, "url": "https://werf.io/about/changelog.html"}], "taxonomy_version": 1}, "description": {"kind": "observed", "observed_at": "2026-08-28T04:08:57.464816+00:00", "source": "github"}, "domain": {"confidence": null, "enriched_at": "2026-08-29T18:19:06.850529+00:00", "kind": "inferred", "prompt_version": 1, "sources": [{"content_hash": "b244ddbc95a04c52790fcd58f40cfa7abe56b3ca1d70aa85dcc16a3b573b51ec", "fetched_at": "2026-08-28T04:08:57.464816+00:00", "kind": "readme", "missing": false, "url": "https://github.com/werf/werf"}, {"content_hash": "60b80c913536da4aba3e50b07f33cadbac8505b8dceb5be45f119c608dc2ecf7", "fetched_at": "2026-08-29T09:03:02.656517+00:00", "kind": "homepage", "missing": false, "url": "https://werf.io"}, {"content_hash": "9ee593c82373f8ae9b1e73c8d940ff47ebc43ea62d1f3bad98710823279be686", "fetched_at": "2026-08-29T09:03:02.667353+00:00", "kind": "site_page", "missing": false, "url": "https://werf.io/docs/v2"}, {"content_hash": "d124d4111b3dda71d72aa2d5c3f426df3a537439fbec22399ac273a15a7889ac", "fetched_at": "2026-08-29T09:03:02.669705+00:00", "kind": "site_page", "missing": false, "url": "https://werf.io/about/release_channels.html"}, {"content_hash": "a3a16db55cd4c04a2fb6a3c22531ec4c2c338142e72a4334e434657ad10a92b3", "fetched_at": "2026-08-29T09:03:02.671752+00:00", "kind": "site_page", "missing": false, "url": "https://werf.io/about/changelog.html"}], "taxonomy_version": 1}, "enriched": {"inputs": [], "kind": "computed", "method": "enrichment_status"}, "function": {"confidence": null, "enriched_at": "2026-08-29T18:19:06.850529+00:00", "kind": "inferred", "prompt_version": 1, "sources": [{"content_hash": "b244ddbc95a04c52790fcd58f40cfa7abe56b3ca1d70aa85dcc16a3b573b51ec", "fetched_at": "2026-08-28T04:08:57.464816+00:00", "kind": "readme", "missing": false, "url": "https://github.com/werf/werf"}, {"content_hash": "60b80c913536da4aba3e50b07f33cadbac8505b8dceb5be45f119c608dc2ecf7", "fetched_at": "2026-08-29T09:03:02.656517+00:00", "kind": "homepage", "missing": false, "url": "https://werf.io"}, {"content_hash": "9ee593c82373f8ae9b1e73c8d940ff47ebc43ea62d1f3bad98710823279be686", "fetched_at": "2026-08-29T09:03:02.667353+00:00", "kind": "site_page", "missing": false, "url": "https://werf.io/docs/v2"}, {"content_hash": "d124d4111b3dda71d72aa2d5c3f426df3a537439fbec22399ac273a15a7889ac", "fetched_at": "2026-08-29T09:03:02.669705+00:00", "kind": "site_page", "missing": false, "url": "https://werf.io/about/release_channels.html"}, {"content_hash": "a3a16db55cd4c04a2fb6a3c22531ec4c2c338142e72a4334e434657ad10a92b3", "fetched_at": "2026-08-29T09:03:02.671752+00:00", "kind": "site_page", "missing": false, "url": "https://werf.io/about/changelog.html"}], "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:57.464816+00:00", "source": "github"}, "language": {"kind": "observed", "observed_at": "2026-08-28T04:08:57.464816+00:00", "source": "github"}, "license": {"kind": "observed", "observed_at": "2026-08-28T04:08:57.464816+00:00", "source": "github"}, "license_family": {"inputs": ["license"], "kind": "computed", "method": "license_family"}, "maturity": {"confidence": null, "enriched_at": "2026-08-29T18:19:06.850529+00:00", "kind": "inferred", "prompt_version": 1, "sources": [{"content_hash": "b244ddbc95a04c52790fcd58f40cfa7abe56b3ca1d70aa85dcc16a3b573b51ec", "fetched_at": "2026-08-28T04:08:57.464816+00:00", "kind": "readme", "missing": false, "url": "https://github.com/werf/werf"}, {"content_hash": "60b80c913536da4aba3e50b07f33cadbac8505b8dceb5be45f119c608dc2ecf7", "fetched_at": "2026-08-29T09:03:02.656517+00:00", "kind": "homepage", "missing": false, "url": "https://werf.io"}, {"content_hash": "9ee593c82373f8ae9b1e73c8d940ff47ebc43ea62d1f3bad98710823279be686", "fetched_at": "2026-08-29T09:03:02.667353+00:00", "kind": "site_page", "missing": false, "url": "https://werf.io/docs/v2"}, {"content_hash": "d124d4111b3dda71d72aa2d5c3f426df3a537439fbec22399ac273a15a7889ac", "fetched_at": "2026-08-29T09:03:02.669705+00:00", "kind": "site_page", "missing": false, "url": "https://werf.io/about/release_channels.html"}, {"content_hash": "a3a16db55cd4c04a2fb6a3c22531ec4c2c338142e72a4334e434657ad10a92b3", "fetched_at": "2026-08-29T09:03:02.671752+00:00", "kind": "site_page", "missing": false, "url": "https://werf.io/about/changelog.html"}], "taxonomy_version": 1}, "member_repos": {"kind": "observed", "observed_at": "2026-08-28T04:08:57.464816+00:00", "source": "github"}, "name": {"kind": "observed", "observed_at": "2026-08-28T04:08:57.464816+00:00", "source": "github"}, "platform": {"confidence": null, "enriched_at": "2026-08-29T18:19:06.850529+00:00", "kind": "inferred", "prompt_version": 1, "sources": [{"content_hash": "b244ddbc95a04c52790fcd58f40cfa7abe56b3ca1d70aa85dcc16a3b573b51ec", "fetched_at": "2026-08-28T04:08:57.464816+00:00", "kind": "readme", "missing": false, "url": "https://github.com/werf/werf"}, {"content_hash": "60b80c913536da4aba3e50b07f33cadbac8505b8dceb5be45f119c608dc2ecf7", "fetched_at": "2026-08-29T09:03:02.656517+00:00", "kind": "homepage", "missing": false, "url": "https://werf.io"}, {"content_hash": "9ee593c82373f8ae9b1e73c8d940ff47ebc43ea62d1f3bad98710823279be686", "fetched_at": "2026-08-29T09:03:02.667353+00:00", "kind": "site_page", "missing": false, "url": "https://werf.io/docs/v2"}, {"content_hash": "d124d4111b3dda71d72aa2d5c3f426df3a537439fbec22399ac273a15a7889ac", "fetched_at": "2026-08-29T09:03:02.669705+00:00", "kind": "site_page", "missing": false, "url": "https://werf.io/about/release_channels.html"}, {"content_hash": "a3a16db55cd4c04a2fb6a3c22531ec4c2c338142e72a4334e434657ad10a92b3", "fetched_at": "2026-08-29T09:03:02.671752+00:00", "kind": "site_page", "missing": false, "url": "https://werf.io/about/changelog.html"}], "taxonomy_version": 1}, "pushed_at": {"kind": "observed", "observed_at": "2026-08-28T04:08:57.464816+00:00", "source": "github"}, "repo": {"kind": "observed", "observed_at": "2026-08-28T04:08:57.464816+00:00", "source": "github"}, "stars": {"kind": "observed", "observed_at": "2026-08-28T04:08:57.464816+00:00", "source": "github"}, "tags": {"confidence": null, "enriched_at": "2026-08-29T18:19:06.850529+00:00", "kind": "inferred", "prompt_version": 1, "sources": [{"content_hash": "b244ddbc95a04c52790fcd58f40cfa7abe56b3ca1d70aa85dcc16a3b573b51ec", "fetched_at": "2026-08-28T04:08:57.464816+00:00", "kind": "readme", "missing": false, "url": "https://github.com/werf/werf"}, {"content_hash": "60b80c913536da4aba3e50b07f33cadbac8505b8dceb5be45f119c608dc2ecf7", "fetched_at": "2026-08-29T09:03:02.656517+00:00", "kind": "homepage", "missing": false, "url": "https://werf.io"}, {"content_hash": "9ee593c82373f8ae9b1e73c8d940ff47ebc43ea62d1f3bad98710823279be686", "fetched_at": "2026-08-29T09:03:02.667353+00:00", "kind": "site_page", "missing": false, "url": "https://werf.io/docs/v2"}, {"content_hash": "d124d4111b3dda71d72aa2d5c3f426df3a537439fbec22399ac273a15a7889ac", "fetched_at": "2026-08-29T09:03:02.669705+00:00", "kind": "site_page", "missing": false, "url": "https://werf.io/about/release_channels.html"}, {"content_hash": "a3a16db55cd4c04a2fb6a3c22531ec4c2c338142e72a4334e434657ad10a92b3", "fetched_at": "2026-08-29T09:03:02.671752+00:00", "kind": "site_page", "missing": false, "url": "https://werf.io/about/changelog.html"}], "taxonomy_version": 1}, "topics": {"kind": "observed", "observed_at": "2026-08-28T04:08:57.464816+00:00", "source": "github"}, "urls": {"kind": "observed", "observed_at": "2026-08-28T04:08:57.464816+00:00", "source": "github"}, "use_cases": {"confidence": null, "enriched_at": "2026-08-29T18:19:06.850529+00:00", "kind": "inferred", "prompt_version": 1, "sources": [{"content_hash": "b244ddbc95a04c52790fcd58f40cfa7abe56b3ca1d70aa85dcc16a3b573b51ec", "fetched_at": "2026-08-28T04:08:57.464816+00:00", "kind": "readme", "missing": false, "url": "https://github.com/werf/werf"}, {"content_hash": "60b80c913536da4aba3e50b07f33cadbac8505b8dceb5be45f119c608dc2ecf7", "fetched_at": "2026-08-29T09:03:02.656517+00:00", "kind": "homepage", "missing": false, "url": "https://werf.io"}, {"content_hash": "9ee593c82373f8ae9b1e73c8d940ff47ebc43ea62d1f3bad98710823279be686", "fetched_at": "2026-08-29T09:03:02.667353+00:00", "kind": "site_page", "missing": false, "url": "https://werf.io/docs/v2"}, {"content_hash": "d124d4111b3dda71d72aa2d5c3f426df3a537439fbec22399ac273a15a7889ac", "fetched_at": "2026-08-29T09:03:02.669705+00:00", "kind": "site_page", "missing": false, "url": "https://werf.io/about/release_channels.html"}, {"content_hash": "a3a16db55cd4c04a2fb6a3c22531ec4c2c338142e72a4334e434657ad10a92b3", "fetched_at": "2026-08-29T09:03:02.671752+00:00", "kind": "site_page", "missing": false, "url": "https://werf.io/about/changelog.html"}], "taxonomy_version": 1}, "what_it_is": {"confidence": null, "enriched_at": "2026-08-29T18:19:06.850529+00:00", "kind": "inferred", "prompt_version": 1, "sources": [{"content_hash": "b244ddbc95a04c52790fcd58f40cfa7abe56b3ca1d70aa85dcc16a3b573b51ec", "fetched_at": "2026-08-28T04:08:57.464816+00:00", "kind": "readme", "missing": false, "url": "https://github.com/werf/werf"}, {"content_hash": "60b80c913536da4aba3e50b07f33cadbac8505b8dceb5be45f119c608dc2ecf7", "fetched_at": "2026-08-29T09:03:02.656517+00:00", "kind": "homepage", "missing": false, "url": "https://werf.io"}, {"content_hash": "9ee593c82373f8ae9b1e73c8d940ff47ebc43ea62d1f3bad98710823279be686", "fetched_at": "2026-08-29T09:03:02.667353+00:00", "kind": "site_page", "missing": false, "url": "https://werf.io/docs/v2"}, {"content_hash": "d124d4111b3dda71d72aa2d5c3f426df3a537439fbec22399ac273a15a7889ac", "fetched_at": "2026-08-29T09:03:02.669705+00:00", "kind": "site_page", "missing": false, "url": "https://werf.io/about/release_channels.html"}, {"content_hash": "a3a16db55cd4c04a2fb6a3c22531ec4c2c338142e72a4334e434657ad10a92b3", "fetched_at": "2026-08-29T09:03:02.671752+00:00", "kind": "site_page", "missing": false, "url": "https://werf.io/about/changelog.html"}], "taxonomy_version": 1}, "when_to_avoid": {"confidence": null, "enriched_at": "2026-08-29T18:19:06.850529+00:00", "kind": "inferred", "prompt_version": 1, "sources": [{"content_hash": "b244ddbc95a04c52790fcd58f40cfa7abe56b3ca1d70aa85dcc16a3b573b51ec", "fetched_at": "2026-08-28T04:08:57.464816+00:00", "kind": "readme", "missing": false, "url": "https://github.com/werf/werf"}, {"content_hash": "60b80c913536da4aba3e50b07f33cadbac8505b8dceb5be45f119c608dc2ecf7", "fetched_at": "2026-08-29T09:03:02.656517+00:00", "kind": "homepage", "missing": false, "url": "https://werf.io"}, {"content_hash": "9ee593c82373f8ae9b1e73c8d940ff47ebc43ea62d1f3bad98710823279be686", "fetched_at": "2026-08-29T09:03:02.667353+00:00", "kind": "site_page", "missing": false, "url": "https://werf.io/docs/v2"}, {"content_hash": "d124d4111b3dda71d72aa2d5c3f426df3a537439fbec22399ac273a15a7889ac", "fetched_at": "2026-08-29T09:03:02.669705+00:00", "kind": "site_page", "missing": false, "url": "https://werf.io/about/release_channels.html"}, {"content_hash": "a3a16db55cd4c04a2fb6a3c22531ec4c2c338142e72a4334e434657ad10a92b3", "fetched_at": "2026-08-29T09:03:02.671752+00:00", "kind": "site_page", "missing": false, "url": "https://werf.io/about/changelog.html"}], "taxonomy_version": 1}, "when_to_choose": {"confidence": null, "enriched_at": "2026-08-29T18:19:06.850529+00:00", "kind": "inferred", "prompt_version": 1, "sources": [{"content_hash": "b244ddbc95a04c52790fcd58f40cfa7abe56b3ca1d70aa85dcc16a3b573b51ec", "fetched_at": "2026-08-28T04:08:57.464816+00:00", "kind": "readme", "missing": false, "url": "https://github.com/werf/werf"}, {"content_hash": "60b80c913536da4aba3e50b07f33cadbac8505b8dceb5be45f119c608dc2ecf7", "fetched_at": "2026-08-29T09:03:02.656517+00:00", "kind": "homepage", "missing": false, "url": "https://werf.io"}, {"content_hash": "9ee593c82373f8ae9b1e73c8d940ff47ebc43ea62d1f3bad98710823279be686", "fetched_at": "2026-08-29T09:03:02.667353+00:00", "kind": "site_page", "missing": false, "url": "https://werf.io/docs/v2"}, {"content_hash": "d124d4111b3dda71d72aa2d5c3f426df3a537439fbec22399ac273a15a7889ac", "fetched_at": "2026-08-29T09:03:02.669705+00:00", "kind": "site_page", "missing": false, "url": "https://werf.io/about/release_channels.html"}, {"content_hash": "a3a16db55cd4c04a2fb6a3c22531ec4c2c338142e72a4334e434657ad10a92b3", "fetched_at": "2026-08-29T09:03:02.671752+00:00", "kind": "site_page", "missing": false, "url": "https://werf.io/about/changelog.html"}], "taxonomy_version": 1}}, "score": {"components": {"activity": 99, "longevity": 100, "rhythm": 85}, "computed_at": "2026-09-03T02:39:23.370411+00:00", "flags": [], "formula": "round(0.45*activity + 0.35*rhythm + 0.20*longevity); archived -> min(score, 10)", "inputs": {"age_days": 3873, "days_push": 7, "days_rel": 22, "gap_med": 2.0, "n_releases_24m": 187}, "score": 94, "version": 2}, "staleness": {"enrichment_outdated": false, "low_confidence": false, "scrape_days": 9, "stale_scrape": false}}