{"adoption": {"forks": 8005, "observed_at": "2026-08-28T04:12:18.550247+00:00", "stars": 57548}, "canonical_url": "https://ross.abutalabs.com/products/nanochat", "card": {"archived": false, "artifact_type": "framework", "description": "The best ChatGPT that $100 can buy.", "domain": ["large-language-models", "deep-learning", "machine-learning", "artificial-intelligence", "developer-tools", "education"], "enriched": true, "function": ["llm-training", "llm-inference", "machine-learning", "deep-learning", "cli"], "health_score": 77, "homepage": null, "language": "Python", "license": "MIT", "license_family": "permissive", "maturity": "active", "member_repos": ["karpathy/nanochat"], "name": "karpathy/nanochat", "platform": ["python", "cli"], "pushed_at": "2026-08-02T21:05:23+00:00", "repo": "karpathy/nanochat", "stars": 57548, "tags": ["gpt-2", "speedrun", "transformer", "pretraining", "finetuning", "single-node", "h100", "scaling-laws", "chatgpt-clone", "educational", "tokenization", "gpu", "linux"], "topics": [], "urls": [], "use_cases": ["train my own GPT-2 from scratch on a single GPU node", "learn how LLM pretraining and finetuning work end to end", "run a cheap ChatGPT-like model for under $100", "benchmark how fast I can train a GPT-2 quality model", "experiment with compute-optimal transformer hyperparameters", "fine-tune and evaluate a small language model", "chat with a model I trained myself over a CLI"], "what_it_is": "nanochat is a minimal, hackable full-stack LLM training harness that covers tokenization, pretraining, finetuning, evaluation, and inference on a single GPU node. It lets users train GPT-2-capability models for tens of dollars and chat with them via a CLI, with a single complexity dial controlling model scale.", "when_to_avoid": ["you need production-grade distributed training across many nodes", "you want to train frontier-scale models with advanced features like MoE or RLHF pipelines", "you need a polished inference server or managed API", "you have no GPU access, since the whole point is GPU training"], "when_to_choose": ["you want a minimal, readable codebase covering the full LLM training pipeline", "you have access to a single 8xH100 GPU node and want to train small GPT models cheaply", "you are learning how tokenization, pretraining, SFT, evaluation, and inference fit together", "you want to compete on the GPT-2 speedrun leaderboard"]}, "data_as_of": "2026-08-30T08:39:29.467469+00:00", "members": [{"path": "/products/nanochat", "repo": "karpathy/nanochat", "role": "main", "score": 60}], "provenance": {"archived": {"kind": "observed", "observed_at": "2026-08-28T04:12:18.550247+00:00", "source": "github"}, "artifact_type": {"confidence": null, "enriched_at": "2026-08-29T16:18:30.223811+00:00", "kind": "inferred", "prompt_version": 1, "sources": [{"content_hash": "dacb58ac9a08dfcd093e86570b0ac942b43d637895e689c5d4b8866f7eb64964", "fetched_at": "2026-08-28T04:12:18.550247+00:00", "kind": "readme", "missing": false, "url": "https://github.com/karpathy/nanochat"}], "taxonomy_version": 1}, "description": {"kind": "observed", "observed_at": "2026-08-28T04:12:18.550247+00:00", "source": "github"}, "domain": {"confidence": null, "enriched_at": "2026-08-29T16:18:30.223811+00:00", "kind": "inferred", "prompt_version": 1, "sources": [{"content_hash": "dacb58ac9a08dfcd093e86570b0ac942b43d637895e689c5d4b8866f7eb64964", "fetched_at": "2026-08-28T04:12:18.550247+00:00", "kind": "readme", "missing": false, "url": "https://github.com/karpathy/nanochat"}], "taxonomy_version": 1}, "enriched": {"inputs": [], "kind": "computed", "method": "enrichment_status"}, "function": {"confidence": null, "enriched_at": "2026-08-29T16:18:30.223811+00:00", "kind": "inferred", "prompt_version": 1, "sources": [{"content_hash": "dacb58ac9a08dfcd093e86570b0ac942b43d637895e689c5d4b8866f7eb64964", "fetched_at": "2026-08-28T04:12:18.550247+00:00", "kind": "readme", "missing": false, "url": "https://github.com/karpathy/nanochat"}], "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:12:18.550247+00:00", "source": "github"}, "language": {"kind": "observed", "observed_at": "2026-08-28T04:12:18.550247+00:00", "source": "github"}, "license": {"kind": "observed", "observed_at": "2026-08-28T04:12:18.550247+00:00", "source": "github"}, "license_family": {"inputs": ["license"], "kind": "computed", "method": "license_family"}, "maturity": {"confidence": null, "enriched_at": "2026-08-29T16:18:30.223811+00:00", "kind": "inferred", "prompt_version": 1, "sources": [{"content_hash": "dacb58ac9a08dfcd093e86570b0ac942b43d637895e689c5d4b8866f7eb64964", "fetched_at": "2026-08-28T04:12:18.550247+00:00", "kind": "readme", "missing": false, "url": "https://github.com/karpathy/nanochat"}], "taxonomy_version": 1}, "member_repos": {"kind": "observed", "observed_at": "2026-08-28T04:12:18.550247+00:00", "source": "github"}, "name": {"kind": "observed", "observed_at": "2026-08-28T04:12:18.550247+00:00", "source": "github"}, "platform": {"confidence": null, "enriched_at": "2026-08-29T16:18:30.223811+00:00", "kind": "inferred", "prompt_version": 1, "sources": [{"content_hash": "dacb58ac9a08dfcd093e86570b0ac942b43d637895e689c5d4b8866f7eb64964", "fetched_at": "2026-08-28T04:12:18.550247+00:00", "kind": "readme", "missing": false, "url": "https://github.com/karpathy/nanochat"}], "taxonomy_version": 1}, "pushed_at": {"kind": "observed", "observed_at": "2026-08-28T04:12:18.550247+00:00", "source": "github"}, "repo": {"kind": "observed", "observed_at": "2026-08-28T04:12:18.550247+00:00", "source": "github"}, "stars": {"kind": "observed", "observed_at": "2026-08-28T04:12:18.550247+00:00", "source": "github"}, "tags": {"confidence": null, "enriched_at": "2026-08-29T16:18:30.223811+00:00", "kind": "inferred", "prompt_version": 1, "sources": [{"content_hash": "dacb58ac9a08dfcd093e86570b0ac942b43d637895e689c5d4b8866f7eb64964", "fetched_at": "2026-08-28T04:12:18.550247+00:00", "kind": "readme", "missing": false, "url": "https://github.com/karpathy/nanochat"}], "taxonomy_version": 1}, "topics": {"kind": "observed", "observed_at": "2026-08-28T04:12:18.550247+00:00", "source": "github"}, "urls": {"kind": "observed", "observed_at": "2026-08-28T04:12:18.550247+00:00", "source": "github"}, "use_cases": {"confidence": null, "enriched_at": "2026-08-29T16:18:30.223811+00:00", "kind": "inferred", "prompt_version": 1, "sources": [{"content_hash": "dacb58ac9a08dfcd093e86570b0ac942b43d637895e689c5d4b8866f7eb64964", "fetched_at": "2026-08-28T04:12:18.550247+00:00", "kind": "readme", "missing": false, "url": "https://github.com/karpathy/nanochat"}], "taxonomy_version": 1}, "what_it_is": {"confidence": null, "enriched_at": "2026-08-29T16:18:30.223811+00:00", "kind": "inferred", "prompt_version": 1, "sources": [{"content_hash": "dacb58ac9a08dfcd093e86570b0ac942b43d637895e689c5d4b8866f7eb64964", "fetched_at": "2026-08-28T04:12:18.550247+00:00", "kind": "readme", "missing": false, "url": "https://github.com/karpathy/nanochat"}], "taxonomy_version": 1}, "when_to_avoid": {"confidence": null, "enriched_at": "2026-08-29T16:18:30.223811+00:00", "kind": "inferred", "prompt_version": 1, "sources": [{"content_hash": "dacb58ac9a08dfcd093e86570b0ac942b43d637895e689c5d4b8866f7eb64964", "fetched_at": "2026-08-28T04:12:18.550247+00:00", "kind": "readme", "missing": false, "url": "https://github.com/karpathy/nanochat"}], "taxonomy_version": 1}, "when_to_choose": {"confidence": null, "enriched_at": "2026-08-29T16:18:30.223811+00:00", "kind": "inferred", "prompt_version": 1, "sources": [{"content_hash": "dacb58ac9a08dfcd093e86570b0ac942b43d637895e689c5d4b8866f7eb64964", "fetched_at": "2026-08-28T04:12:18.550247+00:00", "kind": "readme", "missing": false, "url": "https://github.com/karpathy/nanochat"}], "taxonomy_version": 1}}, "score": {"components": {"activity": 95, "longevity": 23, "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": 324, "days_push": 31, "days_rel": null, "gap_med": null, "n_releases_24m": 0}, "score": 60, "version": 2}, "staleness": {"enrichment_outdated": false, "low_confidence": false, "scrape_days": 9, "stale_scrape": false}}