{"adoption": {"forks": 1257, "observed_at": "2026-08-28T04:09:40.768474+00:00", "stars": 6231}, "canonical_url": "https://ross.abutalabs.com/products/solopi", "card": {"archived": false, "artifact_type": "application", "description": "SoloPi 自动化测试工具", "domain": ["mobile-development", "testing", "developer-tools"], "enriched": true, "function": ["testing", "e2e-testing", "workflow-automation", "monitoring", "cli", "agent-framework"], "health_score": 99, "homepage": null, "language": "Java", "license": "Apache-2.0", "license_family": "permissive", "maturity": "active", "member_repos": ["alipay/SoloPi"], "name": "alipay/SoloPi", "platform": ["cli", "jvm"], "pushed_at": "2026-08-19T15:50:34+00:00", "repo": "alipay/SoloPi", "stars": 6231, "tags": ["mobile-testing", "ui-testing", "record-and-replay", "adb", "performance-testing", "harmonyos", "ai-agent-harness", "test-automation", "automation", "android"], "topics": ["mobile-testing", "ui-testing", "adb", "android", "automation", "automated-testing", "test-automation", "arkts", "harmony"], "urls": [], "use_cases": ["record and replay android ui test cases", "automated mobile ui testing without app code changes", "measure app startup time and performance metrics on a real device", "run unattended mobile tests in ci pipelines", "let an ai agent drive android device testing safely", "simulate poor cpu memory or network conditions during testing", "convert recorded tests to appium or macaca scripts"], "what_it_is": "SoloPi is an open-source wireless, non-intrusive mobile automation testing tool for Android (with a HarmonyOS branch), offering record-and-replay of UI operations, performance diagnostics, and one-device-controlling-many testing. It now includes an agent harness (solopi-skill and solopi-harness-cli) that lets AI agents propose actions while a deterministic judge validates results with evidence for CI pipelines.", "when_to_avoid": ["you need iOS automation - the open-source execution kernel currently targets Android and HarmonyOS only", "you need a pure cloud-based device farm rather than an on-device tool", "you need web browser testing rather than mobile app testing"], "when_to_choose": ["you need non-intrusive android ui automation on real devices without instrumenting the app", "you want record-and-replay testing plus performance profiling in one tool", "you want ai-agent-driven mobile testing with safety checks and evidence-based verdicts"]}, "data_as_of": "2026-08-30T08:39:29.467469+00:00", "members": [{"path": "/products/solopi", "repo": "alipay/SoloPi", "role": "main", "score": 98}], "provenance": {"archived": {"kind": "observed", "observed_at": "2026-08-28T04:09:40.768474+00:00", "source": "github"}, "artifact_type": {"confidence": null, "enriched_at": "2026-08-29T17:47:13.113366+00:00", "kind": "inferred", "prompt_version": 1, "sources": [{"content_hash": "ce0465b2c78163508cdb657ef763581355b072d1599862b07d76cc29011341d2", "fetched_at": "2026-08-28T04:09:40.768474+00:00", "kind": "readme", "missing": false, "url": "https://github.com/alipay/SoloPi"}], "taxonomy_version": 1}, "description": {"kind": "observed", "observed_at": "2026-08-28T04:09:40.768474+00:00", "source": "github"}, "domain": {"confidence": null, "enriched_at": "2026-08-29T17:47:13.113366+00:00", "kind": "inferred", "prompt_version": 1, "sources": [{"content_hash": "ce0465b2c78163508cdb657ef763581355b072d1599862b07d76cc29011341d2", "fetched_at": "2026-08-28T04:09:40.768474+00:00", "kind": "readme", "missing": false, "url": "https://github.com/alipay/SoloPi"}], "taxonomy_version": 1}, "enriched": {"inputs": [], "kind": "computed", "method": "enrichment_status"}, "function": {"confidence": null, "enriched_at": "2026-08-29T17:47:13.113366+00:00", "kind": "inferred", "prompt_version": 1, "sources": [{"content_hash": "ce0465b2c78163508cdb657ef763581355b072d1599862b07d76cc29011341d2", "fetched_at": "2026-08-28T04:09:40.768474+00:00", "kind": "readme", "missing": false, "url": "https://github.com/alipay/SoloPi"}], "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:09:40.768474+00:00", "source": "github"}, "language": {"kind": "observed", "observed_at": "2026-08-28T04:09:40.768474+00:00", "source": "github"}, "license": {"kind": "observed", "observed_at": "2026-08-28T04:09:40.768474+00:00", "source": "github"}, "license_family": {"inputs": ["license"], "kind": "computed", "method": "license_family"}, "maturity": {"confidence": null, "enriched_at": "2026-08-29T17:47:13.113366+00:00", "kind": "inferred", "prompt_version": 1, "sources": [{"content_hash": "ce0465b2c78163508cdb657ef763581355b072d1599862b07d76cc29011341d2", "fetched_at": "2026-08-28T04:09:40.768474+00:00", "kind": "readme", "missing": false, "url": "https://github.com/alipay/SoloPi"}], "taxonomy_version": 1}, "member_repos": {"kind": "observed", "observed_at": "2026-08-28T04:09:40.768474+00:00", "source": "github"}, "name": {"kind": "observed", "observed_at": "2026-08-28T04:09:40.768474+00:00", "source": "github"}, "platform": {"confidence": null, "enriched_at": "2026-08-29T17:47:13.113366+00:00", "kind": "inferred", "prompt_version": 1, "sources": [{"content_hash": "ce0465b2c78163508cdb657ef763581355b072d1599862b07d76cc29011341d2", "fetched_at": "2026-08-28T04:09:40.768474+00:00", "kind": "readme", "missing": false, "url": "https://github.com/alipay/SoloPi"}], "taxonomy_version": 1}, "pushed_at": {"kind": "observed", "observed_at": "2026-08-28T04:09:40.768474+00:00", "source": "github"}, "repo": {"kind": "observed", "observed_at": "2026-08-28T04:09:40.768474+00:00", "source": "github"}, "stars": {"kind": "observed", "observed_at": "2026-08-28T04:09:40.768474+00:00", "source": "github"}, "tags": {"confidence": null, "enriched_at": "2026-08-29T17:47:13.113366+00:00", "kind": "inferred", "prompt_version": 1, "sources": [{"content_hash": "ce0465b2c78163508cdb657ef763581355b072d1599862b07d76cc29011341d2", "fetched_at": "2026-08-28T04:09:40.768474+00:00", "kind": "readme", "missing": false, "url": "https://github.com/alipay/SoloPi"}], "taxonomy_version": 1}, "topics": {"kind": "observed", "observed_at": "2026-08-28T04:09:40.768474+00:00", "source": "github"}, "urls": {"kind": "observed", "observed_at": "2026-08-28T04:09:40.768474+00:00", "source": "github"}, "use_cases": {"confidence": null, "enriched_at": "2026-08-29T17:47:13.113366+00:00", "kind": "inferred", "prompt_version": 1, "sources": [{"content_hash": "ce0465b2c78163508cdb657ef763581355b072d1599862b07d76cc29011341d2", "fetched_at": "2026-08-28T04:09:40.768474+00:00", "kind": "readme", "missing": false, "url": "https://github.com/alipay/SoloPi"}], "taxonomy_version": 1}, "what_it_is": {"confidence": null, "enriched_at": "2026-08-29T17:47:13.113366+00:00", "kind": "inferred", "prompt_version": 1, "sources": [{"content_hash": "ce0465b2c78163508cdb657ef763581355b072d1599862b07d76cc29011341d2", "fetched_at": "2026-08-28T04:09:40.768474+00:00", "kind": "readme", "missing": false, "url": "https://github.com/alipay/SoloPi"}], "taxonomy_version": 1}, "when_to_avoid": {"confidence": null, "enriched_at": "2026-08-29T17:47:13.113366+00:00", "kind": "inferred", "prompt_version": 1, "sources": [{"content_hash": "ce0465b2c78163508cdb657ef763581355b072d1599862b07d76cc29011341d2", "fetched_at": "2026-08-28T04:09:40.768474+00:00", "kind": "readme", "missing": false, "url": "https://github.com/alipay/SoloPi"}], "taxonomy_version": 1}, "when_to_choose": {"confidence": null, "enriched_at": "2026-08-29T17:47:13.113366+00:00", "kind": "inferred", "prompt_version": 1, "sources": [{"content_hash": "ce0465b2c78163508cdb657ef763581355b072d1599862b07d76cc29011341d2", "fetched_at": "2026-08-28T04:09:40.768474+00:00", "kind": "readme", "missing": false, "url": "https://github.com/alipay/SoloPi"}], "taxonomy_version": 1}}, "score": {"components": {"activity": 98, "longevity": 100, "rhythm": 98}, "computed_at": "2026-09-02T17:46:02.011165+00:00", "flags": [], "formula": "round(0.45*activity + 0.35*rhythm + 0.20*longevity); archived -> min(score, 10)", "inputs": {"age_days": 2729, "days_push": 14, "days_rel": 14, "gap_med": 1, "n_releases_24m": 2}, "score": 98, "version": 2}, "staleness": {"enrichment_outdated": false, "low_confidence": false, "scrape_days": 9, "stale_scrape": false}}