{"adoption": {"forks": 424, "observed_at": "2026-08-28T04:06:42.034938+00:00", "stars": 2375}, "canonical_url": "https://ross.abutalabs.com/products/ppo-pytorch", "card": {"archived": false, "artifact_type": "learning-resource", "description": "Minimal implementation of clipped objective Proximal Policy Optimization (PPO) in PyTorch", "domain": ["reinforcement-learning", "machine-learning", "tutorials"], "enriched": true, "function": ["machine-learning", "reinforcement-learning", "deep-learning"], "health_score": 20, "homepage": null, "language": "Python", "license": "MIT", "license_family": "permissive", "maturity": "stable", "member_repos": ["nikhilbarhate99/PPO-PyTorch"], "name": "nikhilbarhate99/PPO-PyTorch", "platform": ["python", "cross-platform"], "pushed_at": "2024-07-09T21:11:04+00:00", "repo": "nikhilbarhate99/PPO-PyTorch", "stars": 2375, "tags": ["ppo", "pytorch", "policy-gradient", "openai-gym", "educational", "minimal-implementation"], "topics": ["pytorch-implmention", "pytorch", "pytorch-tutorial", "proximal-policy-optimization", "reinforcement-learning-algorithms", "deep-reinforcement-learning", "ppo", "policy-gradient", "ppo-pytorch", "deep-learning", "reinforcement-learning"], "urls": [], "use_cases": ["learn how the PPO reinforcement learning algorithm works", "train a PPO agent on OpenAI gym environments", "understand a minimal policy gradient implementation in PyTorch", "test pretrained PPO policies and generate gifs of agent behavior", "plot training reward curves from csv logs", "run reinforcement learning experiments in Google Colab"], "what_it_is": "A minimal, single-threaded PyTorch implementation of Proximal Policy Optimization (PPO) with clipped objective for OpenAI gym environments. It is designed primarily as an educational resource for beginners learning reinforcement learning, with training, testing, plotting, and GIF-making utilities.", "when_to_avoid": ["you need a production-grade, highly optimized PPO with parallel workers and GAE", "you require state-of-the-art PPO implementation details for complex environments", "you need a maintained library with an API rather than a reference codebase"], "when_to_choose": ["you are a beginner wanting readable, minimal PPO code to study", "you need a simple baseline PPO implementation for standard gym environments", "you want a Colab notebook to experiment with PPO without local setup"]}, "data_as_of": "2026-08-30T08:39:29.467469+00:00", "members": [{"path": "/products/ppo-pytorch", "repo": "nikhilbarhate99/PPO-PyTorch", "role": "main", "score": 32}], "provenance": {"archived": {"kind": "observed", "observed_at": "2026-08-28T04:06:42.034938+00:00", "source": "github"}, "artifact_type": {"confidence": null, "enriched_at": "2026-08-30T02:35:03.662417+00:00", "kind": "inferred", "prompt_version": 1, "sources": [{"content_hash": "fe73ec2e43c27fbe5be838313b0ed36f6aba08e5dc14bc44e389856666f3d796", "fetched_at": "2026-08-28T04:06:42.034938+00:00", "kind": "readme", "missing": false, "url": "https://github.com/nikhilbarhate99/PPO-PyTorch"}], "taxonomy_version": 1}, "description": {"kind": "observed", "observed_at": "2026-08-28T04:06:42.034938+00:00", "source": "github"}, "domain": {"confidence": null, "enriched_at": "2026-08-30T02:35:03.662417+00:00", "kind": "inferred", "prompt_version": 1, "sources": [{"content_hash": "fe73ec2e43c27fbe5be838313b0ed36f6aba08e5dc14bc44e389856666f3d796", "fetched_at": "2026-08-28T04:06:42.034938+00:00", "kind": "readme", "missing": false, "url": "https://github.com/nikhilbarhate99/PPO-PyTorch"}], "taxonomy_version": 1}, "enriched": {"inputs": [], "kind": "computed", "method": "enrichment_status"}, "function": {"confidence": null, "enriched_at": "2026-08-30T02:35:03.662417+00:00", "kind": "inferred", "prompt_version": 1, "sources": [{"content_hash": "fe73ec2e43c27fbe5be838313b0ed36f6aba08e5dc14bc44e389856666f3d796", "fetched_at": "2026-08-28T04:06:42.034938+00:00", "kind": "readme", "missing": false, "url": "https://github.com/nikhilbarhate99/PPO-PyTorch"}], "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:42.034938+00:00", "source": "github"}, "language": {"kind": "observed", "observed_at": "2026-08-28T04:06:42.034938+00:00", "source": "github"}, "license": {"kind": "observed", "observed_at": "2026-08-28T04:06:42.034938+00:00", "source": "github"}, "license_family": {"inputs": ["license"], "kind": "computed", "method": "license_family"}, "maturity": {"confidence": null, "enriched_at": "2026-08-30T02:35:03.662417+00:00", "kind": "inferred", "prompt_version": 1, "sources": [{"content_hash": "fe73ec2e43c27fbe5be838313b0ed36f6aba08e5dc14bc44e389856666f3d796", "fetched_at": "2026-08-28T04:06:42.034938+00:00", "kind": "readme", "missing": false, "url": "https://github.com/nikhilbarhate99/PPO-PyTorch"}], "taxonomy_version": 1}, "member_repos": {"kind": "observed", "observed_at": "2026-08-28T04:06:42.034938+00:00", "source": "github"}, "name": {"kind": "observed", "observed_at": "2026-08-28T04:06:42.034938+00:00", "source": "github"}, "platform": {"confidence": null, "enriched_at": "2026-08-30T02:35:03.662417+00:00", "kind": "inferred", "prompt_version": 1, "sources": [{"content_hash": "fe73ec2e43c27fbe5be838313b0ed36f6aba08e5dc14bc44e389856666f3d796", "fetched_at": "2026-08-28T04:06:42.034938+00:00", "kind": "readme", "missing": false, "url": "https://github.com/nikhilbarhate99/PPO-PyTorch"}], "taxonomy_version": 1}, "pushed_at": {"kind": "observed", "observed_at": "2026-08-28T04:06:42.034938+00:00", "source": "github"}, "repo": {"kind": "observed", "observed_at": "2026-08-28T04:06:42.034938+00:00", "source": "github"}, "stars": {"kind": "observed", "observed_at": "2026-08-28T04:06:42.034938+00:00", "source": "github"}, "tags": {"confidence": null, "enriched_at": "2026-08-30T02:35:03.662417+00:00", "kind": "inferred", "prompt_version": 1, "sources": [{"content_hash": "fe73ec2e43c27fbe5be838313b0ed36f6aba08e5dc14bc44e389856666f3d796", "fetched_at": "2026-08-28T04:06:42.034938+00:00", "kind": "readme", "missing": false, "url": "https://github.com/nikhilbarhate99/PPO-PyTorch"}], "taxonomy_version": 1}, "topics": {"kind": "observed", "observed_at": "2026-08-28T04:06:42.034938+00:00", "source": "github"}, "urls": {"kind": "observed", "observed_at": "2026-08-28T04:06:42.034938+00:00", "source": "github"}, "use_cases": {"confidence": null, "enriched_at": "2026-08-30T02:35:03.662417+00:00", "kind": "inferred", "prompt_version": 1, "sources": [{"content_hash": "fe73ec2e43c27fbe5be838313b0ed36f6aba08e5dc14bc44e389856666f3d796", "fetched_at": "2026-08-28T04:06:42.034938+00:00", "kind": "readme", "missing": false, "url": "https://github.com/nikhilbarhate99/PPO-PyTorch"}], "taxonomy_version": 1}, "what_it_is": {"confidence": null, "enriched_at": "2026-08-30T02:35:03.662417+00:00", "kind": "inferred", "prompt_version": 1, "sources": [{"content_hash": "fe73ec2e43c27fbe5be838313b0ed36f6aba08e5dc14bc44e389856666f3d796", "fetched_at": "2026-08-28T04:06:42.034938+00:00", "kind": "readme", "missing": false, "url": "https://github.com/nikhilbarhate99/PPO-PyTorch"}], "taxonomy_version": 1}, "when_to_avoid": {"confidence": null, "enriched_at": "2026-08-30T02:35:03.662417+00:00", "kind": "inferred", "prompt_version": 1, "sources": [{"content_hash": "fe73ec2e43c27fbe5be838313b0ed36f6aba08e5dc14bc44e389856666f3d796", "fetched_at": "2026-08-28T04:06:42.034938+00:00", "kind": "readme", "missing": false, "url": "https://github.com/nikhilbarhate99/PPO-PyTorch"}], "taxonomy_version": 1}, "when_to_choose": {"confidence": null, "enriched_at": "2026-08-30T02:35:03.662417+00:00", "kind": "inferred", "prompt_version": 1, "sources": [{"content_hash": "fe73ec2e43c27fbe5be838313b0ed36f6aba08e5dc14bc44e389856666f3d796", "fetched_at": "2026-08-28T04:06:42.034938+00:00", "kind": "readme", "missing": false, "url": "https://github.com/nikhilbarhate99/PPO-PyTorch"}], "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": 2897, "days_push": 785, "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}}