{"adoption": {"forks": 142, "observed_at": "2026-08-28T04:09:16.006634+00:00", "stars": 5360}, "canonical_url": "https://ross.abutalabs.com/products/xtool", "card": {"archived": false, "artifact_type": "cli-tool", "description": "Cross-platform Xcode replacement. Build and deploy iOS apps with SwiftPM on Linux, Windows, macOS.", "domain": ["developer-tools", "mobile-development", "cross-platform"], "enriched": true, "function": ["build-tool", "developer-tools", "cli", "sdk"], "health_score": 98, "homepage": "https://xtool.sh", "language": "Swift", "license": "MIT", "license_family": "permissive", "maturity": "active", "member_repos": ["xtool-org/xtool"], "name": "xtool-org/xtool", "platform": ["windows", "cli"], "pushed_at": "2026-08-23T23:24:46+00:00", "repo": "xtool-org/xtool", "stars": 5360, "tags": ["ios", "swift", "swift-package-manager", "xcode-replacement", "app-signing", "apple-developer-services", "swiftui", "linux", "macos"], "topics": ["ios", "linux", "swift", "swift-package-manager", "windows", "xcode"], "urls": [], "use_cases": ["build iOS apps on Linux without a Mac", "develop and run iOS apps from Windows or WSL", "sign and install ipa files to an iPhone from the command line", "interact with Apple Developer Services programmatically", "create a new iOS SwiftPM project from the terminal", "launch and uninstall apps on connected iOS devices"], "what_it_is": "xtool is a cross-platform command-line tool that replicates core Xcode functionality, letting developers build SwiftPM packages into iOS apps and deploy them to devices from Linux, Windows, and macOS. It also provides an XKit Swift library for programmatically interacting with Apple Developer Services and iOS devices.", "when_to_avoid": ["you need full Xcode features like Interface Builder, simulators, or Instruments", "you rely on complex Xcode project settings or CocoaPods/Carthage workflows", "you need App Store submission tooling with full Xcode integration", "your project depends on Apple frameworks unavailable outside macOS"], "when_to_choose": ["you want to build iOS apps without owning a Mac or paying for Xcode", "your team develops on Linux or Windows and targets iOS", "you prefer SwiftPM-based projects over Xcode project files", "you need scripted, CI-friendly iOS build and device deployment"]}, "data_as_of": "2026-08-30T08:39:29.467469+00:00", "members": [{"path": "/products/xtool", "repo": "xtool-org/xtool", "role": "main", "score": 83}], "provenance": {"archived": {"kind": "observed", "observed_at": "2026-08-28T04:09:16.006634+00:00", "source": "github"}, "artifact_type": {"confidence": null, "enriched_at": "2026-08-29T17:58:46.006611+00:00", "kind": "inferred", "prompt_version": 1, "sources": [{"content_hash": "a5ad69e621ea705d353b7b8afe89020eef782d2a5827a97b73022c349f5f42bc", "fetched_at": "2026-08-28T04:09:16.006634+00:00", "kind": "readme", "missing": false, "url": "https://github.com/xtool-org/xtool"}, {"content_hash": "c7c5660776aba8a3c453811135e6f3b7f19d6d211397e2829da08ea15f84ba27", "fetched_at": "2026-08-29T08:53:00.757203+00:00", "kind": "homepage", "missing": false, "url": "https://xtool.sh"}], "taxonomy_version": 1}, "description": {"kind": "observed", "observed_at": "2026-08-28T04:09:16.006634+00:00", "source": "github"}, "domain": {"confidence": null, "enriched_at": "2026-08-29T17:58:46.006611+00:00", "kind": "inferred", "prompt_version": 1, "sources": [{"content_hash": "a5ad69e621ea705d353b7b8afe89020eef782d2a5827a97b73022c349f5f42bc", "fetched_at": "2026-08-28T04:09:16.006634+00:00", "kind": "readme", "missing": false, "url": "https://github.com/xtool-org/xtool"}, {"content_hash": "c7c5660776aba8a3c453811135e6f3b7f19d6d211397e2829da08ea15f84ba27", "fetched_at": "2026-08-29T08:53:00.757203+00:00", "kind": "homepage", "missing": false, "url": "https://xtool.sh"}], "taxonomy_version": 1}, "enriched": {"inputs": [], "kind": "computed", "method": "enrichment_status"}, "function": {"confidence": null, "enriched_at": "2026-08-29T17:58:46.006611+00:00", "kind": "inferred", "prompt_version": 1, "sources": [{"content_hash": "a5ad69e621ea705d353b7b8afe89020eef782d2a5827a97b73022c349f5f42bc", "fetched_at": "2026-08-28T04:09:16.006634+00:00", "kind": "readme", "missing": false, "url": "https://github.com/xtool-org/xtool"}, {"content_hash": "c7c5660776aba8a3c453811135e6f3b7f19d6d211397e2829da08ea15f84ba27", "fetched_at": "2026-08-29T08:53:00.757203+00:00", "kind": "homepage", "missing": false, "url": "https://xtool.sh"}], "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:16.006634+00:00", "source": "github"}, "language": {"kind": "observed", "observed_at": "2026-08-28T04:09:16.006634+00:00", "source": "github"}, "license": {"kind": "observed", "observed_at": "2026-08-28T04:09:16.006634+00:00", "source": "github"}, "license_family": {"inputs": ["license"], "kind": "computed", "method": "license_family"}, "maturity": {"confidence": null, "enriched_at": "2026-08-29T17:58:46.006611+00:00", "kind": "inferred", "prompt_version": 1, "sources": [{"content_hash": "a5ad69e621ea705d353b7b8afe89020eef782d2a5827a97b73022c349f5f42bc", "fetched_at": "2026-08-28T04:09:16.006634+00:00", "kind": "readme", "missing": false, "url": "https://github.com/xtool-org/xtool"}, {"content_hash": "c7c5660776aba8a3c453811135e6f3b7f19d6d211397e2829da08ea15f84ba27", "fetched_at": "2026-08-29T08:53:00.757203+00:00", "kind": "homepage", "missing": false, "url": "https://xtool.sh"}], "taxonomy_version": 1}, "member_repos": {"kind": "observed", "observed_at": "2026-08-28T04:09:16.006634+00:00", "source": "github"}, "name": {"kind": "observed", "observed_at": "2026-08-28T04:09:16.006634+00:00", "source": "github"}, "platform": {"confidence": null, "enriched_at": "2026-08-29T17:58:46.006611+00:00", "kind": "inferred", "prompt_version": 1, "sources": [{"content_hash": "a5ad69e621ea705d353b7b8afe89020eef782d2a5827a97b73022c349f5f42bc", "fetched_at": "2026-08-28T04:09:16.006634+00:00", "kind": "readme", "missing": false, "url": "https://github.com/xtool-org/xtool"}, {"content_hash": "c7c5660776aba8a3c453811135e6f3b7f19d6d211397e2829da08ea15f84ba27", "fetched_at": "2026-08-29T08:53:00.757203+00:00", "kind": "homepage", "missing": false, "url": "https://xtool.sh"}], "taxonomy_version": 1}, "pushed_at": {"kind": "observed", "observed_at": "2026-08-28T04:09:16.006634+00:00", "source": "github"}, "repo": {"kind": "observed", "observed_at": "2026-08-28T04:09:16.006634+00:00", "source": "github"}, "stars": {"kind": "observed", "observed_at": "2026-08-28T04:09:16.006634+00:00", "source": "github"}, "tags": {"confidence": null, "enriched_at": "2026-08-29T17:58:46.006611+00:00", "kind": "inferred", "prompt_version": 1, "sources": [{"content_hash": "a5ad69e621ea705d353b7b8afe89020eef782d2a5827a97b73022c349f5f42bc", "fetched_at": "2026-08-28T04:09:16.006634+00:00", "kind": "readme", "missing": false, "url": "https://github.com/xtool-org/xtool"}, {"content_hash": "c7c5660776aba8a3c453811135e6f3b7f19d6d211397e2829da08ea15f84ba27", "fetched_at": "2026-08-29T08:53:00.757203+00:00", "kind": "homepage", "missing": false, "url": "https://xtool.sh"}], "taxonomy_version": 1}, "topics": {"kind": "observed", "observed_at": "2026-08-28T04:09:16.006634+00:00", "source": "github"}, "urls": {"kind": "observed", "observed_at": "2026-08-28T04:09:16.006634+00:00", "source": "github"}, "use_cases": {"confidence": null, "enriched_at": "2026-08-29T17:58:46.006611+00:00", "kind": "inferred", "prompt_version": 1, "sources": [{"content_hash": "a5ad69e621ea705d353b7b8afe89020eef782d2a5827a97b73022c349f5f42bc", "fetched_at": "2026-08-28T04:09:16.006634+00:00", "kind": "readme", "missing": false, "url": "https://github.com/xtool-org/xtool"}, {"content_hash": "c7c5660776aba8a3c453811135e6f3b7f19d6d211397e2829da08ea15f84ba27", "fetched_at": "2026-08-29T08:53:00.757203+00:00", "kind": "homepage", "missing": false, "url": "https://xtool.sh"}], "taxonomy_version": 1}, "what_it_is": {"confidence": null, "enriched_at": "2026-08-29T17:58:46.006611+00:00", "kind": "inferred", "prompt_version": 1, "sources": [{"content_hash": "a5ad69e621ea705d353b7b8afe89020eef782d2a5827a97b73022c349f5f42bc", "fetched_at": "2026-08-28T04:09:16.006634+00:00", "kind": "readme", "missing": false, "url": "https://github.com/xtool-org/xtool"}, {"content_hash": "c7c5660776aba8a3c453811135e6f3b7f19d6d211397e2829da08ea15f84ba27", "fetched_at": "2026-08-29T08:53:00.757203+00:00", "kind": "homepage", "missing": false, "url": "https://xtool.sh"}], "taxonomy_version": 1}, "when_to_avoid": {"confidence": null, "enriched_at": "2026-08-29T17:58:46.006611+00:00", "kind": "inferred", "prompt_version": 1, "sources": [{"content_hash": "a5ad69e621ea705d353b7b8afe89020eef782d2a5827a97b73022c349f5f42bc", "fetched_at": "2026-08-28T04:09:16.006634+00:00", "kind": "readme", "missing": false, "url": "https://github.com/xtool-org/xtool"}, {"content_hash": "c7c5660776aba8a3c453811135e6f3b7f19d6d211397e2829da08ea15f84ba27", "fetched_at": "2026-08-29T08:53:00.757203+00:00", "kind": "homepage", "missing": false, "url": "https://xtool.sh"}], "taxonomy_version": 1}, "when_to_choose": {"confidence": null, "enriched_at": "2026-08-29T17:58:46.006611+00:00", "kind": "inferred", "prompt_version": 1, "sources": [{"content_hash": "a5ad69e621ea705d353b7b8afe89020eef782d2a5827a97b73022c349f5f42bc", "fetched_at": "2026-08-28T04:09:16.006634+00:00", "kind": "readme", "missing": false, "url": "https://github.com/xtool-org/xtool"}, {"content_hash": "c7c5660776aba8a3c453811135e6f3b7f19d6d211397e2829da08ea15f84ba27", "fetched_at": "2026-08-29T08:53:00.757203+00:00", "kind": "homepage", "missing": false, "url": "https://xtool.sh"}], "taxonomy_version": 1}}, "score": {"components": {"activity": 99, "longevity": 46, "rhythm": 84}, "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": 654, "days_push": 10, "days_rel": 109, "gap_med": 1.5, "n_releases_24m": 21}, "score": 83, "version": 2}, "staleness": {"enrichment_outdated": false, "low_confidence": false, "scrape_days": 9, "stale_scrape": false}}