Local Dream: Stable Diffusion on Android with Snapdragon NPU Acceleration
Run Stable Diffusion on Android Devices with Snapdragon NPU acceleration. Also supports CPU/GPU inference.
At a glance
- What is it?
- Local Dream is an open source Android app that runs Stable Diffusion locally, using Qualcomm's NPU on supported Snapdragon chips. Here is what the repository documents, where the boundaries are, and how to get it running.
- Who is it for?
- Local Dream is for Android users with a Snapdragon Hexagon V68 or newer chip who want Stable Diffusion inference on the phone itself; SDXL additionally requires Snapdragon 8 Gen 3 or newer. If you have an older or non-Snapdragon device, expect SD1.5 on CPU or GPU only, and check the Guide Site's model list before assuming a given checkpoint will load.
- Can I use it commercially?
- Check first. The repository uses a licence we do not classify automatically, so read its LICENSE file before any commercial use.
- Is it still maintained?
- Yes. The repository last received commits 7 days ago.
- What is it written in?
- Mainly Kotlin, according to GitHub's language statistics.
Answers come from the project's GitHub data, last synced on September 15, 2026, and from our analysis. They are not legal advice.
DEEP OPEN-SOURCE ANALYSIS
What Local Dream Solves for Android Users
Running Stable Diffusion normally means a desktop GPU or a cloud service. Local Dream takes the other path: an Android application, written mostly in Kotlin, that performs inference on the device. The README frames the project around two model families, SD1.5 and SDXL, and states that SD2.1 is no longer maintained because of poor quality and limited popularity. That is a deliberate narrowing rather than a general-purpose diffusion runner.
The audience is narrow too. The README says SD1.5 models run on Snapdragon NPUs with Hexagon V68 architecture or newer, and SDXL models need Snapdragon 8 Gen 3 and newer devices. Outside that scope, the fallback is SD1.5 on CPU or GPU. So the project is not a universal Android diffusion app; it is one that pays off on recent Qualcomm hardware and degrades to slower inference elsewhere. The repository topics list txt2img, img2img, inpainting, and stable-diffusion-android, which describes the feature surface as much as the platform.
How the NPU, CPU and GPU Paths Fit Together
The credits section doubles as an architecture summary. Qualcomm's QNN SDK handles NPU model execution. Alibaba's MNN handles CPU model execution. xtensor-stack covers tensor operations and scheduling, mlc-ai/tokenizers-cpp does text tokenization, and facebook/zstd handles model compression. A cpp-httplib HTTP server is also listed, which implies a local server component inside the app rather than a purely in-process pipeline.
On the Android side, the README credits square/okhttp as the HTTP client, coil-kt/coil for image loading, MoyuruAizawa/Cropify for cropping, and AOSP, Material Design and Jetpack Compose for the UI. Models come from CompVis/stable-diffusion and other creators, with Real-ESRGAN and UltraSharpV2 for upscaling and bhky/opennsfw2 for NSFW content filtering. The practical consequence is that inference is split across two native backends selected by hardware, with a shared tokenizer and tensor layer above them. The README does not document memory ceilings, model size limits, or how a checkpoint is converted for QNN, so anyone planning to bring a custom model should treat that as unverified territory.
Installing Local Dream from the Play Store or an APK
The repository lists a Play Store homepage, so the simplest install is the published app. The README says the project is now open sourced and completely free. For a build from source, the top-level layout is a standard Gradle Android project: settings.gradle.kts, build.gradle.kts, gradle.properties, the gradlew wrapper scripts, and an app/ module. The README does not spell out build requirements or give a build command, so the repository layout is the only guide here.
Once installed, the app needs a model before it can generate anything. The README points to a Guide Site for all guides and documentation, and does not include model download steps or file paths in the repository text. For day-to-day use, the flow is the one the topics imply: pick a model, enter a prompt, and generate. The README does not document the in-app screens, so the Guide Site is the place to look for prompt syntax, img2img inputs, or inpainting masks. There is also a Telegram group linked for discussion and testing help.
Hardware Boundaries You Cannot Configure Around
The clearest limitation is the chip requirement. NPU acceleration for SD1.5 needs Hexagon V68 or newer. SDXL needs Snapdragon 8 Gen 3 or newer. If your device falls outside those lines, the README is explicit: you can only run SD1.5 on CPU or GPU. That is not a settings toggle, it is a hardware ceiling, and it means a mid-range phone will run the same app with a different and slower backend.
SD2.1 support is gone by choice, so checkpoints from that family are out. The README also does not document rollback, model removal, or storage management, which matters because diffusion checkpoints are large files. The repository has no benchmark numbers, no supported-device list beyond the chip generations, and no memory guidance. If you are choosing a phone for this app, the README gives you exactly two data points: Hexagon V68 for SD1.5 NPU, and Snapdragon 8 Gen 3 for SDXL. Anything beyond that is inference on your part, not documentation.
Local Dream Compared with Server-Side Diffusion
The obvious alternative is running Stable Diffusion on a PC or a hosted service and treating the phone as a client. That approach removes every hardware constraint in the README: no Hexagon generation check, no Snapdragon 8 Gen 3 requirement for SDXL, and no CPU-only fallback for SD1.5. It also lets you use any checkpoint or LoRA the server supports, and you are not limited by phone storage.
The trade-off runs the other way. Local Dream performs inference on the device, so prompts and generated images do not leave the phone, and it works without a network round trip. A server setup needs a machine that stays on, or a paid API, and it introduces latency and a dependency on connectivity. The README also lists bhky/opennsfw2 for NSFW content filtering, so the local pipeline includes a filter component, which is worth knowing if you expected unfiltered output. Neither approach is strictly better; they differ on where the compute lives and what hardware you already own.
Maintenance, Releases and Licence Status
The last push to the repository was on 2026-09-11, and the most recent release listed is v2.8.1 from 2026-07-12, following v2.8.0 on 2026-06-29 and v2.7.0 on 2026-06-15. The cadence across those three releases is roughly two weeks apart, and the repository is not archived. The README asks for sponsorship to fund additional models, new features and bug fixes, which suggests the author treats model coverage as ongoing work rather than a finished set.
The licence is the open question. The repository metadata reports NOASSERTION, meaning the LICENSE file could not be matched to a standard identifier. The README says the project is open sourced and completely free, but that statement is not a licence grant, and the credits list dependencies under their own terms, including Qualcomm's QNN SDK and Alibaba's MNN. If you plan to redistribute the app or ship it inside a product, read the LICENSE file and the upstream terms yourself; nothing in the README settles that.
Editorial conclusion
Local Dream is for Android users with a Snapdragon Hexagon V68 or newer chip who want Stable Diffusion inference on the phone itself; SDXL additionally requires Snapdragon 8 Gen 3 or newer. If you have an older or non-Snapdragon device, expect SD1.5 on CPU or GPU only, and check the Guide Site's model list before assuming a given checkpoint will load. Verify first that your chip falls in the documented NPU scope and that the app's model download step matches the SD version you intend to use.
Frequently asked questions
How do you use Local Dream?
Install the app from the Play Store link in the repository or build it from source, then load an SD1.5 or SDXL model before generating. The README says all guides and documentation have moved to the Guide Site, so prompt and model instructions live there rather than in the repository.
What is a Local Dream alternative for running Stable Diffusion?
Running Stable Diffusion on a PC or a hosted service and using the phone as a client is the main alternative. That removes the Snapdragon NPU requirements in the README, but it moves inference off the device and usually requires a machine that stays on or a paid service.
Which Snapdragon chips support NPU acceleration in Local Dream?
The README states that SD1.5 models run on Snapdragon NPUs with Hexagon V68 architecture or newer, and SDXL models need Snapdragon 8 Gen 3 and newer devices. Outside that scope, only SD1.5 on CPU or GPU is supported.
Does Local Dream support SD2.1 models?
No. The README states that SD2.1 is no longer maintained due to poor quality and limited popularity, and that the project currently focuses on SD1.5 and SDXL models.
Is Local Dream free and open source?
The README says the project is now open sourced and completely free. The repository metadata reports the licence as NOASSERTION, so check the LICENSE file directly if you need to know the exact terms.
Community notes