{"adoption": {"forks": 1434, "observed_at": "2026-08-28T04:11:34.318031+00:00", "stars": 23037}, "canonical_url": "https://ross.abutalabs.com/products/distroless", "card": {"archived": false, "artifact_type": "infra-config", "description": "🥑  Language focused docker images, minus the operating system.  ", "domain": ["security", "cloud-computing"], "enriched": true, "function": ["container-runtime", "security", "deployment", "developer-tools"], "health_score": 80, "homepage": null, "language": "Starlark", "license": "Apache-2.0", "license_family": "permissive", "maturity": "active", "member_repos": ["GoogleContainerTools/distroless"], "name": "GoogleContainerTools/distroless", "platform": ["cloud"], "pushed_at": "2026-08-26T22:37:39+00:00", "repo": "GoogleContainerTools/distroless", "stars": 23037, "tags": ["container-images", "distroless", "minimal-images", "bazel", "debian", "base-images", "supply-chain-security", "containers", "devops", "docker", "linux", "kubernetes"], "topics": ["docker", "bazel"], "urls": [], "use_cases": ["build minimal docker images for my app", "reduce container image size and CVE surface", "run containers without a shell for hardening", "find a small base image for a Go or Java microservice", "create nonroot container images for kubernetes", "improve container scanner signal-to-noise", "build secure production container images"], "what_it_is": "Distroless is a set of minimal Docker base images published by Google that contain only an application's runtime dependencies, with no package managers, shells, or other OS tooling. Images are built with Bazel and published for multiple language runtimes (static, cc, java, python, nodejs, etc.) across Debian releases and many CPU architectures.", "when_to_avoid": ["you need a shell, package manager, or debugging tools inside the running container (debug tags only partially help)", "your app depends on distro packages or glibc variants not covered by the provided images", "you need Alpine musl-based images or non-Debian distros"], "when_to_choose": ["you want the smallest, most hardened runtime image for a compiled or interpreted app", "you run containers in production and want to minimize attack surface and CVE noise", "you need multi-architecture, regularly updated Debian-based base images", "you build images with Bazel or can use static binaries"]}, "data_as_of": "2026-08-30T08:39:29.467469+00:00", "members": [{"path": "/products/distroless", "repo": "GoogleContainerTools/distroless", "role": "main", "score": 77}], "provenance": {"archived": {"kind": "observed", "observed_at": "2026-08-28T04:11:34.318031+00:00", "source": "github"}, "artifact_type": {"confidence": null, "enriched_at": "2026-08-29T16:56:49.253679+00:00", "kind": "inferred", "prompt_version": 1, "sources": [{"content_hash": "302509355422c9b946460e3a1251da619ba39e421726595011d37241e629dd55", "fetched_at": "2026-08-28T04:11:34.318031+00:00", "kind": "readme", "missing": false, "url": "https://github.com/GoogleContainerTools/distroless"}], "taxonomy_version": 1}, "description": {"kind": "observed", "observed_at": "2026-08-28T04:11:34.318031+00:00", "source": "github"}, "domain": {"confidence": null, "enriched_at": "2026-08-29T16:56:49.253679+00:00", "kind": "inferred", "prompt_version": 1, "sources": [{"content_hash": "302509355422c9b946460e3a1251da619ba39e421726595011d37241e629dd55", "fetched_at": "2026-08-28T04:11:34.318031+00:00", "kind": "readme", "missing": false, "url": "https://github.com/GoogleContainerTools/distroless"}], "taxonomy_version": 1}, "enriched": {"inputs": [], "kind": "computed", "method": "enrichment_status"}, "function": {"confidence": null, "enriched_at": "2026-08-29T16:56:49.253679+00:00", "kind": "inferred", "prompt_version": 1, "sources": [{"content_hash": "302509355422c9b946460e3a1251da619ba39e421726595011d37241e629dd55", "fetched_at": "2026-08-28T04:11:34.318031+00:00", "kind": "readme", "missing": false, "url": "https://github.com/GoogleContainerTools/distroless"}], "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:11:34.318031+00:00", "source": "github"}, "language": {"kind": "observed", "observed_at": "2026-08-28T04:11:34.318031+00:00", "source": "github"}, "license": {"kind": "observed", "observed_at": "2026-08-28T04:11:34.318031+00:00", "source": "github"}, "license_family": {"inputs": ["license"], "kind": "computed", "method": "license_family"}, "maturity": {"confidence": null, "enriched_at": "2026-08-29T16:56:49.253679+00:00", "kind": "inferred", "prompt_version": 1, "sources": [{"content_hash": "302509355422c9b946460e3a1251da619ba39e421726595011d37241e629dd55", "fetched_at": "2026-08-28T04:11:34.318031+00:00", "kind": "readme", "missing": false, "url": "https://github.com/GoogleContainerTools/distroless"}], "taxonomy_version": 1}, "member_repos": {"kind": "observed", "observed_at": "2026-08-28T04:11:34.318031+00:00", "source": "github"}, "name": {"kind": "observed", "observed_at": "2026-08-28T04:11:34.318031+00:00", "source": "github"}, "platform": {"confidence": null, "enriched_at": "2026-08-29T16:56:49.253679+00:00", "kind": "inferred", "prompt_version": 1, "sources": [{"content_hash": "302509355422c9b946460e3a1251da619ba39e421726595011d37241e629dd55", "fetched_at": "2026-08-28T04:11:34.318031+00:00", "kind": "readme", "missing": false, "url": "https://github.com/GoogleContainerTools/distroless"}], "taxonomy_version": 1}, "pushed_at": {"kind": "observed", "observed_at": "2026-08-28T04:11:34.318031+00:00", "source": "github"}, "repo": {"kind": "observed", "observed_at": "2026-08-28T04:11:34.318031+00:00", "source": "github"}, "stars": {"kind": "observed", "observed_at": "2026-08-28T04:11:34.318031+00:00", "source": "github"}, "tags": {"confidence": null, "enriched_at": "2026-08-29T16:56:49.253679+00:00", "kind": "inferred", "prompt_version": 1, "sources": [{"content_hash": "302509355422c9b946460e3a1251da619ba39e421726595011d37241e629dd55", "fetched_at": "2026-08-28T04:11:34.318031+00:00", "kind": "readme", "missing": false, "url": "https://github.com/GoogleContainerTools/distroless"}], "taxonomy_version": 1}, "topics": {"kind": "observed", "observed_at": "2026-08-28T04:11:34.318031+00:00", "source": "github"}, "urls": {"kind": "observed", "observed_at": "2026-08-28T04:11:34.318031+00:00", "source": "github"}, "use_cases": {"confidence": null, "enriched_at": "2026-08-29T16:56:49.253679+00:00", "kind": "inferred", "prompt_version": 1, "sources": [{"content_hash": "302509355422c9b946460e3a1251da619ba39e421726595011d37241e629dd55", "fetched_at": "2026-08-28T04:11:34.318031+00:00", "kind": "readme", "missing": false, "url": "https://github.com/GoogleContainerTools/distroless"}], "taxonomy_version": 1}, "what_it_is": {"confidence": null, "enriched_at": "2026-08-29T16:56:49.253679+00:00", "kind": "inferred", "prompt_version": 1, "sources": [{"content_hash": "302509355422c9b946460e3a1251da619ba39e421726595011d37241e629dd55", "fetched_at": "2026-08-28T04:11:34.318031+00:00", "kind": "readme", "missing": false, "url": "https://github.com/GoogleContainerTools/distroless"}], "taxonomy_version": 1}, "when_to_avoid": {"confidence": null, "enriched_at": "2026-08-29T16:56:49.253679+00:00", "kind": "inferred", "prompt_version": 1, "sources": [{"content_hash": "302509355422c9b946460e3a1251da619ba39e421726595011d37241e629dd55", "fetched_at": "2026-08-28T04:11:34.318031+00:00", "kind": "readme", "missing": false, "url": "https://github.com/GoogleContainerTools/distroless"}], "taxonomy_version": 1}, "when_to_choose": {"confidence": null, "enriched_at": "2026-08-29T16:56:49.253679+00:00", "kind": "inferred", "prompt_version": 1, "sources": [{"content_hash": "302509355422c9b946460e3a1251da619ba39e421726595011d37241e629dd55", "fetched_at": "2026-08-28T04:11:34.318031+00:00", "kind": "readme", "missing": false, "url": "https://github.com/GoogleContainerTools/distroless"}], "taxonomy_version": 1}}, "score": {"components": {"activity": 99, "longevity": 100, "rhythm": 35}, "computed_at": "2026-09-03T02:20:16.233290+00:00", "flags": ["no_releases"], "formula": "round(0.45*activity + 0.35*rhythm + 0.20*longevity); archived -> min(score, 10)", "inputs": {"age_days": 3424, "days_push": 7, "days_rel": null, "gap_med": null, "n_releases_24m": 0}, "score": 77, "version": 2}, "staleness": {"enrichment_outdated": false, "low_confidence": false, "scrape_days": 9, "stale_scrape": false}}