{"adoption": {"forks": 166, "observed_at": "2026-08-28T04:06:13.615965+00:00", "stars": 2101}, "canonical_url": "https://ross.abutalabs.com/products/projectsandcastle", "card": {"archived": false, "artifact_type": "cli-tool", "description": "Supporting tools for Android/Linux on the iPhone", "domain": ["embedded-systems", "operating-systems", "hardware", "android-tools"], "enriched": true, "function": ["developer-tools", "embedded"], "health_score": 20, "homepage": null, "language": "C", "license": "GPL-2.0", "license_family": "copyleft", "maturity": "maintenance", "member_repos": ["corellium/projectsandcastle"], "name": "corellium/projectsandcastle", "platform": ["cli", "c"], "pushed_at": "2023-03-25T17:51:00+00:00", "repo": "corellium/projectsandcastle", "stars": 2101, "tags": ["android-on-iphone", "pongoos", "kernel-loading", "bluetooth-firmware", "touchscreen-daemon", "syscfg", "buildroot", "porting", "loader", "linux", "macos"], "topics": [], "urls": [], "use_cases": ["run Linux on an iPhone", "boot a custom Android kernel on iPhone hardware", "extract syscfg configuration data from an iPhone", "extract Bluetooth firmware from device binaries", "get touchscreen working under Linux on iPhone", "rebuild Android native libraries for 16kB page size"], "what_it_is": "A collection of supporting tools for running Android/Linux on the iPhone, including a kernel loader via pongoOS, a syscfg partition extractor, a touchscreen daemon, and a Bluetooth firmware extraction tool. It is part of Corellium's Sandcastle project, which also provides a custom Linux kernel fork and Buildroot-based ramdisk.", "when_to_avoid": ["you want a polished, user-friendly way to install Android on an iPhone as an end user", "you need support for modern iPhone models or recent iOS versions", "you are not comfortable with low-level device hacking and kernel builds"], "when_to_choose": ["you want to port or run Linux/Android on iPhone hardware", "you need low-level utilities like kernel loading or firmware extraction for Apple devices", "you are building a custom Linux distribution for iPhones with Buildroot"]}, "data_as_of": "2026-08-30T08:39:29.467469+00:00", "members": [{"path": "/products/projectsandcastle", "repo": "corellium/projectsandcastle", "role": "main", "score": 32}], "provenance": {"archived": {"kind": "observed", "observed_at": "2026-08-28T04:06:13.615965+00:00", "source": "github"}, "artifact_type": {"confidence": null, "enriched_at": "2026-08-30T02:54:17.513632+00:00", "kind": "inferred", "prompt_version": 1, "sources": [{"content_hash": "26062c8a9071c8566fea06d1db24ae302303ac728b7afa3effe886f6ea53e22a", "fetched_at": "2026-08-28T04:06:13.615965+00:00", "kind": "readme", "missing": false, "url": "https://github.com/corellium/projectsandcastle"}], "taxonomy_version": 1}, "description": {"kind": "observed", "observed_at": "2026-08-28T04:06:13.615965+00:00", "source": "github"}, "domain": {"confidence": null, "enriched_at": "2026-08-30T02:54:17.513632+00:00", "kind": "inferred", "prompt_version": 1, "sources": [{"content_hash": "26062c8a9071c8566fea06d1db24ae302303ac728b7afa3effe886f6ea53e22a", "fetched_at": "2026-08-28T04:06:13.615965+00:00", "kind": "readme", "missing": false, "url": "https://github.com/corellium/projectsandcastle"}], "taxonomy_version": 1}, "enriched": {"inputs": [], "kind": "computed", "method": "enrichment_status"}, "function": {"confidence": null, "enriched_at": "2026-08-30T02:54:17.513632+00:00", "kind": "inferred", "prompt_version": 1, "sources": [{"content_hash": "26062c8a9071c8566fea06d1db24ae302303ac728b7afa3effe886f6ea53e22a", "fetched_at": "2026-08-28T04:06:13.615965+00:00", "kind": "readme", "missing": false, "url": "https://github.com/corellium/projectsandcastle"}], "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:13.615965+00:00", "source": "github"}, "language": {"kind": "observed", "observed_at": "2026-08-28T04:06:13.615965+00:00", "source": "github"}, "license": {"kind": "observed", "observed_at": "2026-08-28T04:06:13.615965+00:00", "source": "github"}, "license_family": {"inputs": ["license"], "kind": "computed", "method": "license_family"}, "maturity": {"confidence": null, "enriched_at": "2026-08-30T02:54:17.513632+00:00", "kind": "inferred", "prompt_version": 1, "sources": [{"content_hash": "26062c8a9071c8566fea06d1db24ae302303ac728b7afa3effe886f6ea53e22a", "fetched_at": "2026-08-28T04:06:13.615965+00:00", "kind": "readme", "missing": false, "url": "https://github.com/corellium/projectsandcastle"}], "taxonomy_version": 1}, "member_repos": {"kind": "observed", "observed_at": "2026-08-28T04:06:13.615965+00:00", "source": "github"}, "name": {"kind": "observed", "observed_at": "2026-08-28T04:06:13.615965+00:00", "source": "github"}, "platform": {"confidence": null, "enriched_at": "2026-08-30T02:54:17.513632+00:00", "kind": "inferred", "prompt_version": 1, "sources": [{"content_hash": "26062c8a9071c8566fea06d1db24ae302303ac728b7afa3effe886f6ea53e22a", "fetched_at": "2026-08-28T04:06:13.615965+00:00", "kind": "readme", "missing": false, "url": "https://github.com/corellium/projectsandcastle"}], "taxonomy_version": 1}, "pushed_at": {"kind": "observed", "observed_at": "2026-08-28T04:06:13.615965+00:00", "source": "github"}, "repo": {"kind": "observed", "observed_at": "2026-08-28T04:06:13.615965+00:00", "source": "github"}, "stars": {"kind": "observed", "observed_at": "2026-08-28T04:06:13.615965+00:00", "source": "github"}, "tags": {"confidence": null, "enriched_at": "2026-08-30T02:54:17.513632+00:00", "kind": "inferred", "prompt_version": 1, "sources": [{"content_hash": "26062c8a9071c8566fea06d1db24ae302303ac728b7afa3effe886f6ea53e22a", "fetched_at": "2026-08-28T04:06:13.615965+00:00", "kind": "readme", "missing": false, "url": "https://github.com/corellium/projectsandcastle"}], "taxonomy_version": 1}, "topics": {"kind": "observed", "observed_at": "2026-08-28T04:06:13.615965+00:00", "source": "github"}, "urls": {"kind": "observed", "observed_at": "2026-08-28T04:06:13.615965+00:00", "source": "github"}, "use_cases": {"confidence": null, "enriched_at": "2026-08-30T02:54:17.513632+00:00", "kind": "inferred", "prompt_version": 1, "sources": [{"content_hash": "26062c8a9071c8566fea06d1db24ae302303ac728b7afa3effe886f6ea53e22a", "fetched_at": "2026-08-28T04:06:13.615965+00:00", "kind": "readme", "missing": false, "url": "https://github.com/corellium/projectsandcastle"}], "taxonomy_version": 1}, "what_it_is": {"confidence": null, "enriched_at": "2026-08-30T02:54:17.513632+00:00", "kind": "inferred", "prompt_version": 1, "sources": [{"content_hash": "26062c8a9071c8566fea06d1db24ae302303ac728b7afa3effe886f6ea53e22a", "fetched_at": "2026-08-28T04:06:13.615965+00:00", "kind": "readme", "missing": false, "url": "https://github.com/corellium/projectsandcastle"}], "taxonomy_version": 1}, "when_to_avoid": {"confidence": null, "enriched_at": "2026-08-30T02:54:17.513632+00:00", "kind": "inferred", "prompt_version": 1, "sources": [{"content_hash": "26062c8a9071c8566fea06d1db24ae302303ac728b7afa3effe886f6ea53e22a", "fetched_at": "2026-08-28T04:06:13.615965+00:00", "kind": "readme", "missing": false, "url": "https://github.com/corellium/projectsandcastle"}], "taxonomy_version": 1}, "when_to_choose": {"confidence": null, "enriched_at": "2026-08-30T02:54:17.513632+00:00", "kind": "inferred", "prompt_version": 1, "sources": [{"content_hash": "26062c8a9071c8566fea06d1db24ae302303ac728b7afa3effe886f6ea53e22a", "fetched_at": "2026-08-28T04:06:13.615965+00:00", "kind": "readme", "missing": false, "url": "https://github.com/corellium/projectsandcastle"}], "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": 2373, "days_push": 1257, "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}}