{"adoption": {"forks": 323, "observed_at": "2026-08-28T04:05:01.799858+00:00", "stars": 1547}, "canonical_url": "https://ross.abutalabs.com/products/geminabox", "card": {"archived": false, "artifact_type": "application", "description": "Really simple rubygem hosting", "domain": ["developer-tools", "self-hosted", "version-control"], "enriched": true, "function": ["http-server", "package-manager", "auth"], "health_score": 97, "homepage": "https://tomlea.co.uk/p/gem-in-a-box", "language": "Ruby", "license": "MIT", "license_family": "permissive", "maturity": "active", "member_repos": ["geminabox/geminabox"], "name": "geminabox/geminabox", "platform": ["ruby", "self-hosted"], "pushed_at": "2026-08-10T15:11:22+00:00", "repo": "geminabox/geminabox", "stars": 1547, "tags": ["rubygems", "gem-hosting", "rack", "bundler", "private-registry", "web-server"], "topics": ["ruby", "gem", "rubygems", "hacktoberfest"], "urls": [], "use_cases": ["host private ruby gems internally", "self-host a rubygems server", "push gems to a private registry with gem push", "serve internal gems to bundler", "replace rubygems.org for private packages", "set up a scoped gem source in a Gemfile"], "what_it_is": "Geminabox is a really simple self-hosted RubyGems server that lets you host and push your own gems just like rubygems.org. It supports the Bundler dependencies API out of the box and leaves authentication to the web server or Rack middleware.", "when_to_avoid": ["you need gem proxying/caching of rubygems.org (removed in 4.0)", "you need fine-grained access control beyond Rack-level auth", "you host packages for ecosystems other than Ruby"], "when_to_choose": ["you need a lightweight, simple private gem server for Ruby projects", "you want gem push compatibility with existing RubyGems tooling", "you need Bundler dependency API support without heavy infrastructure"]}, "data_as_of": "2026-08-30T08:39:29.467469+00:00", "members": [{"path": "/products/geminabox", "repo": "geminabox/geminabox", "role": "main", "score": 90}], "provenance": {"archived": {"kind": "observed", "observed_at": "2026-08-28T04:05:01.799858+00:00", "source": "github"}, "artifact_type": {"confidence": null, "enriched_at": "2026-08-30T04:30:29.282668+00:00", "kind": "inferred", "prompt_version": 1, "sources": [{"content_hash": "b6798b23a9035dcdcd2547ec25bbe9c3dad40c4e7d5ed54b5c67aae238c5c0a4", "fetched_at": "2026-08-28T04:05:01.799858+00:00", "kind": "readme", "missing": false, "url": "https://github.com/geminabox/geminabox"}], "taxonomy_version": 1}, "description": {"kind": "observed", "observed_at": "2026-08-28T04:05:01.799858+00:00", "source": "github"}, "domain": {"confidence": null, "enriched_at": "2026-08-30T04:30:29.282668+00:00", "kind": "inferred", "prompt_version": 1, "sources": [{"content_hash": "b6798b23a9035dcdcd2547ec25bbe9c3dad40c4e7d5ed54b5c67aae238c5c0a4", "fetched_at": "2026-08-28T04:05:01.799858+00:00", "kind": "readme", "missing": false, "url": "https://github.com/geminabox/geminabox"}], "taxonomy_version": 1}, "enriched": {"inputs": [], "kind": "computed", "method": "enrichment_status"}, "function": {"confidence": null, "enriched_at": "2026-08-30T04:30:29.282668+00:00", "kind": "inferred", "prompt_version": 1, "sources": [{"content_hash": "b6798b23a9035dcdcd2547ec25bbe9c3dad40c4e7d5ed54b5c67aae238c5c0a4", "fetched_at": "2026-08-28T04:05:01.799858+00:00", "kind": "readme", "missing": false, "url": "https://github.com/geminabox/geminabox"}], "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:05:01.799858+00:00", "source": "github"}, "language": {"kind": "observed", "observed_at": "2026-08-28T04:05:01.799858+00:00", "source": "github"}, "license": {"kind": "observed", "observed_at": "2026-08-28T04:05:01.799858+00:00", "source": "github"}, "license_family": {"inputs": ["license"], "kind": "computed", "method": "license_family"}, "maturity": {"confidence": null, "enriched_at": "2026-08-30T04:30:29.282668+00:00", "kind": "inferred", "prompt_version": 1, "sources": [{"content_hash": "b6798b23a9035dcdcd2547ec25bbe9c3dad40c4e7d5ed54b5c67aae238c5c0a4", "fetched_at": "2026-08-28T04:05:01.799858+00:00", "kind": "readme", "missing": false, "url": "https://github.com/geminabox/geminabox"}], "taxonomy_version": 1}, "member_repos": {"kind": "observed", "observed_at": "2026-08-28T04:05:01.799858+00:00", "source": "github"}, "name": {"kind": "observed", "observed_at": "2026-08-28T04:05:01.799858+00:00", "source": "github"}, "platform": {"confidence": null, "enriched_at": "2026-08-30T04:30:29.282668+00:00", "kind": "inferred", "prompt_version": 1, "sources": [{"content_hash": "b6798b23a9035dcdcd2547ec25bbe9c3dad40c4e7d5ed54b5c67aae238c5c0a4", "fetched_at": "2026-08-28T04:05:01.799858+00:00", "kind": "readme", "missing": false, "url": "https://github.com/geminabox/geminabox"}], "taxonomy_version": 1}, "pushed_at": {"kind": "observed", "observed_at": "2026-08-28T04:05:01.799858+00:00", "source": "github"}, "repo": {"kind": "observed", "observed_at": "2026-08-28T04:05:01.799858+00:00", "source": "github"}, "stars": {"kind": "observed", "observed_at": "2026-08-28T04:05:01.799858+00:00", "source": "github"}, "tags": {"confidence": null, "enriched_at": "2026-08-30T04:30:29.282668+00:00", "kind": "inferred", "prompt_version": 1, "sources": [{"content_hash": "b6798b23a9035dcdcd2547ec25bbe9c3dad40c4e7d5ed54b5c67aae238c5c0a4", "fetched_at": "2026-08-28T04:05:01.799858+00:00", "kind": "readme", "missing": false, "url": "https://github.com/geminabox/geminabox"}], "taxonomy_version": 1}, "topics": {"kind": "observed", "observed_at": "2026-08-28T04:05:01.799858+00:00", "source": "github"}, "urls": {"kind": "observed", "observed_at": "2026-08-28T04:05:01.799858+00:00", "source": "github"}, "use_cases": {"confidence": null, "enriched_at": "2026-08-30T04:30:29.282668+00:00", "kind": "inferred", "prompt_version": 1, "sources": [{"content_hash": "b6798b23a9035dcdcd2547ec25bbe9c3dad40c4e7d5ed54b5c67aae238c5c0a4", "fetched_at": "2026-08-28T04:05:01.799858+00:00", "kind": "readme", "missing": false, "url": "https://github.com/geminabox/geminabox"}], "taxonomy_version": 1}, "what_it_is": {"confidence": null, "enriched_at": "2026-08-30T04:30:29.282668+00:00", "kind": "inferred", "prompt_version": 1, "sources": [{"content_hash": "b6798b23a9035dcdcd2547ec25bbe9c3dad40c4e7d5ed54b5c67aae238c5c0a4", "fetched_at": "2026-08-28T04:05:01.799858+00:00", "kind": "readme", "missing": false, "url": "https://github.com/geminabox/geminabox"}], "taxonomy_version": 1}, "when_to_avoid": {"confidence": null, "enriched_at": "2026-08-30T04:30:29.282668+00:00", "kind": "inferred", "prompt_version": 1, "sources": [{"content_hash": "b6798b23a9035dcdcd2547ec25bbe9c3dad40c4e7d5ed54b5c67aae238c5c0a4", "fetched_at": "2026-08-28T04:05:01.799858+00:00", "kind": "readme", "missing": false, "url": "https://github.com/geminabox/geminabox"}], "taxonomy_version": 1}, "when_to_choose": {"confidence": null, "enriched_at": "2026-08-30T04:30:29.282668+00:00", "kind": "inferred", "prompt_version": 1, "sources": [{"content_hash": "b6798b23a9035dcdcd2547ec25bbe9c3dad40c4e7d5ed54b5c67aae238c5c0a4", "fetched_at": "2026-08-28T04:05:01.799858+00:00", "kind": "readme", "missing": false, "url": "https://github.com/geminabox/geminabox"}], "taxonomy_version": 1}}, "score": {"components": {"activity": 97, "longevity": 100, "rhythm": 74}, "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": 6082, "days_push": 23, "days_rel": 92, "gap_med": 50.5, "n_releases_24m": 3}, "score": 90, "version": 2}, "staleness": {"enrichment_outdated": false, "low_confidence": false, "scrape_days": 9, "stale_scrape": false}}