{"adoption": {"forks": 183, "observed_at": "2026-08-28T04:05:21.719980+00:00", "stars": 1682}, "canonical_url": "https://ross.abutalabs.com/products/pyroki", "card": {"archived": false, "artifact_type": "library", "description": "A Modular Toolkit for Robot Kinematic Optimization", "domain": ["robotics", "gpu-computing"], "enriched": true, "function": ["simulation", "math", "machine-learning"], "health_score": 65, "homepage": "https://pyroki-toolkit.github.io/", "language": "Python", "license": "MIT", "license_family": "permissive", "maturity": "active", "member_repos": ["chungmin99/pyroki"], "name": "chungmin99/pyroki", "platform": ["python", "cross-platform"], "pushed_at": "2026-04-01T00:13:52+00:00", "repo": "chungmin99/pyroki", "stars": 1682, "tags": ["robot-kinematics", "inverse-kinematics", "jax", "urdf", "trajectory-optimization", "motion-retargeting", "collision-avoidance", "differentiable-programming", "algorithms", "gpu"], "topics": [], "urls": [], "use_cases": ["solve inverse kinematics for a robot arm from a URDF", "optimize robot trajectories with collision avoidance", "retarget human hand or body motion to robot hands and humanoids", "compute differentiable forward kinematics in a JAX pipeline", "optimize end-effector pose and manipulability objectives", "generate collision capsules from robot meshes automatically"], "what_it_is": "PyRoki is a modular Python toolkit for robot kinematic optimization built on JAX, providing differentiable forward kinematics from URDFs, collision primitives, and composable costs. It unifies inverse kinematics, trajectory optimization, and motion retargeting via a Levenberg-Marquardt solver with manifold optimization and hard constraints, running on CPU, GPU, and TPU.", "when_to_avoid": ["you need sampling-based motion planning with graphs or trees", "you require closed-loop kinematic chains or parallel manipulators", "you need fast mesh-level collision checking in collision-heavy scenarios"], "when_to_choose": ["you need differentiable or batched kinematics and IK in Python with GPU/TPU support", "you want composable costs for IK, trajectory optimization, or motion retargeting in one framework", "your robot uses revolute, continuous, prismatic, or fixed joints in a kinematic tree"]}, "data_as_of": "2026-08-30T08:39:29.467469+00:00", "members": [{"path": "/products/pyroki", "repo": "chungmin99/pyroki", "role": "main", "score": 53}], "provenance": {"archived": {"kind": "observed", "observed_at": "2026-08-28T04:05:21.719980+00:00", "source": "github"}, "artifact_type": {"confidence": null, "enriched_at": "2026-08-30T03:41:21.747197+00:00", "kind": "inferred", "prompt_version": 1, "sources": [{"content_hash": "902b2b2ea934556fecfccf5388c7e927826ffa3ab8d4881576cf5e520cf5552f", "fetched_at": "2026-08-28T04:05:21.719980+00:00", "kind": "readme", "missing": false, "url": "https://github.com/chungmin99/pyroki"}, {"content_hash": "8a610126af31ddee08340e97342444534eb8a563d419b1ce7c9f5e940edfeef7", "fetched_at": "2026-08-29T11:14:16.741882+00:00", "kind": "homepage", "missing": false, "url": "https://pyroki-toolkit.github.io/"}], "taxonomy_version": 1}, "description": {"kind": "observed", "observed_at": "2026-08-28T04:05:21.719980+00:00", "source": "github"}, "domain": {"confidence": null, "enriched_at": "2026-08-30T03:41:21.747197+00:00", "kind": "inferred", "prompt_version": 1, "sources": [{"content_hash": "902b2b2ea934556fecfccf5388c7e927826ffa3ab8d4881576cf5e520cf5552f", "fetched_at": "2026-08-28T04:05:21.719980+00:00", "kind": "readme", "missing": false, "url": "https://github.com/chungmin99/pyroki"}, {"content_hash": "8a610126af31ddee08340e97342444534eb8a563d419b1ce7c9f5e940edfeef7", "fetched_at": "2026-08-29T11:14:16.741882+00:00", "kind": "homepage", "missing": false, "url": "https://pyroki-toolkit.github.io/"}], "taxonomy_version": 1}, "enriched": {"inputs": [], "kind": "computed", "method": "enrichment_status"}, "function": {"confidence": null, "enriched_at": "2026-08-30T03:41:21.747197+00:00", "kind": "inferred", "prompt_version": 1, "sources": [{"content_hash": "902b2b2ea934556fecfccf5388c7e927826ffa3ab8d4881576cf5e520cf5552f", "fetched_at": "2026-08-28T04:05:21.719980+00:00", "kind": "readme", "missing": false, "url": "https://github.com/chungmin99/pyroki"}, {"content_hash": "8a610126af31ddee08340e97342444534eb8a563d419b1ce7c9f5e940edfeef7", "fetched_at": "2026-08-29T11:14:16.741882+00:00", "kind": "homepage", "missing": false, "url": "https://pyroki-toolkit.github.io/"}], "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:05:21.719980+00:00", "source": "github"}, "language": {"kind": "observed", "observed_at": "2026-08-28T04:05:21.719980+00:00", "source": "github"}, "license": {"kind": "observed", "observed_at": "2026-08-28T04:05:21.719980+00:00", "source": "github"}, "license_family": {"inputs": ["license"], "kind": "computed", "method": "license_family"}, "maturity": {"confidence": null, "enriched_at": "2026-08-30T03:41:21.747197+00:00", "kind": "inferred", "prompt_version": 1, "sources": [{"content_hash": "902b2b2ea934556fecfccf5388c7e927826ffa3ab8d4881576cf5e520cf5552f", "fetched_at": "2026-08-28T04:05:21.719980+00:00", "kind": "readme", "missing": false, "url": "https://github.com/chungmin99/pyroki"}, {"content_hash": "8a610126af31ddee08340e97342444534eb8a563d419b1ce7c9f5e940edfeef7", "fetched_at": "2026-08-29T11:14:16.741882+00:00", "kind": "homepage", "missing": false, "url": "https://pyroki-toolkit.github.io/"}], "taxonomy_version": 1}, "member_repos": {"kind": "observed", "observed_at": "2026-08-28T04:05:21.719980+00:00", "source": "github"}, "name": {"kind": "observed", "observed_at": "2026-08-28T04:05:21.719980+00:00", "source": "github"}, "platform": {"confidence": null, "enriched_at": "2026-08-30T03:41:21.747197+00:00", "kind": "inferred", "prompt_version": 1, "sources": [{"content_hash": "902b2b2ea934556fecfccf5388c7e927826ffa3ab8d4881576cf5e520cf5552f", "fetched_at": "2026-08-28T04:05:21.719980+00:00", "kind": "readme", "missing": false, "url": "https://github.com/chungmin99/pyroki"}, {"content_hash": "8a610126af31ddee08340e97342444534eb8a563d419b1ce7c9f5e940edfeef7", "fetched_at": "2026-08-29T11:14:16.741882+00:00", "kind": "homepage", "missing": false, "url": "https://pyroki-toolkit.github.io/"}], "taxonomy_version": 1}, "pushed_at": {"kind": "observed", "observed_at": "2026-08-28T04:05:21.719980+00:00", "source": "github"}, "repo": {"kind": "observed", "observed_at": "2026-08-28T04:05:21.719980+00:00", "source": "github"}, "stars": {"kind": "observed", "observed_at": "2026-08-28T04:05:21.719980+00:00", "source": "github"}, "tags": {"confidence": null, "enriched_at": "2026-08-30T03:41:21.747197+00:00", "kind": "inferred", "prompt_version": 1, "sources": [{"content_hash": "902b2b2ea934556fecfccf5388c7e927826ffa3ab8d4881576cf5e520cf5552f", "fetched_at": "2026-08-28T04:05:21.719980+00:00", "kind": "readme", "missing": false, "url": "https://github.com/chungmin99/pyroki"}, {"content_hash": "8a610126af31ddee08340e97342444534eb8a563d419b1ce7c9f5e940edfeef7", "fetched_at": "2026-08-29T11:14:16.741882+00:00", "kind": "homepage", "missing": false, "url": "https://pyroki-toolkit.github.io/"}], "taxonomy_version": 1}, "topics": {"kind": "observed", "observed_at": "2026-08-28T04:05:21.719980+00:00", "source": "github"}, "urls": {"kind": "observed", "observed_at": "2026-08-28T04:05:21.719980+00:00", "source": "github"}, "use_cases": {"confidence": null, "enriched_at": "2026-08-30T03:41:21.747197+00:00", "kind": "inferred", "prompt_version": 1, "sources": [{"content_hash": "902b2b2ea934556fecfccf5388c7e927826ffa3ab8d4881576cf5e520cf5552f", "fetched_at": "2026-08-28T04:05:21.719980+00:00", "kind": "readme", "missing": false, "url": "https://github.com/chungmin99/pyroki"}, {"content_hash": "8a610126af31ddee08340e97342444534eb8a563d419b1ce7c9f5e940edfeef7", "fetched_at": "2026-08-29T11:14:16.741882+00:00", "kind": "homepage", "missing": false, "url": "https://pyroki-toolkit.github.io/"}], "taxonomy_version": 1}, "what_it_is": {"confidence": null, "enriched_at": "2026-08-30T03:41:21.747197+00:00", "kind": "inferred", "prompt_version": 1, "sources": [{"content_hash": "902b2b2ea934556fecfccf5388c7e927826ffa3ab8d4881576cf5e520cf5552f", "fetched_at": "2026-08-28T04:05:21.719980+00:00", "kind": "readme", "missing": false, "url": "https://github.com/chungmin99/pyroki"}, {"content_hash": "8a610126af31ddee08340e97342444534eb8a563d419b1ce7c9f5e940edfeef7", "fetched_at": "2026-08-29T11:14:16.741882+00:00", "kind": "homepage", "missing": false, "url": "https://pyroki-toolkit.github.io/"}], "taxonomy_version": 1}, "when_to_avoid": {"confidence": null, "enriched_at": "2026-08-30T03:41:21.747197+00:00", "kind": "inferred", "prompt_version": 1, "sources": [{"content_hash": "902b2b2ea934556fecfccf5388c7e927826ffa3ab8d4881576cf5e520cf5552f", "fetched_at": "2026-08-28T04:05:21.719980+00:00", "kind": "readme", "missing": false, "url": "https://github.com/chungmin99/pyroki"}, {"content_hash": "8a610126af31ddee08340e97342444534eb8a563d419b1ce7c9f5e940edfeef7", "fetched_at": "2026-08-29T11:14:16.741882+00:00", "kind": "homepage", "missing": false, "url": "https://pyroki-toolkit.github.io/"}], "taxonomy_version": 1}, "when_to_choose": {"confidence": null, "enriched_at": "2026-08-30T03:41:21.747197+00:00", "kind": "inferred", "prompt_version": 1, "sources": [{"content_hash": "902b2b2ea934556fecfccf5388c7e927826ffa3ab8d4881576cf5e520cf5552f", "fetched_at": "2026-08-28T04:05:21.719980+00:00", "kind": "readme", "missing": false, "url": "https://github.com/chungmin99/pyroki"}, {"content_hash": "8a610126af31ddee08340e97342444534eb8a563d419b1ce7c9f5e940edfeef7", "fetched_at": "2026-08-29T11:14:16.741882+00:00", "kind": "homepage", "missing": false, "url": "https://pyroki-toolkit.github.io/"}], "taxonomy_version": 1}}, "score": {"components": {"activity": 75, "longevity": 34, "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": 484, "days_push": 155, "days_rel": null, "gap_med": null, "n_releases_24m": 0}, "score": 53, "version": 2}, "staleness": {"enrichment_outdated": false, "low_confidence": false, "scrape_days": 9, "stale_scrape": false}}