{"adoption": {"forks": 109, "observed_at": "2026-08-28T04:03:17.527772+00:00", "stars": 1028}, "canonical_url": "https://ross.abutalabs.com/products/trow", "card": {"archived": false, "artifact_type": "service", "description": "Container Registry and Image Management for Kubernetes Clusters", "domain": ["cloud-computing", "self-hosted", "infrastructure-as-code"], "enriched": true, "function": ["container-runtime", "http-server", "security", "caching", "self-hosted"], "health_score": 88, "homepage": "http://trow.io/", "language": "Rust", "license": "Apache-2.0", "license_family": "permissive", "maturity": "active", "member_repos": ["Trow-Registry/trow"], "name": "Trow-Registry/trow", "platform": ["rust", "cloud", "self-hosted"], "pushed_at": "2026-08-01T05:44:13+00:00", "repo": "Trow-Registry/trow", "stars": 1028, "tags": ["container-registry", "oci-distribution", "image-cache", "kubernetes", "admission-webhook", "helm-chart", "pull-through-cache", "containers", "devops", "docker", "linux"], "topics": ["docker", "kubernetes", "rust", "oci-distribution", "registry", "containers", "container-registry", "docker-registry-cache"], "urls": [], "use_cases": ["run a self-hosted container registry inside my kubernetes cluster", "cache docker images locally to speed up pulls and avoid rate limits", "restrict which container images are allowed to run in the cluster", "proxy and cache images from external registries like docker hub", "set up a lightweight private registry with a helm chart", "prevent unauthorized images from being deployed to kubernetes"], "what_it_is": "Trow is a lightweight OCI-compliant container image registry written in Rust that runs inside a Kubernetes cluster. It caches external images locally and enforces approve/deny lists via an admission webhook to control which images can run in the cluster.", "when_to_avoid": ["you need high availability or distributed registry architecture (still on the roadmap)", "you require full auditing and authentication of image access (planned, not implemented)", "you need a general-purpose registry outside Kubernetes with mature enterprise features"], "when_to_choose": ["you run Kubernetes and want a small in-cluster registry with pull-through caching", "you need to lock down cluster images with allow/deny admission control", "you want a simple, low-resource OCI registry without running a heavyweight solution like Harbor"]}, "data_as_of": "2026-08-30T08:39:29.467469+00:00", "members": [{"path": "/products/trow", "repo": "Trow-Registry/trow", "role": "main", "score": 77}], "provenance": {"archived": {"kind": "observed", "observed_at": "2026-08-28T04:03:17.527772+00:00", "source": "github"}, "artifact_type": {"confidence": null, "enriched_at": "2026-08-30T07:07:43.368082+00:00", "kind": "inferred", "prompt_version": 1, "sources": [{"content_hash": "a3f960c57eb6578beab95fd1251efe90fe72b9ebb331082e12739b056c1cf919", "fetched_at": "2026-08-28T04:03:17.527772+00:00", "kind": "readme", "missing": false, "url": "https://github.com/Trow-Registry/trow"}, {"content_hash": "1fd135d8fcb694b459af22ef45ea455ca5423a9c5dae11b8c347e66824961963", "fetched_at": "2026-08-29T13:07:31.916248+00:00", "kind": "homepage", "missing": false, "url": "http://trow.io/"}], "taxonomy_version": 1}, "description": {"kind": "observed", "observed_at": "2026-08-28T04:03:17.527772+00:00", "source": "github"}, "domain": {"confidence": null, "enriched_at": "2026-08-30T07:07:43.368082+00:00", "kind": "inferred", "prompt_version": 1, "sources": [{"content_hash": "a3f960c57eb6578beab95fd1251efe90fe72b9ebb331082e12739b056c1cf919", "fetched_at": "2026-08-28T04:03:17.527772+00:00", "kind": "readme", "missing": false, "url": "https://github.com/Trow-Registry/trow"}, {"content_hash": "1fd135d8fcb694b459af22ef45ea455ca5423a9c5dae11b8c347e66824961963", "fetched_at": "2026-08-29T13:07:31.916248+00:00", "kind": "homepage", "missing": false, "url": "http://trow.io/"}], "taxonomy_version": 1}, "enriched": {"inputs": [], "kind": "computed", "method": "enrichment_status"}, "function": {"confidence": null, "enriched_at": "2026-08-30T07:07:43.368082+00:00", "kind": "inferred", "prompt_version": 1, "sources": [{"content_hash": "a3f960c57eb6578beab95fd1251efe90fe72b9ebb331082e12739b056c1cf919", "fetched_at": "2026-08-28T04:03:17.527772+00:00", "kind": "readme", "missing": false, "url": "https://github.com/Trow-Registry/trow"}, {"content_hash": "1fd135d8fcb694b459af22ef45ea455ca5423a9c5dae11b8c347e66824961963", "fetched_at": "2026-08-29T13:07:31.916248+00:00", "kind": "homepage", "missing": false, "url": "http://trow.io/"}], "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:03:17.527772+00:00", "source": "github"}, "language": {"kind": "observed", "observed_at": "2026-08-28T04:03:17.527772+00:00", "source": "github"}, "license": {"kind": "observed", "observed_at": "2026-08-28T04:03:17.527772+00:00", "source": "github"}, "license_family": {"inputs": ["license"], "kind": "computed", "method": "license_family"}, "maturity": {"confidence": null, "enriched_at": "2026-08-30T07:07:43.368082+00:00", "kind": "inferred", "prompt_version": 1, "sources": [{"content_hash": "a3f960c57eb6578beab95fd1251efe90fe72b9ebb331082e12739b056c1cf919", "fetched_at": "2026-08-28T04:03:17.527772+00:00", "kind": "readme", "missing": false, "url": "https://github.com/Trow-Registry/trow"}, {"content_hash": "1fd135d8fcb694b459af22ef45ea455ca5423a9c5dae11b8c347e66824961963", "fetched_at": "2026-08-29T13:07:31.916248+00:00", "kind": "homepage", "missing": false, "url": "http://trow.io/"}], "taxonomy_version": 1}, "member_repos": {"kind": "observed", "observed_at": "2026-08-28T04:03:17.527772+00:00", "source": "github"}, "name": {"kind": "observed", "observed_at": "2026-08-28T04:03:17.527772+00:00", "source": "github"}, "platform": {"confidence": null, "enriched_at": "2026-08-30T07:07:43.368082+00:00", "kind": "inferred", "prompt_version": 1, "sources": [{"content_hash": "a3f960c57eb6578beab95fd1251efe90fe72b9ebb331082e12739b056c1cf919", "fetched_at": "2026-08-28T04:03:17.527772+00:00", "kind": "readme", "missing": false, "url": "https://github.com/Trow-Registry/trow"}, {"content_hash": "1fd135d8fcb694b459af22ef45ea455ca5423a9c5dae11b8c347e66824961963", "fetched_at": "2026-08-29T13:07:31.916248+00:00", "kind": "homepage", "missing": false, "url": "http://trow.io/"}], "taxonomy_version": 1}, "pushed_at": {"kind": "observed", "observed_at": "2026-08-28T04:03:17.527772+00:00", "source": "github"}, "repo": {"kind": "observed", "observed_at": "2026-08-28T04:03:17.527772+00:00", "source": "github"}, "stars": {"kind": "observed", "observed_at": "2026-08-28T04:03:17.527772+00:00", "source": "github"}, "tags": {"confidence": null, "enriched_at": "2026-08-30T07:07:43.368082+00:00", "kind": "inferred", "prompt_version": 1, "sources": [{"content_hash": "a3f960c57eb6578beab95fd1251efe90fe72b9ebb331082e12739b056c1cf919", "fetched_at": "2026-08-28T04:03:17.527772+00:00", "kind": "readme", "missing": false, "url": "https://github.com/Trow-Registry/trow"}, {"content_hash": "1fd135d8fcb694b459af22ef45ea455ca5423a9c5dae11b8c347e66824961963", "fetched_at": "2026-08-29T13:07:31.916248+00:00", "kind": "homepage", "missing": false, "url": "http://trow.io/"}], "taxonomy_version": 1}, "topics": {"kind": "observed", "observed_at": "2026-08-28T04:03:17.527772+00:00", "source": "github"}, "urls": {"kind": "observed", "observed_at": "2026-08-28T04:03:17.527772+00:00", "source": "github"}, "use_cases": {"confidence": null, "enriched_at": "2026-08-30T07:07:43.368082+00:00", "kind": "inferred", "prompt_version": 1, "sources": [{"content_hash": "a3f960c57eb6578beab95fd1251efe90fe72b9ebb331082e12739b056c1cf919", "fetched_at": "2026-08-28T04:03:17.527772+00:00", "kind": "readme", "missing": false, "url": "https://github.com/Trow-Registry/trow"}, {"content_hash": "1fd135d8fcb694b459af22ef45ea455ca5423a9c5dae11b8c347e66824961963", "fetched_at": "2026-08-29T13:07:31.916248+00:00", "kind": "homepage", "missing": false, "url": "http://trow.io/"}], "taxonomy_version": 1}, "what_it_is": {"confidence": null, "enriched_at": "2026-08-30T07:07:43.368082+00:00", "kind": "inferred", "prompt_version": 1, "sources": [{"content_hash": "a3f960c57eb6578beab95fd1251efe90fe72b9ebb331082e12739b056c1cf919", "fetched_at": "2026-08-28T04:03:17.527772+00:00", "kind": "readme", "missing": false, "url": "https://github.com/Trow-Registry/trow"}, {"content_hash": "1fd135d8fcb694b459af22ef45ea455ca5423a9c5dae11b8c347e66824961963", "fetched_at": "2026-08-29T13:07:31.916248+00:00", "kind": "homepage", "missing": false, "url": "http://trow.io/"}], "taxonomy_version": 1}, "when_to_avoid": {"confidence": null, "enriched_at": "2026-08-30T07:07:43.368082+00:00", "kind": "inferred", "prompt_version": 1, "sources": [{"content_hash": "a3f960c57eb6578beab95fd1251efe90fe72b9ebb331082e12739b056c1cf919", "fetched_at": "2026-08-28T04:03:17.527772+00:00", "kind": "readme", "missing": false, "url": "https://github.com/Trow-Registry/trow"}, {"content_hash": "1fd135d8fcb694b459af22ef45ea455ca5423a9c5dae11b8c347e66824961963", "fetched_at": "2026-08-29T13:07:31.916248+00:00", "kind": "homepage", "missing": false, "url": "http://trow.io/"}], "taxonomy_version": 1}, "when_to_choose": {"confidence": null, "enriched_at": "2026-08-30T07:07:43.368082+00:00", "kind": "inferred", "prompt_version": 1, "sources": [{"content_hash": "a3f960c57eb6578beab95fd1251efe90fe72b9ebb331082e12739b056c1cf919", "fetched_at": "2026-08-28T04:03:17.527772+00:00", "kind": "readme", "missing": false, "url": "https://github.com/Trow-Registry/trow"}, {"content_hash": "1fd135d8fcb694b459af22ef45ea455ca5423a9c5dae11b8c347e66824961963", "fetched_at": "2026-08-29T13:07:31.916248+00:00", "kind": "homepage", "missing": false, "url": "http://trow.io/"}], "taxonomy_version": 1}}, "score": {"components": {"activity": 95, "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": 3283, "days_push": 32, "days_rel": 558, "gap_med": 7, "n_releases_24m": 4}, "score": 77, "version": 2}, "staleness": {"enrichment_outdated": false, "low_confidence": false, "scrape_days": 9, "stale_scrape": false}}