Caution
⚠️ Please read this before you install
If you point v7 at your existing InvokeAI root directory, it will upgrade your database, and that database will no longer work with InvokeAI v6. The migrations only go one way, and v6 refuses to open a database that contains migrations it doesn't recognise.
To try v7, create a brand-new InvokeAI root directory and experiment there. In the Invoke Launcher , choose a new, empty install location. When prompted for the version, select Manual and enter version v7.0.0-alpha.4. For a manual install, pass --root /path/to/new/folder or set INVOKEAI_ROOT. Keep your v6 install and its root directory exactly where they are.
Upgraded your v6 database by accident? Don't panic. Invoke makes a backup before it migrates anything, and from this release on the startup log names that backup before the upgrade begins. See Restoring your v6 database at the bottom of these notes, or the new Upgrading to v7 guide.
Warning
This is alpha software. Things will break, some features are half-finished, and a few corners still have cobwebs. Please don't trust it with work you can't afford to lose. When you hit a bug, and you will, please open an issue on GitHub and put v7 in the title, or tell us about it on our Discord. Screenshots, logs and the output of the Diagnostics panel all help a lot.
Note
Alpha 4 adds a database migration, so once alpha 4 has opened your root directory, alpha 3 and earlier will refuse to start on it. Canvases that use the new Noise, Clarity, Texture or Dehaze adjustments, or the new type-first control layers, are saved in a newer canvas format that alpha 3 can't open. Please stay on alpha 4 once you upgrade.
What's New
Alpha 4 brings three new image model families, character and edit references for Anima, Krea-2 and Qwen-Image-2.1, new ControlNets, much better live previews, faster int8 models, Windows on ARM64, and the return of more features from the legacy interface. A lot of this release is also the result of your feedback on the earlier alphas, so thank you to everyone who reported bugs.
Major Features
Major new features include:
New model families: FLUX.3 Klein and MOSS-Image
- FLUX.3 Image Klein from Black Forest Labs, in both the step-distilled Klein (16 steps, no CFG) and the undistilled Klein Base. It generates from text and edits or combines up to ten reference images, and Canvas regional guidance is placed as FLUX.3 layout boxes. Both checkpoints are under the FLUX Kommunity License. (@Pfannkuchensack)
- MOSS-Image from OpenMOSS, in Base and SFT versions (Apache 2.0). It works in Generate, on the Canvas (img2img, inpaint, outpaint and regional guidance as layout elements) and in workflows, can decode with PiD, and comes with a prompt enhancer that expands a short prompt into a full caption or a layout draft. (@Pfannkuchensack)
📖 FLUX.3 · MOSS-Image
Reference images and edits
- Anima character references. Anima now supports IP-Adapter character reference images. (@lstein)
- Krea-2 edit mode. Krea-2 can take up to three reference images, in Generate, on the Canvas and in workflows. This is what makes ai-toolkit edit LoRAs (the pose and depth "ControlNets" people have been asking for) actually work. (@Pfannkuchensack)
- Qwen-Image-2.1 edits from reference images, plus LoRA support for Qwen-Image-2.1. (@Pfannkuchensack)
📖 Anima · Krea-2 · Qwen-Image-2.1
New ControlNets and type-first control layers
- FLUX.2 [dev] Fun-ControlNet-Union and the InstantX Qwen-Image ControlNet Union are supported, with Canvas control layers. (@Pfannkuchensack)
- Canvas control layers are now type-first: you say what the image should control (Pose, Depth, Edges, Line art, Sketch, Color, Tile and so on) and Invoke picks the detector and the model, runs detection in the background, and keeps the original beside the detected map so you can re-run it. Gallery images and raster layers get Use as Control. (@joshistoast)
Better live previews with Tiny AutoEncoders
Set tiny_autoencoder_previews: true in invokeai.yaml and install the matching Tiny AutoEncoder from the starter models, and the in-progress preview becomes a close likeness of the final image instead of a blurry approximation. A preview takes about 25 ms on an RTX 4090. The finished image is unchanged. (@Pfannkuchensack)
Faster int8 models, and more single-file and GGUF formats
int8_compute. A new opt-in setting runs ComfyUI int8 convrot builds on the GPU's int8 tensor cores. On an RTX 4090 the denoising step of Z-Image Turbo, FLUX.1 dev and Krea-2 Turbo runs 1.3–2× faster, and up to almost 4× when the model only partly fits in VRAM. It needs an RTX 30-series or newer NVIDIA GPU and Triton, which is now installed automatically on Windows NVIDIA installs. Images differ slightly from the default at the same seed. (@Pfannkuchensack)- int8 convrot weights now stay int8 while they stream from system RAM, so partially loaded models move half as much data. (@Pfannkuchensack)
- New fp8 and int8 single-file starter models. (@Pfannkuchensack)
- New formats: Krea-2 ComfyUI int4 convrot transformers, Anima transformer GGUFs, LTX-2.5 transformer GGUFs and the Gemma-4 text encoder as GGUF. GGUF models are also identified much faster, from the file header alone. (@Pfannkuchensack)
attention_backendcan now pin a PyTorch attention kernel (cudnn,flash,efficientormath), which is mostly useful for debugging. (@Pfannkuchensack)
📖 int8 Compute · Model Format Support
Upscaling
- The Upscale widget now works with FLUX.2 and Qwen-Image too. (@Pfannkuchensack)
- A new Model only mode runs an upscaler such as 4x UltraSharp by itself, with no denoise pass, and each image's menu has an Upscale submenu listing your installed upscalers at their native scale. (@joshistoast)
📖 Upscale
Canvas adjustments
- Layers and groups get Noise (film grain, with mono, colour and chroma grain and a midtone response), Clarity, Texture and Dehaze adjustments. (@joshistoast)
- The same Clarity, Texture and Contrast Dehaze are available as workflow nodes. (@JPPhoto)
- Layers can be saved to a board of your choice. (@joshistoast)
📖 Image Detail and Contrast Nodes
Shared workflows
In multi-user mode, you can now make a Library workflow Public so that other users of the same Invoke server can open, duplicate or download it from the Shared tab, and call it from compatible workflow nodes. Only the owner can rename, delete or change it. (@JPPhoto)
Windows on ARM64
Invoke now installs and runs natively on Windows on ARM64, including NVIDIA's RTX Spark developer preview, using NVIDIA's ARM64 build of PyTorch. As part of this work, password hashing in multi-user mode now uses bcrypt directly instead of passlib. (@lstein)
Working memory that fits the model
Invoke now reserves working memory for FLUX.2, FLUX.3, Z-Image and Krea-2 denoising, and for VAE decoding, from measurements of each model rather than from rough estimates. That means fewer out-of-memory errors without holding back more VRAM than needed. Administrators can also calibrate a model's VAE working memory from the Model Manager. (@Pfannkuchensack)
More old favourites, and lots of polish from your feedback
- Hosted-provider options, Canvas modes and model record editing are back from the legacy interface, as are PBR map generation and image storage administration in the Gallery. (@joshistoast)
- Undo instead of confirm. Moves, removals, archives, stars, preset changes and layout resets happen straight away and offer Undo. Only permanent or bulk actions still ask first. The Invoke button opens a card that shows the source, the destination and anything blocking the run, along with its fix. The Queue gets a Cache popover for the model and invocation caches. (@joshistoast)
- Gallery and viewer: an Auto-switch menu (Newest / In progress / Off), previous and next arrows, search across All boards, and bulk delete for wildcards. Shift+click Invoke queues at the front. (@joshistoast)
- Workflow editor: fixes for paste, board pickers, library sorting and templates. (@joshistoast)
- External clients that enqueue with
destination: "gallery:reveal"can now reveal videos as well as images. (@lstein) - Many more Canvas fixes for frames, layer actions and the canvas engine. (@joshistoast)
Major Bug Fixes
Notable bug fixes and performance improvements include:
- Model downloads that are retried or restarted now fetch every missing file, so a failed download no longer leaves a model without its
config.jsonor chat template, and partial downloads only resume when the server file hasn't changed (@joshistoast, @lorenzozanee) - Projects opened over the LAN or plain HTTP now show their images, and copy and paste explain when the browser needs HTTPS (@joshistoast)
- Models now install and start on drives without hard links (@Pfannkuchensack)
- SD 1.x, SD 2.x and SDXL GGUF files, which Invoke can't run, are now refused at install time (@Pfannkuchensack)
- Mistral GGUF text encoders now load correctly (@Pfannkuchensack)
- Z-Image only accepts its Qwen3 4B text encoder, Z-Image GGUFs with 2-D pad tokens load, and Z-Image Fun ControlNets run as trained (@joshistoast, @Pfannkuchensack)
- Krea-2 Raw, Qwen-Image and Qwen-Image-2.1 Base use the correct schedule shift at large sizes, and FLUX.2 and Z-Image schedulers follow the node's sigma schedule (@Pfannkuchensack)
- PiD now gets the normalized latent it was trained on (@Pfannkuchensack)
- Many LoRA fixes: DoRA output scaling, conv-shaped LoHa, factorized LyCORIS, FLUX PEFT alpha values, FLUX guidance-embedder and final-layer modulation layers, diffusers FLUX LoRAs with text-encoder layers, and Anima kohya and diffusers LoRAs (@Saurav-Gupta-9741, @guishiw, @kevin9327, @chiliec, @Pfannkuchensack)
- Wan video decoding only tiles when tiling actually saves memory (@Pfannkuchensack)
- ERNIE-Image honours a partial denoise window with the Heun scheduler (@horizonbymuneeb)
- MiniMax H3 now runs on Apple MPS (@joshistoast)
- An enqueue that keeps failing with a 500 error is no longer retried forever, and the queue shows the full reason when an install is refused (@kevin9327, @tunglambk)
- The Get Image Mask Bounding Box node returns an exclusive
x_max/y_max, and String Split splits on whitespace when the delimiter is blank (@MohammadHijjawi97) - Translation updates now reach your browser without a hard refresh (@Pfannkuchensack)
- Changing your password in a legacy-interface tab no longer logs out your other tabs (@wunianze666-netizen)
- Image search vocabulary requests no longer block, and old vocabulary caches are cleaned up (@wunianze666-netizen)
- Security updates for dependencies flagged by Dependabot, and diffusers 0.42.1 (@lstein, @Pfannkuchensack)
The full list of updates follows.
What's Changed
- fix(krea2): hold Raw's schedule shift at the end of its fit by @Pfannkuchensack in #9887
- Bump version to 7.0.0-alpha.3-post1 by @lstein in #9929
- fix(qwen-image-2-1): hold the base model's shift at the end of its fit by @Pfannkuchensack in #9902
- fix(qwen-image): hold the dynamic shift at the end of its fit by @Pfannkuchensack in #9892
- fix(nodes): return an exclusive x_max/y_max from Get Image Mask Bounding Box by @MohammadHijjawi97 in #9603
- test(execution): extend nested For cleanup waits to 30s by @lstein in #9930
- feat(upscale): support FLUX.2 and Qwen-Image in the Upscale widget by @Pfannkuchensack in #9934
- fix(webv2): stop retrying an enqueue that keeps failing with a 500 by @kevin9327 in #9858
- fix(nodes): split on whitespace when the String Split delimiter is blank by @MohammadHijjawi97 in #9604
- refactor(graph): classify loop shapes once per graph by @joshistoast in #9940
- fix(z-image): accept only the Qwen3 4B text encoder by @joshistoast in #9936
- refactor(sampling): share one schedule-shift fit across flow-matching families by @joshistoast in #9938
- fix(i18n): version locale URLs so translation updates reach the browser by @Pfannkuchensack in #9947
- test(execution): stop processor cancel tests timing out behind a full GC per item by @Pfannkuchensack in #9949
- feat: Windows on ARM64 (NVIDIA RTX Spark) support; replace passlib with bcrypt 5 by @lstein in #9860
- feat(canvas): save layers to a chosen board by @joshistoast in #9931
- fix(z-image): dequantize GGUF pad tokens stored as a 2-D row by @Pfannkuchensack in #9942
- feat(controlnet): add FLUX.2 [dev] Fun-ControlNet-Union with canvas control layers by @Pfannkuchensack in #9924
- fix(gguf): avoid device over-reservation for host decoding by @wunianze666-netizen in #9862
- refactor(model-install): move install staging state into one ledger by @joshistoast in #9939
- fix(processor): preserve per-worker wake-up notifications by @wunianze666-netizen in #9855
- fix: upgrade safety, install retries, and LAN project access by @joshistoast in #9960
- feat(gallery): viewer auto-switch, all-board search, wildcard bulk delete and shell fixes by @joshistoast in #9959
- feat(models): v7 alpha generation and model feedback — native upscale scale, scheduler defaults, Add Models memory by @joshistoast in #9962
- fix(workflows): v7 alpha workflow editor feedback — paste, board pickers, library sort and templates by @joshistoast in #9964
- Speed up frontend validation and remove low-value tests by @joshistoast in #9974
- fix(model-install): preserve install tmpdir when a single multi-file part fails by @lorenzozanee in #9591
- refactor(model-manager): apply model record changes in the model manager service by @joshistoast in #9941
- docs(agents): keep the model format support matrix current with loader changes by @Pfannkuchensack in #9977
- fix(model-manager): refuse SD 1.x, 2.x and SDXL GGUF files at install by @Pfannkuchensack in #9965
- feat(gallery): reveal external video generations with gallery:reveal by @lstein in #9973
- build(deps): install Triton on Windows NVIDIA installs by @Pfannkuchensack in #9993
- fix(workbench): keep stored floating-window position on unmoved axes by @joshistoast in #9976
- feat(generation): restore hosted-provider options, Canvas modes and model record editing by @joshistoast in #9811
- fix(flux2,z-image): run Diffusers schedulers on the node's sigma schedule by @Pfannkuchensack in #9851
- feat(canvas): noise adjustment for film grain by @joshistoast in #9933
- Add built-in Clarity, Texture, and Contrast Dehaze approximation nodes by @JPPhoto in #9891
- Add public and shared Library workflows by @JPPhoto in #9952
- feat(quantization): run int8 convrot layers on the int8 tensor cores by @Pfannkuchensack in #9994
- feat(canvas): Clarity, Texture and Dehaze adjustments on layers and groups by @joshistoast in #10001
- fix(gallery): stop echoed batch inputs from jumping ahead in the gallery by @joshistoast in #9987
- fix(generation): share concept list rules across generate, video and upscale by @joshistoast in #9937
- ci(tests): run Windows tests on Blacksmith, ffmpeg tests on GitHub by @lstein in #9951
- fix(models): install and start on drives without hard links by @Pfannkuchensack in #10007
- feat(canvas): type-first control layers with background detection and derived models by @joshistoast in #10002
- feat(gallery): restore PBR map generation and image storage administration by @joshistoast in #9807
- chore(deps): upgrade frontend dependencies to their latest releases by @joshistoast in #9997
- feat(anima): add anima model IP-Adapter character reference images by @lstein in #9903
- feat(krea2): add edit mode with reference images for ai-toolkit edit LoRAs by @Pfannkuchensack in #9916
- fix(canvas): v7 alpha canvas feedback — frames, layer actions, and engine fixes by @joshistoast in #9961
- feat(moss-image): add MOSS-Image Base and SFT text-to-image support by @Pfannkuchensack in #9921
- ci(tests): give the Windows CPU tests a 30-minute timeout by @lstein in #10042
- feat(models): add Qwen-Image-2.1 edits from reference images by @Pfannkuchensack in #9787
- feat(krea2): add edit reference images to Generate and Canvas by @Pfannkuchensack in #9923
- fix(lora): apply output-axis DoRA scales per output row by @Saurav-Gupta-9741 in #10039
- fix(lora): map FLUX diffusers guidance-embedder layers onto guidance_in.in_layer/out_layer by @kevin9327 in #10045
- feat(working-memory): measure working memory in admin calibration runs by @Pfannkuchensack in #9897
- fix(ernie_image): honour a partial denoise window on the Heun scheduler by @horizonbymuneeb in #10006
- feat(moss-image): place canvas regional guidance as MOSS-Image layout elements by @Pfannkuchensack in #9925
- fix(patches): support conv-shaped LoHa factors by @guishiw in #10048
- fix(working-memory): reserve VAE working memory per dtype and allocator by @Pfannkuchensack in #9898
- fix(flux): load diffusers FLUX LoRAs with text-encoder layers by @chiliec in #10046
- feat(e2e): add per-family end-to-end regression runner by @Pfannkuchensack in #9894
- Consolidate cinematic effects packs (community nodes) by @JPPhoto in #10062
- feat(models): calibrate VAE working memory per model from the Model Manager by @Pfannkuchensack in #9910
- perf(model-manager): identify GGUF models from the header alone by @Pfannkuchensack in #9816
- feat(anima): load the Anima transformer from GGUF builds by @Pfannkuchensack in #9970
- test(projects): stub navigator in no-Web-Locks tests by @lstein in #10066
- feat(ltx2): load LTX-2.5 transformer GGUF builds by @Pfannkuchensack in #9814
- feat(ltx2): load the Gemma-4 text encoder from GGUF builds by @Pfannkuchensack in #9932
- fix(pid): hand PiD the normalized latent it was trained on by @Pfannkuchensack in #9888
- feat(working-memory): reserve Z-Image denoise working memory from measured lines by @Pfannkuchensack in #9919
- fix(wan): tile a video decode only when tiling needs less memory by @Pfannkuchensack in #9668
- feat(controlnet): support the InstantX Qwen Image ControlNet Union by @Pfannkuchensack in #9935
- fix(z-image): run Fun ControlNets through the shared hooks, as trained by @Pfannkuchensack in #9943
- chore(deps): patch Dependabot critical/high/medium alerts by @lstein in #10067
- docs: add AutoExpress to community nodes by @deepratna-awale in #10004
- fix(lora): map Anima kohya non-block layers by @guishiw in #10059
- feat(previews): render live denoise previews with Tiny AutoEncoders by @Pfannkuchensack in #10040
- fix(lora): support factorized LyCORIS layouts by @guishiw in #10060
- fix(lora): preserve FLUX PEFT alpha values by @guishiw in #10058
- feat(e2e): calibrate working memory and build shipped data from probe runs by @Pfannkuchensack in #9899
- feat(working-memory): reserve FLUX.2 denoise working memory from measured lines by @Pfannkuchensack in #9927
- fix(images): display resolved inputs and preserve source graphs by @wunianze666-netizen in #10035
- ci: keep the workflow hardening in place with a Plumber check by @Totara-thib in #9944
- chore(deps): bump diffusers to 0.42.1 by @Pfannkuchensack in #10078
- feat(models): add LoRA support for Qwen-Image-2.1 by @Pfannkuchensack in #9793
- fix(lora): identify and map Diffusers Anima LoRAs by @guishiw in #10076
- feat(attention): let attention_backend pin an SDPA kernel by @Pfannkuchensack in #9956
- fix(lora): apply FLUX final-layer modulation LoRA layers with swapped scale/shift halves by @Pfannkuchensack in #10052
- feat(flux3): add FLUX.3 Image Klein and Klein Base by @Pfannkuchensack in #9883
- fix(webv2): show the full install refusal reason in the queue by @tunglambk in #9989
- fix(auth): preserve rotation across legacy and default tabs by @wunianze666-netizen in #9607
- fix: point mixed-upload success notice at the Uploads tab by @aniketkrs in #9847
- fix(image-index): avoid blocking vocabulary requests by @wunianze666-netizen in #10008
- fix(e2e): classify prompt_files_dir as a template path by @Pfannkuchensack in #10089
- fix(ci): clear the Plumber findings that fail every pull request by @lstein in #10082
- fix(image-index): retire obsolete vocabulary caches by @wunianze666-netizen in #10013
- fix(image-index): isolate vocabulary cache staging by @wunianze666-netizen in #10033
- fix(qwen-image): forward multimodal token types by @guishiw in #10050
- feat(moss-image): expand prompts into MOSS-Image captions or layout drafts by @Pfannkuchensack in #10054
- feat(working-memory): reserve FLUX.3 denoise working memory from measured lines by @Pfannkuchensack in #10084
- fix(model-manager): undo llama.cpp's Q/K reordering in Mistral GGUF encoders by @Pfannkuchensack in #9968
- fix(ideogram4): place canvas regional guidance in the structured caption by @Pfannkuchensack in #10070
- feat(working-memory): reserve Krea-2 denoise working memory from measured lines by @Pfannkuchensack in #10085
- perf(quantization): stream int8 convrot weights as int8 under partial loading by @Pfannkuchensack in #9845
- feat: UX refinement pass: undo-first actions, Invoke card routing, queue cache popover, canvas without the generation lock, layered project settings by @joshistoast in #10074
- feat(starter-models): add fp8 and int8 single-file starters by @Pfannkuchensack in #10098
- fix(canvas): bound generation snapshots for large native-resolution maps by @joshistoast in #10090
- fix: add
/prompt_files/to gitignore by @joshistoast in #10099 - feat(krea2): load ComfyUI int4 convrot transformer builds by @Pfannkuchensack in #9817
- feat(flux3): place canvas regional guidance as FLUX.3 layout boxes by @Pfannkuchensack in #10095
New Contributors
- @lorenzozanee made their first contribution in #9591
- @Saurav-Gupta-9741 made their first contribution in #10039
- @horizonbymuneeb made their first contribution in #10006
- @guishiw made their first contribution in #10048
- @deepratna-awale made their first contribution in #10004
- @tunglambk made their first contribution in #9989
- @aniketkrs made their first contribution in #9847
Full Changelog: v7.0.0-alpha.3...v7.0.0-alpha.4
🛟 Addendum: Restoring your v6 database
If you ran v7 against your existing root directory and now want to go back to v6, you can restore the backup that Invoke made just before it upgraded your database.
What you'll lose: anything you did while running v7. Images and videos you generated in v7 stay on disk in your outputs folder, but they won't appear in the v6 gallery. Models you installed in v7 stay in your models folder but won't be listed in the Model Manager until you install them again (the Scan Folder option makes this quick).
-
Quit InvokeAI completely. Make sure no Invoke process is still running.
-
Open the
databasesfolder inside your InvokeAI root directory. (If you setdb_dirininvokeai.yaml, look there instead.) -
Find the backup. You'll see files named like this:
invokeai.db invokeai_backup_20261005-143012.dbThe timestamp is
YYYYMMDD-HHMMSS. Choose the backup made when you first launched v7: it holds your database exactly as v6 left it. Earlier upgrades may have left older backups in the folder too, so pick by date. If you aren't sure which one it is, it's usually the oldest backup created on or after the day you installed v7. -
Move the upgraded database out of the way. Don't delete it yet. Create a folder such as
v7-dband move these files into it (the last two may not exist, which is fine):invokeai.db invokeai.db-wal invokeai.db-shm[!IMPORTANT]
Don't skip the-waland-shmfiles. If they're left behind, SQLite may try to apply v7's leftover changes to the restored database. -
Copy the backup into place and rename the copy to
invokeai.db. Copy rather than move, so the original backup stays as a safety net.- Windows (PowerShell):
Copy-Item invokeai_backup_20261005-143012.db invokeai.db - macOS / Linux:
cp invokeai_backup_20261005-143012.db invokeai.db
- Windows (PowerShell):
-
Check
invokeai.yaml. v7 adds a few new settings (db_url,db_synchronous,fp8_compute,reserve_vram_gb,int8_compute,attention_backend,tiny_autoencoder_previews,prompt_files_dir,image_index_*,fonts_*). v6 won't start if any of these are in the file, so remove any you added. -
Start InvokeAI v6 (6.14.2). Your boards, images and models should be back where you left them.
The Upgrading to v7 guide covers the same steps in more detail, including how to go back to v7 afterwards.
If v6 still refuses to start, or you can't find a backup, ask in the Discord or open an issue before you try anything else, and keep every .db file you have.