{"adoption": {"forks": 42, "observed_at": "2026-08-28T04:06:09.112859+00:00", "stars": 2049}, "canonical_url": "https://ross.abutalabs.com/products/retrom", "card": {"archived": false, "artifact_type": "service", "description": "A centralized game library/collection management service with a focus on emulation", "domain": ["gaming-tools", "self-hosted", "media"], "enriched": true, "function": ["self-hosted", "file-system", "http-server", "gui"], "health_score": 98, "homepage": null, "language": "TypeScript", "license": "GPL-3.0", "license_family": "copyleft", "maturity": "active", "member_repos": ["JMBeresford/retrom"], "name": "JMBeresford/retrom", "platform": ["self-hosted", "windows", "cross-platform"], "pushed_at": "2026-08-23T00:20:24+00:00", "repo": "JMBeresford/retrom", "stars": 2049, "tags": ["game-library", "emulation", "drm-free-games", "rom-management", "steam-integration", "game-metadata", "client-server", "automation", "macos", "linux", "web-server"], "topics": [], "urls": [], "use_cases": ["host my own game library server like self-hosted steam", "manage my rom and emulation collection in one place", "download and play my games from any device", "automatically fetch game metadata and cover art", "share emulator configurations across multiple computers", "unify my steam and drm-free games into one library", "access my game collection through a web client"], "what_it_is": "Retrom is a self-hosted, centralized game library management service focused on emulation, letting users host their DRM-free game collection on one device and access it from desktop and web clients. It scans the filesystem for games, downloads metadata and artwork, manages emulator profiles, and supports installing, uninstalling, and launching games across devices.", "when_to_avoid": ["you only play DRM-locked games that require their own launchers", "you want a simple local launcher without running a server", "you need console-legal ROM sourcing or built-in emulation itself (it launches external emulators)"], "when_to_choose": ["you have a large DRM-free or emulated game library you want to stream/install across devices", "you want a self-hosted alternative to Steam for your own games", "you need centralized emulator profile management across machines"]}, "data_as_of": "2026-08-30T08:39:29.467469+00:00", "members": [{"path": "/products/retrom", "repo": "JMBeresford/retrom", "role": "main", "score": 83}], "provenance": {"archived": {"kind": "observed", "observed_at": "2026-08-28T04:06:09.112859+00:00", "source": "github"}, "artifact_type": {"confidence": null, "enriched_at": "2026-08-30T02:57:36.813122+00:00", "kind": "inferred", "prompt_version": 1, "sources": [{"content_hash": "c313f1abc53c908ea88bb7841b16538f0dd31d4eeb4f241ff7e48be470d5be41", "fetched_at": "2026-08-28T04:06:09.112859+00:00", "kind": "readme", "missing": false, "url": "https://github.com/JMBeresford/retrom"}], "taxonomy_version": 1}, "description": {"kind": "observed", "observed_at": "2026-08-28T04:06:09.112859+00:00", "source": "github"}, "domain": {"confidence": null, "enriched_at": "2026-08-30T02:57:36.813122+00:00", "kind": "inferred", "prompt_version": 1, "sources": [{"content_hash": "c313f1abc53c908ea88bb7841b16538f0dd31d4eeb4f241ff7e48be470d5be41", "fetched_at": "2026-08-28T04:06:09.112859+00:00", "kind": "readme", "missing": false, "url": "https://github.com/JMBeresford/retrom"}], "taxonomy_version": 1}, "enriched": {"inputs": [], "kind": "computed", "method": "enrichment_status"}, "function": {"confidence": null, "enriched_at": "2026-08-30T02:57:36.813122+00:00", "kind": "inferred", "prompt_version": 1, "sources": [{"content_hash": "c313f1abc53c908ea88bb7841b16538f0dd31d4eeb4f241ff7e48be470d5be41", "fetched_at": "2026-08-28T04:06:09.112859+00:00", "kind": "readme", "missing": false, "url": "https://github.com/JMBeresford/retrom"}], "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:06:09.112859+00:00", "source": "github"}, "language": {"kind": "observed", "observed_at": "2026-08-28T04:06:09.112859+00:00", "source": "github"}, "license": {"kind": "observed", "observed_at": "2026-08-28T04:06:09.112859+00:00", "source": "github"}, "license_family": {"inputs": ["license"], "kind": "computed", "method": "license_family"}, "maturity": {"confidence": null, "enriched_at": "2026-08-30T02:57:36.813122+00:00", "kind": "inferred", "prompt_version": 1, "sources": [{"content_hash": "c313f1abc53c908ea88bb7841b16538f0dd31d4eeb4f241ff7e48be470d5be41", "fetched_at": "2026-08-28T04:06:09.112859+00:00", "kind": "readme", "missing": false, "url": "https://github.com/JMBeresford/retrom"}], "taxonomy_version": 1}, "member_repos": {"kind": "observed", "observed_at": "2026-08-28T04:06:09.112859+00:00", "source": "github"}, "name": {"kind": "observed", "observed_at": "2026-08-28T04:06:09.112859+00:00", "source": "github"}, "platform": {"confidence": null, "enriched_at": "2026-08-30T02:57:36.813122+00:00", "kind": "inferred", "prompt_version": 1, "sources": [{"content_hash": "c313f1abc53c908ea88bb7841b16538f0dd31d4eeb4f241ff7e48be470d5be41", "fetched_at": "2026-08-28T04:06:09.112859+00:00", "kind": "readme", "missing": false, "url": "https://github.com/JMBeresford/retrom"}], "taxonomy_version": 1}, "pushed_at": {"kind": "observed", "observed_at": "2026-08-28T04:06:09.112859+00:00", "source": "github"}, "repo": {"kind": "observed", "observed_at": "2026-08-28T04:06:09.112859+00:00", "source": "github"}, "stars": {"kind": "observed", "observed_at": "2026-08-28T04:06:09.112859+00:00", "source": "github"}, "tags": {"confidence": null, "enriched_at": "2026-08-30T02:57:36.813122+00:00", "kind": "inferred", "prompt_version": 1, "sources": [{"content_hash": "c313f1abc53c908ea88bb7841b16538f0dd31d4eeb4f241ff7e48be470d5be41", "fetched_at": "2026-08-28T04:06:09.112859+00:00", "kind": "readme", "missing": false, "url": "https://github.com/JMBeresford/retrom"}], "taxonomy_version": 1}, "topics": {"kind": "observed", "observed_at": "2026-08-28T04:06:09.112859+00:00", "source": "github"}, "urls": {"kind": "observed", "observed_at": "2026-08-28T04:06:09.112859+00:00", "source": "github"}, "use_cases": {"confidence": null, "enriched_at": "2026-08-30T02:57:36.813122+00:00", "kind": "inferred", "prompt_version": 1, "sources": [{"content_hash": "c313f1abc53c908ea88bb7841b16538f0dd31d4eeb4f241ff7e48be470d5be41", "fetched_at": "2026-08-28T04:06:09.112859+00:00", "kind": "readme", "missing": false, "url": "https://github.com/JMBeresford/retrom"}], "taxonomy_version": 1}, "what_it_is": {"confidence": null, "enriched_at": "2026-08-30T02:57:36.813122+00:00", "kind": "inferred", "prompt_version": 1, "sources": [{"content_hash": "c313f1abc53c908ea88bb7841b16538f0dd31d4eeb4f241ff7e48be470d5be41", "fetched_at": "2026-08-28T04:06:09.112859+00:00", "kind": "readme", "missing": false, "url": "https://github.com/JMBeresford/retrom"}], "taxonomy_version": 1}, "when_to_avoid": {"confidence": null, "enriched_at": "2026-08-30T02:57:36.813122+00:00", "kind": "inferred", "prompt_version": 1, "sources": [{"content_hash": "c313f1abc53c908ea88bb7841b16538f0dd31d4eeb4f241ff7e48be470d5be41", "fetched_at": "2026-08-28T04:06:09.112859+00:00", "kind": "readme", "missing": false, "url": "https://github.com/JMBeresford/retrom"}], "taxonomy_version": 1}, "when_to_choose": {"confidence": null, "enriched_at": "2026-08-30T02:57:36.813122+00:00", "kind": "inferred", "prompt_version": 1, "sources": [{"content_hash": "c313f1abc53c908ea88bb7841b16538f0dd31d4eeb4f241ff7e48be470d5be41", "fetched_at": "2026-08-28T04:06:09.112859+00:00", "kind": "readme", "missing": false, "url": "https://github.com/JMBeresford/retrom"}], "taxonomy_version": 1}}, "score": {"components": {"activity": 99, "longevity": 61, "rhythm": 76}, "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": 867, "days_push": 11, "days_rel": 80, "gap_med": 1, "n_releases_24m": 126}, "score": 83, "version": 2}, "staleness": {"enrichment_outdated": false, "low_confidence": false, "scrape_days": 9, "stale_scrape": false}}