Anime image generation that runs entirely on your phone's NPU.
No root, no cloud, no account, no ads. Free and non-commercial.
HexAnima runs the Anima diffusion model and fine-tunes of it on the Hexagon NPU of Snapdragon 8 Gen 1 / 8+ Gen 1 phones. The diffusion transformer is executed by custom HMX kernels; the text encoder and the sampler run on the CPU. A 512x768 picture takes about 7 s with the 2B models and 12 s with the 2.9B models (4 steps, Xiaomi 12T Pro).
It can also run MOSS-Image 5B (OpenMOSS, Apache-2.0), a larger model that you prompt with plain sentences. Its text encoder (Qwen3.5-9B), the transformer and the decoder all run on the NPU: about 30 s for 512x768 and about 80 s for 1 Mpx; any size with sides that are multiples of 16 (up to 6144 patches). It is an optional ~14 GB download.
And Qwen-Image 2.1 Turbo (Qwen team, with the 4-step Lightning adapter by LightX2V): it draws legible text inside pictures, follows long prompts, and edits your photos by a prompt ("make the sky a sunset"). The text encoder (Qwen3-VL-8B), its vision tower, the 7B transformer and the VAE all run on the NPU. About 40 s for 512x768, about 40-50 s for an edit (768x512 from a 512x512 photo); the weights (~14 GB, optional download) are streamed from storage for every picture. Non-commercial use only (Qwen Research License), see below. And Mage-Flow-Edit-Turbo (Microsoft, MIT): a 4B model that draws and edits photos by a prompt in about 12 seconds a picture (a text encoder, a ViT, a 12-block transformer and the VAE, all on the NPU). The weights are about 8.7 GB (optional download) and are streamed from storage for every picture.
- Fully offline after the models are downloaded; nothing leaves the phone.
- Four MiaoMiao models (2B fp16 and 2.9B q8) with a one-tap model manager: resumable downloads, sha256 verification, delete to free space.
- Size picker with portrait / landscape / square presets (all multiples of 16) and custom sizes, seed, batch of several pictures, stop button.
- History with favourites, trash, multi-select, share and save; settings are stored in the PNG, so any picture can be reopened with its prompt and seed.
- Prompt tag suggestions (Danbooru tags), templates, quality-tag prefix (Anima models only; MOSS-Image takes plain sentences and gets no tags).
- Photo editing with Qwen-Image or Mage-Flow: pick a photo, write what to change; the result keeps the photo's shape (Qwen reduces the photo to about 0.4 Mpx).
- Live preview: after every step the picture-to-be shows on the main screen (the current x0 estimate of the latent turned into colours by a small fitted linear map, no VAE run, a few milliseconds).
- Qwen-Image takes up to three pictures at once ("the girl from picture 1 stands in front of the cafe from picture 2"): add them under the photo, each is reduced so that all of them fit the attention (about 0.3 Mpx each for two, 0.2 Mpx for three).
- Your own LoRA for MOSS-Image: pick a
.safetensorsfile, the app checks it at once (layer names, shapes, rank, data type) and says why if it does not fit; a strength slider (0-2). The LoRA is folded with the built-in 4-step adapter on the phone (about 15 s the first time) and never leaves the device. - Your own LoRA for the Anima models too (kohya, diffusers/PEFT, LyCORIS LoKr and LoHa; 28 or 40 blocks): the app checks the file header, folds the LoRA into the block weights when the model loads (the first picture with a new LoRA takes 10-15 s longer, then it is cached) and keeps it as 8-bit blocks. The text-encoder part of a LoRA is not applied. The folding code is based on a pull request by GrimmDev-Glitch.
- Low-memory mode for the Anima models (on by default below ~9.5 GB of RAM, in Settings): the DiT blocks are streamed from storage through two buffers instead of being pinned in RAM; about 2.5 GB less RAM for the 2.9B models, +1 s per 512x768 picture on a 12 GB phone.
- Live RAM meter, thermal / battery warnings, the model unloads itself when idle.
- Light / dark / system themes, notifications, 13 languages (English, Russian, Chinese, Japanese, Korean, Spanish, Portuguese, German, French, Indonesian, Turkish, Vietnamese, Hindi).
Straight from the phone, 512x768, 4 steps, no upscaling, no editing (screenshots of the app; the date and battery are cropped out).
3D Harem LH3D 1.1 (2B, ~7 s) · RealSkin Anima 1.3 (2B, ~7 s) · Harem 2.9B BETA 1.1 (~12 s) · RealSkin 2.9B 1.0 (~12 s)
Four different prompts, 768x1024, 4 steps, about 60 s each, straight from the phone (same method as above, nothing retouched). Text in the picture is a strength of MOSS-Image but not a guarantee: short words usually come out right, longer or secondary text (shop-front boards, book covers, small signs) is often garbled. The pictures below are the first and only attempt for each prompt, bad text left as it is.
"neon sign that says OPEN LATE" (the sign is right, the boards are not) · "title at the top says THE LAST LIBRARY" (title right, subtitle garbled) · "board that says HEXANIMA" (right) · "the words GAME OVER in pixel font" (readable, with small glitches)
Your own LoRA. Pick a .safetensors file made for MOSS-Image; the app checks it at once (layer names, shapes, rank, data type) and tells you why if it does not fit (a FLUX or SDXL LoRA, a wrong shape, a rank above 128, a text-encoder-only file...). A strength slider goes from 0 to 2.
The LoRA is folded with the built-in 4-step adapter on the phone (about 15 s the first time for a new LoRA or strength, then cached) and never leaves the device. Left: without a LoRA, right: with a third-party style LoRA from Civitai (same prompt, seed and size; LoRAs stay under their authors' licenses).
Limits worth knowing: MOSS-Image only does text-to-image (no editing or image input), it needs about 14 GB of storage and was tested on a 12 GB phone only, and its weights are streamed from storage for every picture, so a picture takes 30 s at 512x768 and about 80 s at 1 Mpx.
Text-to-image: four prompts, three portrait 512x768 and one landscape 768x512, 4 steps, 40-50 s each, straight from the phone (nothing retouched, the first attempt for each prompt). The text in the picture is read from the prompt: the sign says HEXANIMA, the chalkboard Fresh Coffee $3, the neon sign OPEN.
Editing a photo by a prompt. The same four pictures after one edit each (the picture is the photo, the sentence is the whole instruction; an edit takes about a minute): "make her hair pink and change the sign text to "HELLO"" · "make it a sunny summer day: no snow, green trees and a blue sky" · "turn him into a smiling man wearing a red knitted hat" · "change the neon sign text from "OPEN" to "CLOSED"". Everything not mentioned stays as it was.
Limits worth knowing: about 14 GB of storage, tested on a 12 GB phone only, weights are streamed from storage for every picture (RAM use stays near 1.2 GB), the photo for an edit is reduced to about 0.4 Mpx, and non-commercial use only (Qwen Research License).
Text-to-image: four prompts at 576x768, 4 steps, about 12 s each, straight from the phone (nothing retouched, the first attempt for each prompt): a red fox in a snowy forest, a latte by a rainy window, an anime girl with silver hair under an umbrella, an anime village with a torii gate.
Editing a photo by a prompt. The same four pictures after one edit each (about 21 s at this size): "turn the scene into a snowy night with a full moon" · "make it a sunny morning outside the window" · "change her hair to pink and make it a bright daytime scene" · "turn it into winter, covered in snow, with no cherry blossoms". The first and third edits did what they were asked, the second and fourth only partly (the light got warmer, snow lay on the gate but the blossoms stayed): short, concrete instructions work best.
Limits worth knowing: about 8.7 GB of storage, tested on a 12 GB phone only, pictures up to 6144 patches (for example 1536x1024) and edits up to 3200 patches (1024x768), the MIT license.
- A phone with Snapdragon 8 Gen 1 or 8+ Gen 1 (SM8450 / SM8475, Hexagon V69): the tested target.
- Snapdragon 8 Elite (SM8750, Hexagon V79, e.g. Galaxy S25): not supported. Versions 1.2.0 and 1.2.1 had experimental support, withdrawn in 1.2.2: on a tester's Galaxy S25 the NPU matrix unit is sometimes silently unavailable after an interrupted run (garbage pictures) and large sizes come out as noise. A proper port is not planned in the short term.
- Other chips (Snapdragon 8 Gen 2 / 8 Gen 3, SM8550 / SM8650) are not supported yet; the app tells you if yours is not.
- Android 10 or newer, 64-bit. No root needed.
- RAM: tested on a 12 GB phone (about 10.9 GB usable). Phones with 8 GB are supported through the low-memory mode (reported crash: issue #1); the 2.9B models need the most. Storage: 1.2 GB for the shared files plus 3.6-4.2 GB per Anima model; MOSS-Image needs about 14 GB (and ~300 MB more while a user LoRA is in use) and Qwen-Image about 14 GB. MOSS-Image and Qwen-Image were tested on a 12 GB phone only.
- Download
HexAnima-<version>.apkfrom the Releases page and install it (allow installs from your browser or file manager). - Open the app and pick a model in Models. The files are downloaded from Hugging Face (
ayanoby/anima-npu-packs) the first time. - Type a prompt (Danbooru-style tags work best), press Generate.
MOSS-Image, Qwen-Image and Mage-Flow are separate downloads in the same manager (each lives in its own Hugging Face repository with its own LICENSE and NOTICE.md).
Tips: the models are distilled for 4 steps and use no negative prompt; see Info in the app for the other notes.
HexAnima is an independent, unofficial project. It is not affiliated with, endorsed by, sponsored by or otherwise connected to CircleStone Labs, NVIDIA, Qualcomm, Alibaba (Qwen), Microsoft, LightX2V, OpenMOSS, Unsloth, Black Forest Labs or the authors of the models it can download.
"Anima" and "Cosmos" refer to third-party models, "NVIDIA" and "Qualcomm", "Snapdragon", "Hexagon" are trademarks of their respective owners.
They are used only to describe what the software works with.
The models (MiaoMiao Harem / 3D Harem / RealSkin by MIAOKA, based on Anima by CircleStone Labs and NVIDIA Cosmos) stay under their authors' licenses: non-commercial use only.
The models are made with a turbo (distillation) LoRA merged in: Anima Turbo v1.1 Lora by somedoby for the 2B models and TURBO for ANIMA (V4-29B) by n_Arno for the 2.9B models (both on Civitai). See THIRD_PARTY.md.
MOSS-Image, Qwen3.5-9B, the rapid-moss 4-step adapter (darask0, on lodestones' 8-step DMD), the FLUX.2 small decoder (Black Forest Labs) and the Unsloth GGUF quantisations are all under the Apache License 2.0; the MOSS-Image pack holds converted copies (the changes are listed in its NOTICE.md, also shown in the app under Info -> Licenses).
Built with Qwen. Qwen-Image 2.1 Turbo and the Lightning v2-RL adapter (LightX2V; its repository declares no license of its own, so it is treated as a derivative of the Qwen Materials) are under the Qwen Research License Agreement: non-commercial use only, no redistribution of the model under another name, and the licence text travels with the files. Qwen3-VL-8B (Qwen team) and the Unsloth GGUF quantisations are Apache-2.0. The Qwen-Image pack holds converted copies (changes in its NOTICE.md, also in the app under Info -> Licenses). Qwen is a trademark of its owner, used only to name the model.
Mage-Flow-Edit-Turbo and Mage-VAE (Microsoft) are under the MIT License; the Qwen3-VL-4B text encoder and vision tower that ship with it are Apache-2.0. The Mage-Flow pack holds converted copies (changes in its NOTICE.md, also in the app under Info -> Licenses).
LoRA files that you load yourself stay under their authors' licenses; check them before you share pictures made with them.
A model author can ask for removal of their model from the download catalog: open a discussion in the Community tab of the model packs repository.
The APK includes the Qualcomm AI Engine Direct (QNN) runtime libraries (libQnnHtp*.so, libQnnSystem.so) under the Qualcomm AI Stack License.
They are redistributed only in object code and only as part of the app, never standalone; the license text and the third-party notices are in app/assets/licenses/ and in the app (Info -> Licenses).
Qualcomm may terminate that license at any time, in which case distribution of the APK stops.
app/: the Android app (plain Java, built without Gradle byapp/build.sh), packagecom.hexanima.npu. Languages inapp/assets/lang/.phone/: the on-device server (animad.cpp) andanima.sh, which the app runs.chainrun/,hexagon/mega/: helper processes and the Hexagon HMX kernels (seeTHIRD_PARTY.mdfor the Qualcomm files you have to supply).patches/: patches for stable-diffusion.cpp (NPU/TE/VAE hooks, serve mode);android/build_sd.shbuilds it.export/,tools/: model conversion (make_pack.pybuilds the downloadable packs), translations (build_lang.py,lang/),stage_jnilibs.sh.docs/PITFALLS.md: engineering notes on the NPU work.
You need the Android SDK (build-tools 34, platform 34), Docker, the Qualcomm QNN SDK (download it from Qualcomm and accept its license) and, for the DSP kernels, the Hexagon SDK.
Paths in the scripts default to ~/anima-npu/sdk/.... The order is: build the native helpers (phone/build.sh, chainrun/build.sh, hexagon/mega/build*.sh, android/build_sd.sh),
copy them with tools/stage_jnilibs.sh, then app/build.sh produces and installs hexanima.apk.
The model packs are built by tools/make_pack.py and downloaded by the app from a Hugging Face repository (set in Main.DEFAULT_BASE).
The HexAnima source code is MIT (LICENSE). Models, QNN and the other components keep their own licenses: see THIRD_PARTY.md.
The app shows all required license texts and notices (Info -> Licenses): Qualcomm AI Stack License, QNN notices, Apache License 2.0 and the MOSS-Image notice; the files are in app/assets/licenses/.
































