{"adoption": {"forks": 50, "observed_at": "2026-08-28T04:04:14.720526+00:00", "stars": 1285}, "canonical_url": "https://ross.abutalabs.com/products/rat", "card": {"archived": false, "artifact_type": "cli-tool", "description": "Compose shell commands to build interactive terminal applications", "domain": ["developer-tools"], "enriched": true, "function": ["cli", "terminal-ui", "developer-tools"], "health_score": 20, "homepage": null, "language": "Go", "license": "MIT", "license_family": "permissive", "maturity": "experimental", "member_repos": ["ericfreese/rat"], "name": "ericfreese/rat", "platform": ["cli", "go"], "pushed_at": "2021-09-23T15:29:04+00:00", "repo": "ericfreese/rat", "stars": 1285, "tags": ["tui", "shell-scripts", "pager", "keybindings", "annotators", "command-line", "linux", "macos"], "topics": ["rat", "command-line", "shell", "git", "terminal"], "urls": [], "use_cases": ["build a tig-like git log viewer from shell commands", "turn any shell command output into an interactive terminal UI", "add clickable annotations to terminal output with regex or external annotators", "create custom keybindings to act on text in a terminal pager", "prototype terminal apps without writing UI code"], "what_it_is": "Rat is a Go-based tool that lets you compose ordinary shell commands into interactive terminal applications. It captures command output in pagers and uses configurable annotators and key bindings to make parts of the text actionable.", "when_to_avoid": ["you need a polished, stable TUI framework with a mature API", "you want a full-featured terminal application out of the box", "you need Windows support or long-term maintenance guarantees"], "when_to_choose": ["you want interactive terminal UIs driven entirely by shell commands and config files", "you prefer minimal, unopinionated tooling you can configure yourself", "you want to build tig-style views on top of tools like git log"]}, "data_as_of": "2026-08-30T08:39:29.467469+00:00", "members": [{"path": "/products/rat", "repo": "ericfreese/rat", "role": "main", "score": 32}], "provenance": {"archived": {"kind": "observed", "observed_at": "2026-08-28T04:04:14.720526+00:00", "source": "github"}, "artifact_type": {"confidence": null, "enriched_at": "2026-08-30T04:56:39.233719+00:00", "kind": "inferred", "prompt_version": 1, "sources": [{"content_hash": "d77de9811dfbd130324fcaffe53c7ba0564554fb2e3811c2c10d60f5075656fa", "fetched_at": "2026-08-28T04:04:14.720526+00:00", "kind": "readme", "missing": false, "url": "https://github.com/ericfreese/rat"}], "taxonomy_version": 1}, "description": {"kind": "observed", "observed_at": "2026-08-28T04:04:14.720526+00:00", "source": "github"}, "domain": {"confidence": null, "enriched_at": "2026-08-30T04:56:39.233719+00:00", "kind": "inferred", "prompt_version": 1, "sources": [{"content_hash": "d77de9811dfbd130324fcaffe53c7ba0564554fb2e3811c2c10d60f5075656fa", "fetched_at": "2026-08-28T04:04:14.720526+00:00", "kind": "readme", "missing": false, "url": "https://github.com/ericfreese/rat"}], "taxonomy_version": 1}, "enriched": {"inputs": [], "kind": "computed", "method": "enrichment_status"}, "function": {"confidence": null, "enriched_at": "2026-08-30T04:56:39.233719+00:00", "kind": "inferred", "prompt_version": 1, "sources": [{"content_hash": "d77de9811dfbd130324fcaffe53c7ba0564554fb2e3811c2c10d60f5075656fa", "fetched_at": "2026-08-28T04:04:14.720526+00:00", "kind": "readme", "missing": false, "url": "https://github.com/ericfreese/rat"}], "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:04:14.720526+00:00", "source": "github"}, "language": {"kind": "observed", "observed_at": "2026-08-28T04:04:14.720526+00:00", "source": "github"}, "license": {"kind": "observed", "observed_at": "2026-08-28T04:04:14.720526+00:00", "source": "github"}, "license_family": {"inputs": ["license"], "kind": "computed", "method": "license_family"}, "maturity": {"confidence": null, "enriched_at": "2026-08-30T04:56:39.233719+00:00", "kind": "inferred", "prompt_version": 1, "sources": [{"content_hash": "d77de9811dfbd130324fcaffe53c7ba0564554fb2e3811c2c10d60f5075656fa", "fetched_at": "2026-08-28T04:04:14.720526+00:00", "kind": "readme", "missing": false, "url": "https://github.com/ericfreese/rat"}], "taxonomy_version": 1}, "member_repos": {"kind": "observed", "observed_at": "2026-08-28T04:04:14.720526+00:00", "source": "github"}, "name": {"kind": "observed", "observed_at": "2026-08-28T04:04:14.720526+00:00", "source": "github"}, "platform": {"confidence": null, "enriched_at": "2026-08-30T04:56:39.233719+00:00", "kind": "inferred", "prompt_version": 1, "sources": [{"content_hash": "d77de9811dfbd130324fcaffe53c7ba0564554fb2e3811c2c10d60f5075656fa", "fetched_at": "2026-08-28T04:04:14.720526+00:00", "kind": "readme", "missing": false, "url": "https://github.com/ericfreese/rat"}], "taxonomy_version": 1}, "pushed_at": {"kind": "observed", "observed_at": "2026-08-28T04:04:14.720526+00:00", "source": "github"}, "repo": {"kind": "observed", "observed_at": "2026-08-28T04:04:14.720526+00:00", "source": "github"}, "stars": {"kind": "observed", "observed_at": "2026-08-28T04:04:14.720526+00:00", "source": "github"}, "tags": {"confidence": null, "enriched_at": "2026-08-30T04:56:39.233719+00:00", "kind": "inferred", "prompt_version": 1, "sources": [{"content_hash": "d77de9811dfbd130324fcaffe53c7ba0564554fb2e3811c2c10d60f5075656fa", "fetched_at": "2026-08-28T04:04:14.720526+00:00", "kind": "readme", "missing": false, "url": "https://github.com/ericfreese/rat"}], "taxonomy_version": 1}, "topics": {"kind": "observed", "observed_at": "2026-08-28T04:04:14.720526+00:00", "source": "github"}, "urls": {"kind": "observed", "observed_at": "2026-08-28T04:04:14.720526+00:00", "source": "github"}, "use_cases": {"confidence": null, "enriched_at": "2026-08-30T04:56:39.233719+00:00", "kind": "inferred", "prompt_version": 1, "sources": [{"content_hash": "d77de9811dfbd130324fcaffe53c7ba0564554fb2e3811c2c10d60f5075656fa", "fetched_at": "2026-08-28T04:04:14.720526+00:00", "kind": "readme", "missing": false, "url": "https://github.com/ericfreese/rat"}], "taxonomy_version": 1}, "what_it_is": {"confidence": null, "enriched_at": "2026-08-30T04:56:39.233719+00:00", "kind": "inferred", "prompt_version": 1, "sources": [{"content_hash": "d77de9811dfbd130324fcaffe53c7ba0564554fb2e3811c2c10d60f5075656fa", "fetched_at": "2026-08-28T04:04:14.720526+00:00", "kind": "readme", "missing": false, "url": "https://github.com/ericfreese/rat"}], "taxonomy_version": 1}, "when_to_avoid": {"confidence": null, "enriched_at": "2026-08-30T04:56:39.233719+00:00", "kind": "inferred", "prompt_version": 1, "sources": [{"content_hash": "d77de9811dfbd130324fcaffe53c7ba0564554fb2e3811c2c10d60f5075656fa", "fetched_at": "2026-08-28T04:04:14.720526+00:00", "kind": "readme", "missing": false, "url": "https://github.com/ericfreese/rat"}], "taxonomy_version": 1}, "when_to_choose": {"confidence": null, "enriched_at": "2026-08-30T04:56:39.233719+00:00", "kind": "inferred", "prompt_version": 1, "sources": [{"content_hash": "d77de9811dfbd130324fcaffe53c7ba0564554fb2e3811c2c10d60f5075656fa", "fetched_at": "2026-08-28T04:04:14.720526+00:00", "kind": "readme", "missing": false, "url": "https://github.com/ericfreese/rat"}], "taxonomy_version": 1}}, "score": {"components": {"activity": 0, "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": 3492, "days_push": 1805, "days_rel": null, "gap_med": null, "n_releases_24m": 0}, "score": 32, "version": 2}, "staleness": {"enrichment_outdated": false, "low_confidence": false, "scrape_days": 9, "stale_scrape": false}}