{"adoption": {"forks": 168, "observed_at": "2026-09-03T02:15:10.215496+00:00", "stars": 1003}, "canonical_url": "https://ross.abutalabs.com/products/async-rl", "card": {"archived": false, "artifact_type": "library", "description": "Tensorflow + Keras + OpenAI Gym implementation of 1-step Q Learning from  \"Asynchronous Methods for Deep Reinforcement Learning\"", "domain": ["reinforcement-learning", "machine-learning", "deep-learning", "gaming-tools"], "enriched": true, "function": ["machine-learning", "reinforcement-learning", "deep-learning", "benchmarking"], "health_score": 20, "homepage": null, "language": "Python", "license": "MIT", "license_family": "permissive", "maturity": "abandoned", "member_repos": ["coreylynch/async-rl"], "name": "coreylynch/async-rl", "platform": ["python", "cross-platform"], "pushed_at": "2018-03-18T04:55:56+00:00", "repo": "coreylynch/async-rl", "stars": 1003, "tags": ["reinforcement-learning", "q-learning", "a3c", "atari", "openai-gym", "actor-learner", "tensorflow", "keras", "research-code", "linux", "macos"], "topics": [], "urls": [], "use_cases": ["train a deep Q-network on Atari games with async actor-learner threads", "reproduce the asynchronous 1-step Q-learning results from the A3C paper", "learn how to implement deep reinforcement learning with TensorFlow and Keras", "evaluate trained RL agents against OpenAI Gym Atari environments", "run reinforcement learning experiments on low-memory hardware without experience replay", "visualize RL training curves like episode rewards and max Q values in TensorBoard"], "what_it_is": "A TensorFlow + Keras implementation of asynchronous 1-step Q-learning from the DeepMind 'Asynchronous Methods for Deep Reinforcement Learning' (A3C) paper, using OpenAI Gym's Atari environments. It runs multiple actor-learner threads to stabilize training without experience replay, and includes a work-in-progress async advantage actor-critic implementation.", "when_to_avoid": ["you need a maintained library - the last release was 2018 and it targets old TensorFlow/Keras versions", "you want production-grade or modern RL tooling like Stable-Baselines3 or RLlib", "you need A3C/actor-critic fully implemented - that part is marked work-in-progress"], "when_to_choose": ["you want a compact, readable reference implementation of async Q-learning on Atari", "you're studying the A3C paper and want code to follow along with", "you need RL training that fits in a few GB of RAM without experience replay"]}, "data_as_of": "2026-08-30T08:39:29.467469+00:00", "members": [{"path": "/products/async-rl", "repo": "coreylynch/async-rl", "role": "main", "score": 32}], "provenance": {"archived": {"kind": "observed", "observed_at": "2026-09-03T02:15:10.215496+00:00", "source": "github"}, "artifact_type": {"confidence": null, "enriched_at": "2026-08-30T07:13:50.151686+00:00", "kind": "inferred", "prompt_version": 1, "sources": [{"content_hash": "030bd9aae9c14697afb0e2dbdfed116f01d2ef8f5d10d6a7562e2267083c9e05", "fetched_at": "2026-09-03T02:15:10.215496+00:00", "kind": "readme", "missing": false, "url": "https://github.com/coreylynch/async-rl"}], "taxonomy_version": 1}, "description": {"kind": "observed", "observed_at": "2026-09-03T02:15:10.215496+00:00", "source": "github"}, "domain": {"confidence": null, "enriched_at": "2026-08-30T07:13:50.151686+00:00", "kind": "inferred", "prompt_version": 1, "sources": [{"content_hash": "030bd9aae9c14697afb0e2dbdfed116f01d2ef8f5d10d6a7562e2267083c9e05", "fetched_at": "2026-09-03T02:15:10.215496+00:00", "kind": "readme", "missing": false, "url": "https://github.com/coreylynch/async-rl"}], "taxonomy_version": 1}, "enriched": {"inputs": [], "kind": "computed", "method": "enrichment_status"}, "function": {"confidence": null, "enriched_at": "2026-08-30T07:13:50.151686+00:00", "kind": "inferred", "prompt_version": 1, "sources": [{"content_hash": "030bd9aae9c14697afb0e2dbdfed116f01d2ef8f5d10d6a7562e2267083c9e05", "fetched_at": "2026-09-03T02:15:10.215496+00:00", "kind": "readme", "missing": false, "url": "https://github.com/coreylynch/async-rl"}], "taxonomy_version": 1}, "health_score": {"inputs": ["days_since_push", "days_since_release", "archived"], "kind": "computed", "method": "health_v1"}, "homepage": {"kind": "observed", "observed_at": "2026-09-03T02:15:10.215496+00:00", "source": "github"}, "language": {"kind": "observed", "observed_at": "2026-09-03T02:15:10.215496+00:00", "source": "github"}, "license": {"kind": "observed", "observed_at": "2026-09-03T02:15:10.215496+00:00", "source": "github"}, "license_family": {"inputs": ["license"], "kind": "computed", "method": "license_family"}, "maturity": {"confidence": null, "enriched_at": "2026-08-30T07:13:50.151686+00:00", "kind": "inferred", "prompt_version": 1, "sources": [{"content_hash": "030bd9aae9c14697afb0e2dbdfed116f01d2ef8f5d10d6a7562e2267083c9e05", "fetched_at": "2026-09-03T02:15:10.215496+00:00", "kind": "readme", "missing": false, "url": "https://github.com/coreylynch/async-rl"}], "taxonomy_version": 1}, "member_repos": {"kind": "observed", "observed_at": "2026-09-03T02:15:10.215496+00:00", "source": "github"}, "name": {"kind": "observed", "observed_at": "2026-09-03T02:15:10.215496+00:00", "source": "github"}, "platform": {"confidence": null, "enriched_at": "2026-08-30T07:13:50.151686+00:00", "kind": "inferred", "prompt_version": 1, "sources": [{"content_hash": "030bd9aae9c14697afb0e2dbdfed116f01d2ef8f5d10d6a7562e2267083c9e05", "fetched_at": "2026-09-03T02:15:10.215496+00:00", "kind": "readme", "missing": false, "url": "https://github.com/coreylynch/async-rl"}], "taxonomy_version": 1}, "pushed_at": {"kind": "observed", "observed_at": "2026-09-03T02:15:10.215496+00:00", "source": "github"}, "repo": {"kind": "observed", "observed_at": "2026-09-03T02:15:10.215496+00:00", "source": "github"}, "stars": {"kind": "observed", "observed_at": "2026-09-03T02:15:10.215496+00:00", "source": "github"}, "tags": {"confidence": null, "enriched_at": "2026-08-30T07:13:50.151686+00:00", "kind": "inferred", "prompt_version": 1, "sources": [{"content_hash": "030bd9aae9c14697afb0e2dbdfed116f01d2ef8f5d10d6a7562e2267083c9e05", "fetched_at": "2026-09-03T02:15:10.215496+00:00", "kind": "readme", "missing": false, "url": "https://github.com/coreylynch/async-rl"}], "taxonomy_version": 1}, "topics": {"kind": "observed", "observed_at": "2026-09-03T02:15:10.215496+00:00", "source": "github"}, "urls": {"kind": "observed", "observed_at": "2026-09-03T02:15:10.215496+00:00", "source": "github"}, "use_cases": {"confidence": null, "enriched_at": "2026-08-30T07:13:50.151686+00:00", "kind": "inferred", "prompt_version": 1, "sources": [{"content_hash": "030bd9aae9c14697afb0e2dbdfed116f01d2ef8f5d10d6a7562e2267083c9e05", "fetched_at": "2026-09-03T02:15:10.215496+00:00", "kind": "readme", "missing": false, "url": "https://github.com/coreylynch/async-rl"}], "taxonomy_version": 1}, "what_it_is": {"confidence": null, "enriched_at": "2026-08-30T07:13:50.151686+00:00", "kind": "inferred", "prompt_version": 1, "sources": [{"content_hash": "030bd9aae9c14697afb0e2dbdfed116f01d2ef8f5d10d6a7562e2267083c9e05", "fetched_at": "2026-09-03T02:15:10.215496+00:00", "kind": "readme", "missing": false, "url": "https://github.com/coreylynch/async-rl"}], "taxonomy_version": 1}, "when_to_avoid": {"confidence": null, "enriched_at": "2026-08-30T07:13:50.151686+00:00", "kind": "inferred", "prompt_version": 1, "sources": [{"content_hash": "030bd9aae9c14697afb0e2dbdfed116f01d2ef8f5d10d6a7562e2267083c9e05", "fetched_at": "2026-09-03T02:15:10.215496+00:00", "kind": "readme", "missing": false, "url": "https://github.com/coreylynch/async-rl"}], "taxonomy_version": 1}, "when_to_choose": {"confidence": null, "enriched_at": "2026-08-30T07:13:50.151686+00:00", "kind": "inferred", "prompt_version": 1, "sources": [{"content_hash": "030bd9aae9c14697afb0e2dbdfed116f01d2ef8f5d10d6a7562e2267083c9e05", "fetched_at": "2026-09-03T02:15:10.215496+00:00", "kind": "readme", "missing": false, "url": "https://github.com/coreylynch/async-rl"}], "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": 3794, "days_push": 3090, "days_rel": null, "gap_med": null, "n_releases_24m": 0}, "score": 32, "version": 2}, "staleness": {"enrichment_outdated": false, "low_confidence": false, "scrape_days": 3, "stale_scrape": false}}