{"adoption": {"forks": 207, "observed_at": "2026-08-28T04:03:51.823310+00:00", "stars": 1173}, "canonical_url": "https://ross.abutalabs.com/products/ulogme", "card": {"archived": false, "artifact_type": "application", "description": "Automatically collect and visualize usage statistics in Ubuntu/OSX environments.", "domain": ["developer-tools", "analytics", "data-visualization"], "enriched": true, "function": ["analytics", "data-visualization", "monitoring", "logging"], "health_score": 20, "homepage": null, "language": "Python", "license": null, "license_family": "other", "maturity": "maintenance", "member_repos": ["karpathy/ulogme"], "name": "karpathy/ulogme", "platform": ["python", "browser", "self-hosted"], "pushed_at": "2020-09-17T23:08:59+00:00", "repo": "karpathy/ulogme", "stars": 1173, "tags": ["time-tracking", "quantified-self", "keystroke-logging", "window-tracking", "local-only", "d3js", "linux", "macos"], "topics": [], "urls": [], "use_cases": ["track how I spend time on my computer each day", "visualize my productivity with timelines of active windows", "count keystrokes per application over the day", "see where my time went during the workday", "self-hosted local activity logging without cloud upload", "annotate my day with notes and review usage stats"], "what_it_is": "ulogme is a local activity tracker that records active window titles and keystroke frequencies throughout the day, then renders them as interactive HTML timelines using d3.js. All data stays on the machine, with a small Python web server serving the visualization UI.", "when_to_avoid": ["you use Windows or Wayland-based Linux desktops, which are unsupported", "you need cross-device sync, cloud dashboards, or active maintenance", "you need modern browser compatibility beyond ES6 Promises-era browsers"], "when_to_choose": ["you use Ubuntu or OSX and want fully local, private activity tracking", "you want customizable HTML/d3 visualizations of window titles and typing activity", "you prefer simple timestamped log files you can inspect or post-process yourself"]}, "data_as_of": "2026-08-30T08:39:29.467469+00:00", "members": [{"path": "/products/ulogme", "repo": "karpathy/ulogme", "role": "main", "score": 32}], "provenance": {"archived": {"kind": "observed", "observed_at": "2026-08-28T04:03:51.823310+00:00", "source": "github"}, "artifact_type": {"confidence": null, "enriched_at": "2026-08-30T06:28:23.166496+00:00", "kind": "inferred", "prompt_version": 1, "sources": [{"content_hash": "5e031639280ea781a338a0cf6ceebc05a90e701d5e533a01515a67829843122e", "fetched_at": "2026-08-28T04:03:51.823310+00:00", "kind": "readme", "missing": false, "url": "https://github.com/karpathy/ulogme"}], "taxonomy_version": 1}, "description": {"kind": "observed", "observed_at": "2026-08-28T04:03:51.823310+00:00", "source": "github"}, "domain": {"confidence": null, "enriched_at": "2026-08-30T06:28:23.166496+00:00", "kind": "inferred", "prompt_version": 1, "sources": [{"content_hash": "5e031639280ea781a338a0cf6ceebc05a90e701d5e533a01515a67829843122e", "fetched_at": "2026-08-28T04:03:51.823310+00:00", "kind": "readme", "missing": false, "url": "https://github.com/karpathy/ulogme"}], "taxonomy_version": 1}, "enriched": {"inputs": [], "kind": "computed", "method": "enrichment_status"}, "function": {"confidence": null, "enriched_at": "2026-08-30T06:28:23.166496+00:00", "kind": "inferred", "prompt_version": 1, "sources": [{"content_hash": "5e031639280ea781a338a0cf6ceebc05a90e701d5e533a01515a67829843122e", "fetched_at": "2026-08-28T04:03:51.823310+00:00", "kind": "readme", "missing": false, "url": "https://github.com/karpathy/ulogme"}], "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:51.823310+00:00", "source": "github"}, "language": {"kind": "observed", "observed_at": "2026-08-28T04:03:51.823310+00:00", "source": "github"}, "license": {"kind": "observed", "observed_at": "2026-08-28T04:03:51.823310+00:00", "source": "github"}, "license_family": {"inputs": ["license"], "kind": "computed", "method": "license_family"}, "maturity": {"confidence": null, "enriched_at": "2026-08-30T06:28:23.166496+00:00", "kind": "inferred", "prompt_version": 1, "sources": [{"content_hash": "5e031639280ea781a338a0cf6ceebc05a90e701d5e533a01515a67829843122e", "fetched_at": "2026-08-28T04:03:51.823310+00:00", "kind": "readme", "missing": false, "url": "https://github.com/karpathy/ulogme"}], "taxonomy_version": 1}, "member_repos": {"kind": "observed", "observed_at": "2026-08-28T04:03:51.823310+00:00", "source": "github"}, "name": {"kind": "observed", "observed_at": "2026-08-28T04:03:51.823310+00:00", "source": "github"}, "platform": {"confidence": null, "enriched_at": "2026-08-30T06:28:23.166496+00:00", "kind": "inferred", "prompt_version": 1, "sources": [{"content_hash": "5e031639280ea781a338a0cf6ceebc05a90e701d5e533a01515a67829843122e", "fetched_at": "2026-08-28T04:03:51.823310+00:00", "kind": "readme", "missing": false, "url": "https://github.com/karpathy/ulogme"}], "taxonomy_version": 1}, "pushed_at": {"kind": "observed", "observed_at": "2026-08-28T04:03:51.823310+00:00", "source": "github"}, "repo": {"kind": "observed", "observed_at": "2026-08-28T04:03:51.823310+00:00", "source": "github"}, "stars": {"kind": "observed", "observed_at": "2026-08-28T04:03:51.823310+00:00", "source": "github"}, "tags": {"confidence": null, "enriched_at": "2026-08-30T06:28:23.166496+00:00", "kind": "inferred", "prompt_version": 1, "sources": [{"content_hash": "5e031639280ea781a338a0cf6ceebc05a90e701d5e533a01515a67829843122e", "fetched_at": "2026-08-28T04:03:51.823310+00:00", "kind": "readme", "missing": false, "url": "https://github.com/karpathy/ulogme"}], "taxonomy_version": 1}, "topics": {"kind": "observed", "observed_at": "2026-08-28T04:03:51.823310+00:00", "source": "github"}, "urls": {"kind": "observed", "observed_at": "2026-08-28T04:03:51.823310+00:00", "source": "github"}, "use_cases": {"confidence": null, "enriched_at": "2026-08-30T06:28:23.166496+00:00", "kind": "inferred", "prompt_version": 1, "sources": [{"content_hash": "5e031639280ea781a338a0cf6ceebc05a90e701d5e533a01515a67829843122e", "fetched_at": "2026-08-28T04:03:51.823310+00:00", "kind": "readme", "missing": false, "url": "https://github.com/karpathy/ulogme"}], "taxonomy_version": 1}, "what_it_is": {"confidence": null, "enriched_at": "2026-08-30T06:28:23.166496+00:00", "kind": "inferred", "prompt_version": 1, "sources": [{"content_hash": "5e031639280ea781a338a0cf6ceebc05a90e701d5e533a01515a67829843122e", "fetched_at": "2026-08-28T04:03:51.823310+00:00", "kind": "readme", "missing": false, "url": "https://github.com/karpathy/ulogme"}], "taxonomy_version": 1}, "when_to_avoid": {"confidence": null, "enriched_at": "2026-08-30T06:28:23.166496+00:00", "kind": "inferred", "prompt_version": 1, "sources": [{"content_hash": "5e031639280ea781a338a0cf6ceebc05a90e701d5e533a01515a67829843122e", "fetched_at": "2026-08-28T04:03:51.823310+00:00", "kind": "readme", "missing": false, "url": "https://github.com/karpathy/ulogme"}], "taxonomy_version": 1}, "when_to_choose": {"confidence": null, "enriched_at": "2026-08-30T06:28:23.166496+00:00", "kind": "inferred", "prompt_version": 1, "sources": [{"content_hash": "5e031639280ea781a338a0cf6ceebc05a90e701d5e533a01515a67829843122e", "fetched_at": "2026-08-28T04:03:51.823310+00:00", "kind": "readme", "missing": false, "url": "https://github.com/karpathy/ulogme"}], "taxonomy_version": 1}}, "score": {"components": {"activity": 0, "longevity": 100, "rhythm": 35}, "computed_at": "2026-09-03T02:20:16.233290+00:00", "flags": ["no_releases", "no_license"], "formula": "round(0.45*activity + 0.35*rhythm + 0.20*longevity); archived -> min(score, 10)", "inputs": {"age_days": 4496, "days_push": 2176, "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}}