{"adoption": {"forks": 128, "observed_at": "2026-08-28T04:04:52.816936+00:00", "stars": 1494}, "canonical_url": "https://ross.abutalabs.com/products/reasoning-gym", "card": {"archived": false, "artifact_type": "library", "description": "[NeurIPS 2025 Spotlight] Reasoning Environments for Reinforcement Learning with Verifiable Rewards", "domain": ["reinforcement-learning", "large-language-models", "machine-learning"], "enriched": true, "function": ["machine-learning", "reinforcement-learning", "llm-training", "data-generation", "benchmarking"], "health_score": 85, "homepage": null, "language": "Python", "license": "Apache-2.0", "license_family": "permissive", "maturity": "active", "member_repos": ["open-thought/reasoning-gym"], "name": "open-thought/reasoning-gym", "platform": ["python", "cli"], "pushed_at": "2026-04-17T19:39:15+00:00", "repo": "open-thought/reasoning-gym", "stars": 1494, "tags": ["gym-environments", "verifiable-rewards", "procedural-datasets", "reasoning-tasks", "rl-training-data", "algorithms"], "topics": ["gym", "reinforcement-learning", "large-language-models"], "urls": [], "use_cases": ["generate infinite training data for RL with verifiable rewards", "train reasoning models on math and logic tasks", "evaluate LLM reasoning with algorithmic verification", "create procedurally generated puzzle environments for RLHF", "benchmark language models on reasoning tasks"], "what_it_is": "Reasoning Gym is a Python library of procedural dataset generators and algorithmically verifiable reasoning environments for training LLMs with reinforcement learning and verifiable rewards. It offers 100+ tasks across domains like algebra, logic, graph theory, and games, with adjustable complexity and a standard score_answer verification interface.", "when_to_avoid": ["you need static benchmark datasets with fixed test sets", "you are doing general-purpose supervised fine-tuning without verifiable answers", "you need non-Python environments or GPU-accelerated simulation"], "when_to_choose": ["you need scalable, procedurally generated reasoning tasks with automatic answer verification", "you are training or evaluating LLMs with RLVR and want diverse domains", "you want adjustable task difficulty for curriculum-style RL training"]}, "data_as_of": "2026-08-30T08:39:29.467469+00:00", "members": [{"path": "/products/reasoning-gym", "repo": "open-thought/reasoning-gym", "role": "main", "score": 66}], "provenance": {"archived": {"kind": "observed", "observed_at": "2026-08-28T04:04:52.816936+00:00", "source": "github"}, "artifact_type": {"confidence": null, "enriched_at": "2026-08-30T04:33:23.697822+00:00", "kind": "inferred", "prompt_version": 1, "sources": [{"content_hash": "28e8b19127429d50be425628b9fffc5bfc936a33b0f821e372ac610125c9c2f6", "fetched_at": "2026-08-28T04:04:52.816936+00:00", "kind": "readme", "missing": false, "url": "https://github.com/open-thought/reasoning-gym"}, {"content_hash": "213a5ed7f63f7c2d760362cc121db38401d7fd3000a64c39560f4264ab3f7408", "fetched_at": "2026-08-29T11:38:51.380691+00:00", "kind": "registry_pypi", "missing": false, "url": "https://pypi.org/pypi/reasoning-gym/json"}], "taxonomy_version": 1}, "description": {"kind": "observed", "observed_at": "2026-08-28T04:04:52.816936+00:00", "source": "github"}, "domain": {"confidence": null, "enriched_at": "2026-08-30T04:33:23.697822+00:00", "kind": "inferred", "prompt_version": 1, "sources": [{"content_hash": "28e8b19127429d50be425628b9fffc5bfc936a33b0f821e372ac610125c9c2f6", "fetched_at": "2026-08-28T04:04:52.816936+00:00", "kind": "readme", "missing": false, "url": "https://github.com/open-thought/reasoning-gym"}, {"content_hash": "213a5ed7f63f7c2d760362cc121db38401d7fd3000a64c39560f4264ab3f7408", "fetched_at": "2026-08-29T11:38:51.380691+00:00", "kind": "registry_pypi", "missing": false, "url": "https://pypi.org/pypi/reasoning-gym/json"}], "taxonomy_version": 1}, "enriched": {"inputs": [], "kind": "computed", "method": "enrichment_status"}, "function": {"confidence": null, "enriched_at": "2026-08-30T04:33:23.697822+00:00", "kind": "inferred", "prompt_version": 1, "sources": [{"content_hash": "28e8b19127429d50be425628b9fffc5bfc936a33b0f821e372ac610125c9c2f6", "fetched_at": "2026-08-28T04:04:52.816936+00:00", "kind": "readme", "missing": false, "url": "https://github.com/open-thought/reasoning-gym"}, {"content_hash": "213a5ed7f63f7c2d760362cc121db38401d7fd3000a64c39560f4264ab3f7408", "fetched_at": "2026-08-29T11:38:51.380691+00:00", "kind": "registry_pypi", "missing": false, "url": "https://pypi.org/pypi/reasoning-gym/json"}], "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:52.816936+00:00", "source": "github"}, "language": {"kind": "observed", "observed_at": "2026-08-28T04:04:52.816936+00:00", "source": "github"}, "license": {"kind": "observed", "observed_at": "2026-08-28T04:04:52.816936+00:00", "source": "github"}, "license_family": {"inputs": ["license"], "kind": "computed", "method": "license_family"}, "maturity": {"confidence": null, "enriched_at": "2026-08-30T04:33:23.697822+00:00", "kind": "inferred", "prompt_version": 1, "sources": [{"content_hash": "28e8b19127429d50be425628b9fffc5bfc936a33b0f821e372ac610125c9c2f6", "fetched_at": "2026-08-28T04:04:52.816936+00:00", "kind": "readme", "missing": false, "url": "https://github.com/open-thought/reasoning-gym"}, {"content_hash": "213a5ed7f63f7c2d760362cc121db38401d7fd3000a64c39560f4264ab3f7408", "fetched_at": "2026-08-29T11:38:51.380691+00:00", "kind": "registry_pypi", "missing": false, "url": "https://pypi.org/pypi/reasoning-gym/json"}], "taxonomy_version": 1}, "member_repos": {"kind": "observed", "observed_at": "2026-08-28T04:04:52.816936+00:00", "source": "github"}, "name": {"kind": "observed", "observed_at": "2026-08-28T04:04:52.816936+00:00", "source": "github"}, "platform": {"confidence": null, "enriched_at": "2026-08-30T04:33:23.697822+00:00", "kind": "inferred", "prompt_version": 1, "sources": [{"content_hash": "28e8b19127429d50be425628b9fffc5bfc936a33b0f821e372ac610125c9c2f6", "fetched_at": "2026-08-28T04:04:52.816936+00:00", "kind": "readme", "missing": false, "url": "https://github.com/open-thought/reasoning-gym"}, {"content_hash": "213a5ed7f63f7c2d760362cc121db38401d7fd3000a64c39560f4264ab3f7408", "fetched_at": "2026-08-29T11:38:51.380691+00:00", "kind": "registry_pypi", "missing": false, "url": "https://pypi.org/pypi/reasoning-gym/json"}], "taxonomy_version": 1}, "pushed_at": {"kind": "observed", "observed_at": "2026-08-28T04:04:52.816936+00:00", "source": "github"}, "repo": {"kind": "observed", "observed_at": "2026-08-28T04:04:52.816936+00:00", "source": "github"}, "stars": {"kind": "observed", "observed_at": "2026-08-28T04:04:52.816936+00:00", "source": "github"}, "tags": {"confidence": null, "enriched_at": "2026-08-30T04:33:23.697822+00:00", "kind": "inferred", "prompt_version": 1, "sources": [{"content_hash": "28e8b19127429d50be425628b9fffc5bfc936a33b0f821e372ac610125c9c2f6", "fetched_at": "2026-08-28T04:04:52.816936+00:00", "kind": "readme", "missing": false, "url": "https://github.com/open-thought/reasoning-gym"}, {"content_hash": "213a5ed7f63f7c2d760362cc121db38401d7fd3000a64c39560f4264ab3f7408", "fetched_at": "2026-08-29T11:38:51.380691+00:00", "kind": "registry_pypi", "missing": false, "url": "https://pypi.org/pypi/reasoning-gym/json"}], "taxonomy_version": 1}, "topics": {"kind": "observed", "observed_at": "2026-08-28T04:04:52.816936+00:00", "source": "github"}, "urls": {"kind": "observed", "observed_at": "2026-08-28T04:04:52.816936+00:00", "source": "github"}, "use_cases": {"confidence": null, "enriched_at": "2026-08-30T04:33:23.697822+00:00", "kind": "inferred", "prompt_version": 1, "sources": [{"content_hash": "28e8b19127429d50be425628b9fffc5bfc936a33b0f821e372ac610125c9c2f6", "fetched_at": "2026-08-28T04:04:52.816936+00:00", "kind": "readme", "missing": false, "url": "https://github.com/open-thought/reasoning-gym"}, {"content_hash": "213a5ed7f63f7c2d760362cc121db38401d7fd3000a64c39560f4264ab3f7408", "fetched_at": "2026-08-29T11:38:51.380691+00:00", "kind": "registry_pypi", "missing": false, "url": "https://pypi.org/pypi/reasoning-gym/json"}], "taxonomy_version": 1}, "what_it_is": {"confidence": null, "enriched_at": "2026-08-30T04:33:23.697822+00:00", "kind": "inferred", "prompt_version": 1, "sources": [{"content_hash": "28e8b19127429d50be425628b9fffc5bfc936a33b0f821e372ac610125c9c2f6", "fetched_at": "2026-08-28T04:04:52.816936+00:00", "kind": "readme", "missing": false, "url": "https://github.com/open-thought/reasoning-gym"}, {"content_hash": "213a5ed7f63f7c2d760362cc121db38401d7fd3000a64c39560f4264ab3f7408", "fetched_at": "2026-08-29T11:38:51.380691+00:00", "kind": "registry_pypi", "missing": false, "url": "https://pypi.org/pypi/reasoning-gym/json"}], "taxonomy_version": 1}, "when_to_avoid": {"confidence": null, "enriched_at": "2026-08-30T04:33:23.697822+00:00", "kind": "inferred", "prompt_version": 1, "sources": [{"content_hash": "28e8b19127429d50be425628b9fffc5bfc936a33b0f821e372ac610125c9c2f6", "fetched_at": "2026-08-28T04:04:52.816936+00:00", "kind": "readme", "missing": false, "url": "https://github.com/open-thought/reasoning-gym"}, {"content_hash": "213a5ed7f63f7c2d760362cc121db38401d7fd3000a64c39560f4264ab3f7408", "fetched_at": "2026-08-29T11:38:51.380691+00:00", "kind": "registry_pypi", "missing": false, "url": "https://pypi.org/pypi/reasoning-gym/json"}], "taxonomy_version": 1}, "when_to_choose": {"confidence": null, "enriched_at": "2026-08-30T04:33:23.697822+00:00", "kind": "inferred", "prompt_version": 1, "sources": [{"content_hash": "28e8b19127429d50be425628b9fffc5bfc936a33b0f821e372ac610125c9c2f6", "fetched_at": "2026-08-28T04:04:52.816936+00:00", "kind": "readme", "missing": false, "url": "https://github.com/open-thought/reasoning-gym"}, {"content_hash": "213a5ed7f63f7c2d760362cc121db38401d7fd3000a64c39560f4264ab3f7408", "fetched_at": "2026-08-29T11:38:51.380691+00:00", "kind": "registry_pypi", "missing": false, "url": "https://pypi.org/pypi/reasoning-gym/json"}], "taxonomy_version": 1}}, "score": {"components": {"activity": 77, "longevity": 41, "rhythm": 65}, "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": 587, "days_push": 138, "days_rel": 158, "gap_med": 56.5, "n_releases_24m": 5}, "score": 66, "version": 2}, "staleness": {"enrichment_outdated": false, "low_confidence": false, "scrape_days": 9, "stale_scrape": false}}