A firmware archive becomes a patched system image
Point MysticGSI at a stock firmware archive or download URL, and its command-line pipeline extracts partitions, applies porting patches, and creates a Generic System Image. That gives Android tinkerers a way to adapt a manufacturer's system software without starting with an entire Android source build. The English README documents OTA payloads, Samsung archives, and several other vendor formats, plus ext4, EROFS, and F2FS partition inputs.
Our checkout weighed 1,949.6 MB before installation, across 5,598 files and roughly 38,111 source lines. This isn't a small Python script you can assess by reading the entry point. The repository includes native tools, an Apktool JAR, and patch assets. Adopting it means accepting that collection and understanding which parts will alter the firmware you supply. Its practical audience already knows what partitions their target device can mount.
What happened when we ran it
Our sandbox installed commit 34031c8 in 31 seconds, adding 50 packages and occupying 113 MB on disk, then completed the build step in 6 seconds. We cloned it on October 14, 2026, into an unprivileged Debian container with 3 CPUs and 8 GB of RAM, using ghcr.io/astral-sh/uv:python3.12-bookworm. The container had no secrets. Both measured steps succeeded, with no failed-step log to diagnose.
Pip-audit reported 0 known vulnerabilities, but our harness skipped tests because it found no script or target. The scan found 0 CI workflows, no Dockerfile, and no tests directory. The supplied result doesn't identify a firmware archive or device boot check. Read the successful build as a repository result, not evidence that MysticGSI produced a working ROM for a particular phone. That distinction controls how much confidence to place in it.
Host setup includes Java and native image tools
The platform instructions document Linux, macOS, Windows, and NixOS routes. Automatic setup installs system packages and creates a virtual environment on supported hosts, while NixOS uses a development shell. Manual Debian setup names archive utilities, OpenSSL, patch, and Java alongside Python. macOS users need Homebrew and Xcode Command Line Tools. Those are host requirements the short Python dependency command doesn't express by itself.
The 113 MB installed environment we measured sits beside a much larger source checkout, and neither figure is a firmware workspace allowance. Downloaded archives and extracted partition trees need additional storage that our block doesn't quantify. Keep that uncertainty explicit when choosing a machine. The normal local workflow needs a firmware input rather than a hosted API credential, while custom image signing requires your own private key.
Separate partitions require a device that mounts them
--no-merge changes the output layout: instead of merging partitions into system, MysticGSI writes separate system, product, and other applicable images. The README explicitly says the device must mount those separate partitions. This option addresses a real packaging constraint, but it doesn't make a device understand a layout it never supported. rebuild preserves the chosen layout and recreates images from the already prepared trees, rather than repeating the entire porting process.
Our 6-second build result contains no partition-capacity measurement. Issue 31 reports an LG output too large for its system partition, and pull request 37 introduced the separate-image option after a related request. That's useful maintenance evidence. Before choosing a layout, establish how your target handles product and system partitions, then decide whether merged or separate output fits that specific device.
Windows extraction needs case-sensitive local NTFS
Issue 34 concerns Samsung F2FS firmware extraction on Windows and shows a filename collision. The associated fix in pull request 35 enables case sensitivity for extraction directories. The README now requires a local NTFS working directory that allows this setting and recommends current Python for Windows directory permissions. An ordinary case-insensitive workspace can therefore be the wrong place to run this path.
The 31-second installation in our Debian sandbox doesn't validate Windows extraction or macOS host setup. We wouldn't choose MysticGSI for someone who expects every listed archive to work under unchanged desktop defaults. Its issue history shows format-specific repairs, which is encouraging for experienced users and a warning for unattended conversion services. Platform support still involves the operating system's filesystem behavior and the particular firmware package.
Default signing and patch licenses need deliberate choices
MysticGSI signs output with AOSP's AVB test key unless you provide --avb-key. That default is convenient for experimentation, but a distribution expecting a private signing identity must supply one. The README also exposes --no-debloat, which retains apps that patch sets would otherwise remove. Before adapting a stock image, decide whether those removals match your goal rather than letting the default define your resulting system.
The 50 Python packages in our run cover only part of what this repository carries. The NOTICE file says vendor binaries under patches/ aren't covered by Apache licensing, and identifies included TrebleDroid material with separate licensing concerns. Pip-audit's result doesn't resolve redistribution rights for those files. A developer publishing generated firmware needs to examine the included assets as well as the project's top-level Apache-2.0 license.
Recent fixes justify experimentation, not a boot guarantee
The last push was October 10, 2026, and GitHub listed 222 stars with 1 open issue or PR. That open item is pull request 38, a proposed LG debloat change whose author reports setup getting stuck on a phone. It is unmerged work, so it shouldn't become a claim that the current default has that defect. Recent closed extraction issues and merged partition work show continuing maintenance despite no latest release.
Our 1,949.6 MB checkout makes MysticGSI a deliberate local tool choice. Use it when you need stock-firmware conversion and can inspect the resulting layout and try it on suitable hardware. ErfanGSIs provides another stock-firmware conversion route, while ponces/treble_aosp builds an AOSP GSI from source. Keep your original firmware and recovery method available before deciding that any generated image is ready for your everyday phone.

