Character Select SAA
A Stand Alone App with AI prompt, Semi-auto Tag Complete and ComfyUI/Forge Neo(WebUI) API support.[!NOTE]
If you find a character that isn't show on the list but can be generated correctly, please don't hesitate to raise an issue to let me know.
> The default thumbList is based onwaiIllustriousSDXL_v160. There are two alternative thumbList:waiANIMA_v10Base10andwaiNSFWIllustrious_v120. Will download automatically fromHuggingFaceonce you have selected it.
Create your own thumbList with SAA Thumb Generator
[!TIP]
FP16 Compute, Sage Attention, and Override VAE are for Turing/Pascal GPUs. Newer cards can leave them off. See Turing FP16.

| Verified | ComfyUI | Forge Neo | | --- | --- | --- | | Release | 0.44.0 | 2.31.0 | | Refiner (SDXL) | Yes | Yes | | Image Color Transfer (ALL) | Yes | No | | Regional Condition / Couple (SDXL/Anima) | Yes | Yes | | ControlNet/IPA (SDXL) | Yes | Yes | | ADetailer (ALL) | Yes | Yes | | API authentication| No | Yes | | MiraITU | Yes | No |
[!IMPORTANT]
Regional Condition / CoupleandADetaileronForge NeosupportsSDXL and Anima
onComfyUIshould support all SAA supportsdiffusion modelsneed to verify
> ComfyUI Desktop not support SAA
Removed A1111 from support list due to a lack of maintenance, A1111 still working with SAA, but will not test on it
Online Character Select Hugging Face Space
> For browser based SAAC, check README_SAAC.md
SAAC is read-only by default. It can generate, load host settings, switch layout mode, and save only tosaac_settings.json. Dragged layout is not written, and a missing thumbList is not downloaded. The hostSAAC read-onlyswitch stays with the live host when switching settings. Turn it off in hostSettingsif a client should write this PC.
For Python based CLI tool for OpenClaw SAA Agent and ClawHub
thumbList manually download guide
If you experienced a slow or failed download in SAA, check the manual solution here.
Navigate to my HF dataset, download the following files to the data folder and rename them as follows:
waiIllustriousSDXL_v160
waiIllustriousSDXL_v160_thumbs.jsonwaiIllustriousSDXL_v160_characters.csv
waiIllustriousSDXL_v160_tag_assist.json
waiIllustriousSDXL_v120
waiNSFWIllustrious_v120_thumbs.jsonwaiNSFWIllustrious_v120_characters.csv
waiNSFWIllustrious_v120_tag_assist.json
waiANIMA_v10Base10
waiANIMA_v10Base10_thumbs.jsonInstall and run
[!TIP]
Setup your Image API Interface before you start SAA.
For ComfyUI, you need latest ComfyUI_Mira for SAA.
> One-Click package v2.11.1
The full package embeded_env_for_SAA
Clone this repo into your local folder
git clone https://github.com/mirabarukaso/character_select_stand_alone_app.git
cd character_select_stand_alone_app
npm install
npm start
Update
[!IMPORTANT]
Updating version from github will not update the dataset files.
Manually deletedanbooru_e621_merged.csv,_thumbs.json,_characters.csv,*_tag_assist.jsonindatafolder. Restart the app to automatically download the latest thumbnail database from HF.
The One-Click package may not the latest version. If you need to update, please use the GitHub clone version with following command instead.
git fetch
git pull
npm install
------
Highlights
Gallery A|B Compare
Compare two gallery images (or up to two from Image Info) with a slider wipe (left/right or top/bottom via↔ / ↕), same-spot A/B toggle, shared pan/zoom, and optional in-app fullscreen. Pin with the side +A / +B button, right-click, or Image Info; exit with ✕A|B. <> switches slider wipe vs toggle while comparing. While comparing, Hires Fix stays off and new generations still join the queue without jumping the view.
AI Prompt
Write or polish a prompt in the AI Prompt panel, then put the result into a prompt box yourself. Image generation does not call the language model.
More about AI Prompt
Template chooses how the reply is written. Source chooses which text is sent. Picking a template also sets that template's source and character slot. Change either one afterwards and it is stored on the template.
Three templates are included:
Tag scenereadsBriefand answers with one line of English comma-separated tags, about 8 to 16 tags. Gender words are left out.Natural scenereadsBriefand answers with one English paragraph for diffusion models. Width and height stay with the app, so the paragraph does not contain an aspect ratio.Character naturalreads character slot4. It polishes the text it actually received. The usual reply is one English paragraph. If that text explicitly asks for tags, the reply is one line of tags. A place, time, light, weather, background, prop, or extra person is added only when the source text already has it.
Brief, Common, Positive, Right positive, Negative, Character, and Full prompt. Character uses one fixed slot from 1 to 4. A random slot is not sent. Full prompt skips a random character slot. LoRA lines are not sent. Wildcards stay as written.
Generate runs the request. After a short pause the button becomes Cancel and can stop the request. The reply stays in Result until you choose where it goes. Overwrite replaces Common, Positive, Right positive, or Negative. Append adds the reply to the end of that box. Character files are left unchanged.
Each template keeps its own system prompt, model, timeout, temperature, max tokens, source, and character slot. Model settings and the system prompt start folded. The save icon asks for a name. The same name updates the current template. A new name saves a copy and selects it. Delete asks first. Deleting the last template restores the three original templates. Restore defaults, under Backend, adds a missing original template and replaces an edited original with the stored one. Templates you added yourself stay.
Backend is shared by every template.
Remoteexpects an OpenAI-compatible base URL and an API key. A base such ashttps://nano-gpt.com/api/v1is called at/chat/completions. A URL that already ends with/chat/completionsis used as it is.Localexpects a llama.cpp server address, for examplehttp://127.0.0.1:8080/chat/completions. Build llama.cpp or take a release, then start it with your GGUF model:llama-server.exe -c 16384 --port 8080 -m "."
data/ai_prompt_templates.json. The app copies them into settings/ai/templates.json on first run, and later saves stay in that file. The selected template and source are stored with the current settings file. Inherit settings starts off. Turn it on before loading another settings file to keep the current interface, addresses, key, template, source, and brief. The switch turns itself off after that load. Save the settings file to store the kept configuration in the file you just opened.
Bounding Box for Moss Image
Draw rectangles on a canvas that follows the currentWidth and Height, then submit the merged positive prompt as one JSON payload. Turn on the header switch to enable it. Regional Condition keeps this switch off.
More about Bounding Box
The canvas uses the current generation size, including landscape swap, and fits the panel. It stays at or below 1:1, so a smaller generation size is shown at its native pixel size.
Drag on empty space to create a box. When the canvas is crowded, Add inserts a default centered rectangle (with a small nudge if that spot is already taken). Drag inside a box to move it, and drag an edge to resize it. A selected box is solid; the others stay semi-transparent. Boxes are numbered from 01, up to 128. Deleting one renumbers the rest from 01 in list order, and a new box is appended at the end.
Click selects the smallest box under the pointer. The area outside that box still selects the larger one. After the canvas has focus, Tab walks outward through the nested boxes under the pointer, and Shift+Tab walks back. If the pointer is not over two or more boxes, Tab uses the boxes around the selected box, then the full list in number order. Enter or a double-click edits the description. Inside the editor, Enter saves, Shift+Enter adds a line, and Esc cancels. Delete removes the selection.
Each box is object or text. object is the default. For Moss, object generates the description as an item inside the box, and text generates the description as annotation text inside the box.
- An empty
objectsends its number ascaptionand has notextfield. - An
objectwith a description sends that item text ascaptionand has notextfield. In the example below,burgerandprice listare generated as items. - A
textbox keeps the number ascaptionand sends the description intext, so Moss generates that description as annotation text.
Snap is optional and uses that same size. Pick a color from 16 swatches or the color picker. Color is only drawn on the canvas and is left out of the payload. The preview under the canvas shows the positive prompt that will be sent.
A long description wraps to the box width. Lines that do not fit stay hidden. The editor opened by Enter or a double-click grows with the text and stays inside the canvas.
Plate loads the image currently shown in the gallery. Image Info can also send its loaded picture with To Bounding, under the tagger row. In the split view that is the large image. In grid view it is the opened image, or the newest image when none is opened. Click Plate again to clear it. A matching aspect ratio scales to the canvas. A different ratio scales by the short side and stays centered, and the canvas clips the overflow. Opacity runs from 0 to 100 and stays disabled until a plate is loaded. The opacity is saved with settings. The image itself lasts for the current session. While a plate is loaded, box fills follow that slider and thin out as the image gets stronger, so the picture, the region edge, and the description stay visible together.
Lock keeps the selected box from being moved or resized. A locked box can still be selected, recolored, and edited, and Delete still removes it. Add sits next to Clear. Clear asks first. It removes unlocked boxes and leaves locked ones. When every remaining box is locked, Clear removes those too.
Coordinates use the full generation pixels. The origin is the canvas center, x points right, y points down, and each box is [y_min, x_min, y_max, x_max]. On a 1024×1360 canvas the packed prompt looks like this:
{
"summary": {
"caption": "japanese anime style, solo anthro, aged down, fluffy,\nrestaurant, huge burger,two-tone fur, (grey fur:1.1), white cheek fur, white paws, grey wolf ears, grey wolf tail, blonde hair, grey eyes, wolf girl, hair between eyes, long sidelocks, short hair, (fluffy, chest fluff:1.4), cheek fluff, furry, petite, fangs, ear fluff, claws, sitting,"
},
"items": [
{ "label": "object", "caption": "furry", "bbox": [-680, -96, 680, 512] },
{ "label": "object", "caption": "burger", "bbox": [-238, -173, 101, 182] },
{ "label": "object", "caption": "price list", "bbox": [-619, -480, -234, -224] },
{ "label": "object", "caption": "table", "bbox": [124, -512, 363, 224] },
{ "label": "object", "caption": "soda drink", "bbox": [-69, -313, 168, -221] },
{ "label": "object", "caption": "Seasoning", "bbox": [98, -484, 166, -320] },
{ "label": "object", "caption": "Dinner Plate", "bbox": [204, -277, 273, 179] }
],
"bbox_coord_space": "abs_centralized",
"bbox_format": "yxyx"
}
summary.caption is the merged positive prompt after replacement and AI. The JSON is written onto the positive prompt that is actually submitted.
UI Layout
Drag panels between the left and right columns. The icon next to Save Settings chooses a shared layout, a layout stored with this settings file, or the original default.
How to drag panels and how the layout icon works
Drag a panel by its collapse dot (the small circle on the header) to reorder it up/down, or drop it on the other column to swap left/right. Click the collapse dot to fold/unfold as before. To move a panel, hover the drag area for about 1 second until the border turns green, then drag. A quick pass or click will not start a layout move.
The generate bars (width/CFG and seed/run buttons) and the prompt box have no collapse dot. Hover empty space (especially the padding at the top) for about 1 second until the border turns green, then drag. Don't drag sliders, dropdowns, buttons, or prompt text — those keep their normal behavior.
The layout icon next to Save Settings cycles how the layout is stored:
- Default color - Shared UI layout for all settings files
- Green - Independent UI layout for the current settings file only
- Orange - Restore the original default layout. Drag any panel afterwards to save it as an Independent layout (Green)
Diffusion Models (UNET/CLIP/VAE) for ComfyUI and Forge Neo
[!NOTE]
Test and Verified: Moss / Anima / Qwen Image / Z Image / Flux / Krea2
Supports ComfyUI and Forge neo, NOT support original A1111.
Details about Diffusion Models
For ComfyUI, check Comfy-Org@HF
GGUF model requires custom node gguf the small-case one.
|---models
| |---checkpoints
| |---diffusion_models
| |---text_encoders
| |---vae
For Forge Neo, check Download Models@Haoming02
Forge also supports the GGUF model, but the Diffusion models use the same Checkpoint folder. Therefore, manage those models with correct folder yourself.
|---models
| |---Stable-diffusion
| |---text_encoder
| |---VAE
Mira Image Tiled Upscaler
[!NOTE]
MiraITU: A content-aware image super-resolution ComfyUI custom node based on vision models.
Simply drag and drop ANY image into SAA/SAAC to upscale it.
| Before | 6x After (SDXL) | Before | 3x After (Flux.2) |
| --- | --- | --- | --- |
|
|
|
|
|
Details about MiraITU
Supports magnification scales from 1.5x to 8x. By adjusting different tile sizes, it can optimize VRAM usage to the maximum, enabling 8GB graphics cards to achieve image upscaling at 1.5x to 3x (or higher) scales, while also unleashing the full potential of high-end graphics cards with 24GB or more VRAM to accomplish 4x to 8x image upscaling.
Requires ComfyUI_Mira 0.5.6.0 or above
Requires MiraSubPack latest
And Image Tagger for Mira
| Settings | Drag and Drop | Flux.2 |
| --- | --- | --- |
|
|
|
|
The generated results will be affected by different models. The SDXL model requires a tagger to provide more precise content descriptions, and using an upscale model is recommended. Models such as Flux2, which allow a reference latent to connected, can skip the upscale model and stretch the original image directly. Then, simply use the Positive Prompt to configure all tiles consistently.
| Upscale Ratio 1024x1360(1536) | Tile Size | VAE 8G | VAE 24G~ | | --- | --- | --- | --- | | x1.5 | 768 | Full | Full | | x2 | 1280 | Full/Tiled | Full | | x3 | 1536 | Tiled | Full | | x4 | 2048 | Tiled | Full | | x6 | 2048/2560 | Tiled | Full | | x8 | 2560/3072 | Tiled | Full/Tiled |
Note: Due to limitations of the SDXL model, exceeding 8x magnification will result in overly fragmented visual slices. For higher magnification requirements, it is recommended to use a dedicated ComfyUI workflow instead. Comfyui Workflow MiraITU
Image Tagger
Supports WD@SmilingWolf, CL@cella110n and Camie@Camais03 models in ONNX format.
Details about Image Tagger
Download models with tags from HF, manually rename them according to the following rules, then copy them into models/tagger folder:
- cl_tagger_v2.onnx + cl_tagger_v2_tag_mapping.json
- wd-eva02-large-tagger-v3.onnx + wd-eva02-large-tagger-v3_selected_tags.csv
- wd-v1-4-convnext-tagger.onnx + wd-v1-4-convnext-tagger_selected_tags.csv
SAA
|---models
| |---tagger
| |---cl_tagger_1_02.onnx
| |---cl_tagger_1_02_tag_mapping.json
| |---wd-eva02-large-tagger-v3.onnx
| |---wd-eva02-large-tagger-v3_selected_tags.csv
| |---wd-vit-large-tagger-v3.onnx
| |---wd-vit-large-tagger-v3_selected_tags.csv
| |---camie-tagger-v2.onnx
| |---camie-tagger-v2-metadata.json
Options:
Model Name >>> General Threshold(CL/WD/Camie) >>> Character Threshold(CL/WD) >>> Categories(CL/Camie) or mCut(WD)
The Image Tagger runs on Node.JS with onnxruntime-node. It DOES NOT require any backend support.
Idle: prefers DirectML / CUDA for the currently selected tagger only (one GPU-resident model). Falls back to CPU if GPU init fails; promoting a model to GPU drops its CPU copy.
Generating: prefers CPU so diffusion keeps VRAM. Closing Image Info, or starting Generate / ControlNet, releases any GPU tagger session into the CPU cache when possible. GPU-resident models unused for ~2 minutes are released (into CPU cache when possible) even without Generate. CPU keeps up to the last 3 used ONNX models; unused CPU entries expire after ~5 minutes.
DirectML is still slower than Python onnxruntime-gpu (CUDA), but steady GPU runs are much closer to usable speed than the old per-request CPU path.
In other words with my i9-9960x with Titan RTX
The good news is, you can run Image tagger during generate (uses CPU while generating, then can return to GPU when idle)
| Device | Avg Tagging Time | Model | Platform | Resolution | Recommend Value | | --- | --- | --- | --- | --- | --- | | onnxruntime | 1.053s | cl_tagger_1_02 | Python | 448 | 0.55/0.60 | | onnxruntime-gpu | 0.297s | cl_tagger_1_02 | Python | 448 | 0.55/0.60 | | onnxruntime-node | ~0.12s (steady) | cl_tagger_1_02 | Electron(NodeJS@DirectML) | 448 | 0.55/0.60 | | onnxruntime-node | ~1.0s (steady) | cl_tagger_1_02 | Electron(NodeJS@CPU) | 448 | 0.55/0.60 | | onnxruntime-node | (first load slower) | wd / camie | Electron(NodeJS@DirectML) | 448 / 512 | 0.35/0.85 / 0.50 |
ControlNet / IP Adapter
Details about ControlNet / IP Adapter
For ComfyUI
Upgrade your ComfyUI_Mira to0.5.6.0 or above
ControlNet requires comfyui_controlnet_aux 1.1.5 latest
Put your ControlNet models in ComfyUI\\models\\controlnet
IP Adapter requires comfyui-art-venture 1.1.7 latest and ComfyUI_IPAdapter_plus 2.0.0 latest
Put your Clip Vision models in ComfyUI\\models\\clip_vision
Put your IP Adapter models in ComfyUI\\models\\ipadapter
I didn't test too much on IPA, but for SDXL/ilXL/NoobXL recommends CLIP-ViT-bigG-14-laion2B-39B-b160k.safetensors with ipa_styleIpadapterFor_NoobAI-XL_v10.safetensors. You may also need CLIP-ViT-H-14-laion2B-s32B-b79K.safetensors
Only the first IP Adapter slot will accept by ComfyUI, others set to On will ignore.
For Forge Neo
For ComfyUI,Post directly feed the processed image to controlnet model without requiring Processor Model preprocessing. They accepts none(null) as preProcessModel.
But Forge based controlnet DOES NOT support none(null) as preProcessModel, it accepts None(String).
Forge Neo:
Put your ControlNet and IP Adapter models in models\\ControlNet.
Use None and always On
Usage
- Drag and drop (or click
AddthenPaste) your Image(or openPose image) to SAA/SAACImage Info, selectPre-processor,Resolution,Post-processorand then clickAdd ControlNet. After it saysAddedthe previre image will swap to yourPre-processedimage, closeImage infowindow, checkControlNettab for more settings. Hover your mouse over a dropdown/text item to view its feature. - In
ControlNettab, you can changePre-processorby select the a one and clickRefreshto generate it and update preview. (Or setMethodtoOnbut SAA preview will not update). - Because images are too big to save in settings file, so
ControlNetsettings will not save when SAA close, but also select another settings will not override currentControlNetsettings. ControlNetworks on normal and regional conditon.- If you are new to
ControlNet, tryCannyorOpenPosefirst. - ComfyUI D-O-E-S N-O-T like submitting the same data, you may receive an
Empty response errorwhen submit same data. - ComfyUI comfyui-art-venture requires a
square image, you may get warnings with NOT square image input. - In case of your IPA image is too big, the
Resolutionselection forIP Adapterwill resize your input image to target size,1024is enough for most case. - The
Infobutton is not working whenPre-Process Modelselect toIP Adapter
Pre-processor models are managed by comfyui_controlnet_aux(ComfyUI), most models will download from Hugging Face.
All Post-processor models, aka the Apply ControlNet Model you need download by yourself from ComfyUI Model Manager or Hugging Face.
LoRA Slot
Forge Neo(WebUI) supports it's default LoRA prompt style.
ComfyUI supports more detailed configuration of LoRA, for more information please refer to LoRA from Text.
Also support check LoRA info by click the 'i' button in LoRA Slot. And, if there's a same named PNG file with LoRA, the image will show in LoRA info page.
To use LoRA in ComfyUI API, you need update your ComfyUI_Mira node to 0.5.6.0 or above
ADetailer
[!TIP]
If the settings are too confusing, just remember to adjust the gold parameter in the bottom-right corner (Denoise).
For ComfyUI
[!CAUTION]
Check before you download any .pt file from unknown/untrusted site!
https://github.com/ltdrdata/ComfyUI-Impact-Pack/issues/843
ADetailer requires Impact Pack 8.28.3 latest and Impact Subpack latest
Put your ADetailer models in ComfyUI\\models\\ultralytics\\bbox
Put your SAM models in ComfyUI\\models\\sams
For Forge Neo
ADetailer requires ADetailer Neo latest
Upscaler, Control Processor, ADetailer lists have to be read from the API.
The default ADetailer model list will be updated after the first generation. Simply start generating an image as normal.
Put your ADetailer models in sd-webui-forge-neo\\models\\adetailer or stable-diffusion-webui\\models\\adetailer
Queue Manager
The queue management system enables you to submit multiple generation tasks, each with their own distinct parameters. Once submitted, the queue automatically begins processing them and removes completed tasks. If an error occurs, or if you manually uncheckedEnable Generation, the queue will pause after the current task has finished and will remain preserved.
You can delete or view details of tasks within the queue. Deleting the first task in the queue cancels the current generation process.
Recommended that the length of the queue should not exceed 10,000.
JSON/CSV List
JSON/CSV list will NOT save into your settings file Support.json and .csv files, just drag and drop (or click Add then Paste) those file info Image Info window. File format please refer to wai_characters.csv and wai_tag_assist.json, try drag them into SAA.
__Random__, randomly selects an item from the list without a seed bound, works for Single and Batch (Random) generate mode.
__Enumerate__, enumerates every item one by one and only works in Batch (Random) mode, in Single it downgrade to __Random__
Wildcards
Supports*.txt wildcard files, copy your wildcards into resources\app\data\wildcards
By default, wildcards are randomly selected using the current seed. If wildcard random seed is Checked, a new random seed will be generated for every selection every time.
Subfolder is not supported
Wildcard tag requires DOUBLE(2) underline __ on both head and tail
__YourWildCardName__
In case you didn't like wildcards file or json/csv wildcard, try the following in your prompts:
{ standing | sitting | on stomach | on back }
{ red | green | blue | blonde } { {long | short} hair | eyes}
Regional Condition / Couple
[!TIP]
Now supports Anima model
Try SAA Regional Condition with only 3 steps:
- Click the
Regional ConditionCheckbox - Choose listed character or your OC
- Start
common promptwithduo, masterpiece, best quality, amazing quality(Don't forget quality words like me), have fun!
Regional Condition requires SD Forge Attention Couple latest
Semi-Auto Tag Complete
Tags credits from DraconicDragon/dbr-e621-lists-archive/danbooru_e621_merged_2026-04-01_pt20-ia-dd-ed-spc.csv
Details about Semi-Auto Tag Complete
Entering the first few characters will automatically search for matching tags, starting with will search for tags with a specific ending, and tag* will search for tags that match in the middle.
Use mouse to select the prompt word, but you can also use the keyboard up and down with Enter or Tab to select, press Esc to close the prompt box.
ctrl + up and ctrl + down arrow to adjust the weight of the current tag, or adjust multiple tags by selecting a fragment, the usage is similar to comfyui and webui, but some details of the logic may be different.
Supports English and Chinese(translate file required) tag search. Special thanks to Kiratian(天痕) for helping to translate the tags into Chinese version.
Artist Search for Anima and others
Activate it using the @ symbol. The result will be filtered by groups 1 and 8.
To apply the Artist tag in Anima Model, you need to add an @ symbol at the start of the tag. E.g. mira -> @mira
| Mark | ID | Category | Group |
| --- | --- | --- | --- |
| [G] | 0 | General | Danbooru |
| [A] | 1 | Artist | Danbooru |
| [©] | 3 | Copyright | Danbooru |
| [C] | 4 | Character | Danbooru |
| [M] | 5 | Meta | Danbooru |
| | 7 | General | E621 |
| | 8 | Artist | E621 |
| <©> | 10 | Copyright | E621 |
| | 11 | Character | E621 |
| | 12 | Species | E621 |
| | 14 | Meta | E621 |
| | 15 | Lore | E621 |
| Wildcards | 255 | Wildcards | SAA |
Image info
Drag and drop your image into SAA window, supports Png/Jpeg/Webp.
Works WebUI(Forge Neo and A1111) and ComfyUI(with image save node from ComfyUI_Mira). Double click the image to close. TheSend button will override Common Prompt, Negative Prompt, Width & Height, CFG, Setp and Seed.
LoRA in Common Prompt also works if you have the same one. If you don't like LoRA in prompts, try Send LoRA to Slot.
Character List
Favorite Character List
SAVE your settings after you add/remove favorite listAdd: Select a character in Character1 or OC, press Alt + D (default)
Remove: Select a character in Character3 or OC, press Alt + Q (default)
Search: Use @ in ANY character list to load your Favorite Character List
Hotkeys: Change add/remove shortcuts in Settings
Merge/Overwrite/Replace: So, when you switch settings files, you might find that the favourite lists aren't the same. An options dialogue box will pop up and ask you what you want to do next. It's a little annoying, but it will get better once you have merged all.
Preview and Search
The Character List supports keywords search in both Chinese and English.
Top buttons and Right Click Menu
Top buttons from Left to right: Save Settings, Reload Model List, Refresh page, Right to Left, Theme Switch.I just noticed that the electron app doesn't have a right-click menu, so I made one.
Spell Check (English)
Right-click on a word that has a spell check error (a wavy line drawn at the bottom) to see a hint for the corresponding word.

Copy Image/Metadata
Right click on Gallery to copy current image or copy the metadata to clipboard.
ComfyUI with Image Saver node will output an a1111-like format metadata.
Copy image based on convert base64 data back to png, but metadata trimed by chromium core, it's impossible to put them back with chromium API, a C based lib could solve that problem, but it's not worth to do. If you do need the original image, check from the relevant (ComfyUI/WebUI) output folder.
For SAAC: Drag and drop image from browser to local folder or save as from browser right click.

Send LoRA to Slot
Right click on Common and Positive to send text form LoRA to LoRA Slot.
Turing FP16 (RTX 20 series)
Turing cards (RTX 20 series) cannot run bf16.FP16 Compute / Sage Attention keep that generation on fp16. Newer cards can leave them off and use bf16 or fp8. Override VAE is separate and only needed on ComfyUI when Flux2 VAEDecode crashes on Turing/Pascal.
FP16 Compute casts the loaded UNet compute to fp16. Weight storage stays as it is.
Sage Attention casts attention q/k/v to fp16 and casts them back. It does not turn compute fp16 on by itself. SageAttention 1.0.6 or 2.2 still has to be installed for that path.
Override VAE (ComfyUI, under FP16 switches) swaps stock VAEEncode/VAEDecode for MiraSubPack so the fused Flux2 VAE path is avoided. Turn it on for Moss / Flux2 Klein (or other Flux2-VAE models) that die at VAEDecode with CUTLASS / CUDA 719. SDXL / Anima / Qwen Image usually do not need it.
The FP16 Compute / Sage Attention switches are independent. Turning either one on keeps UNet storage at Automatic.
ComfyUI inserts the FP16 switch with ComfyUI_MiraSubPack. Override VAE also needs that pack.
Forge Neo sends forge_compute_fp16 and forge_sage_fp16_cast with forge-turing-fp16. Before the next txt2img, SAA unloads the resident UNet, text encoder, and VAE when either switch turns off, or when the checkpoint or additional modules change. That frees the previous weights. A later float32 load can still offload part of a large UNet.
------
Image API Interface
For ComfyUI[!IMPORTANT]
If you encounter issues with workflows failing to load correctly, try using 2025-05-03-022732_1775747588.json instead.
- Enable
DEV modein ComfyUI Settings, and loadexamples\2025-05-03-022732_1775747588.pnginto your ComfyUI, make sure you have install ComfyUI_Mira v0.5.6.0 or above.
opencv-python by ComfyUI->Manager->Install PIP packages-> opencv-python
- Select
Image API InterfacetoComfyUI - Make sure
Image Interface IP Address:Portsame as your ComfyUI page - Have fun
--preview-method latent2rgb into your startup BAT file
My setup:
py ComfyUI\main.py --fast --use-sage-attention --cuda-malloc --windows-standalone-build --listen 0.0.0.0 --port 58188 --preview-method latent2rgb
For Forge Neo(WebUI)
- Enable
API modeby add--apiinCOMMANDLINE_ARGS(webui-user.bat) - Start WebUI
- Select
Image API InterfacetoWebUI - Make sure
Image Interface IP Address:Portsame as your WerUI page - Have fun
Custom path for some 3rd party mixed backend
[!WARNING]
Enable custom path will override your model path settings.
Not recommend for official WebUI(Forge Neo/A1111) and ComfyUI.To enable a custom path, modify the file
data/custom_path.yaml.
- Set
use_custom_pathtotrue - Set
enabletofalseto disable whole category - Comment out to disable any single custom path you don't need to override
- Supports both single string and multi-line string for path lists
- Supports absolute and relative paths (relative to base_path)
Folder path issue for Remote usage
SAA needs to search your ComfyUI/WebUI checkpoints folder to retrieve models, LoRAs and other items. If you use a remote back-end address instead of 127.0.0.1, the folder search will fail and SAA will run inDefault mode. In this mode, you cannot change the models or set the LoRAs by LoRA slot.
There are two ways to solve this problem:
Mirror folder- copy your remotemodelsfolder to local, then setup SAA with the local folder. This is simple, but you need more space to mirror the entiremodelsfolder to local folder.Symbolic link or Shared folder- Create aSymbolic linkor simply setup your remotemodelsfolder as shared folder (read-only recommended), then setup SAA with that folder.
Advanced security settings (API authentication)
[!WARNING]
DO NOT forward any UNSECURED local port to public internet
WebUI(Forge Neo) ONLY, DO NOT forward Comfyui API to public internet until they create a proper and secured way
Check more WebUI(Forge Neo) command args at Command-Line-Arguments-and-Settings
Copy your webui-user.bat to webui-user-api.bat then edit it with following args.
Replace user:pass to your Username:Password
--api --api-auth Enable API and API authentication.
--nowebui means you don't need the WebUI browser interface.
--port 58189 API Call port to 58189
set COMMANDLINE_ARGS= --xformers --no-half-vae --api --api-auth user:pass --nowebui --port 58189
Start your Forge Neo with new webui-user-api.bat
Copy and paste your Username:Password to SAA->Settings->WebUI API Auth, then set Enable to ON
------
Hires Fix and Image Color Transfer
Please refer to Image Color Transfer for more details about Image Color Transfer. Due to lack of generate rule and missing openCV, Color transfer no longer support in WebUIMakesure all upscaler models located in upscale_models folder.
Notes for ComfyUI:
Comfyui needs to download upscale models by yourself. Select Manager->Model Manager and filter with upscale, then download them.
Upscaler notes for WebUI(Forge Neo/A1111):
WebUI uses a name-based upscaler model list. The static upscaler list should work, and will update to API list after the first generate.
Forge uses a file-based upscaler model list. But it's messy!
IMPORTANT: If the upscale_models folder is NOT exist, SAA will use static upscaler list
If you're confused about how to do it, don't panic—just run generate once, and HiFix model list will update properly.
The solution:
1. Create a folder called upscale_models inside the models folder and put all your upscaler models in it.
2. Create a symbolic link named after the upscaler model folder, e.g. ESRGAN, which points to upscale_models.
3. Restart your Forge. The Hires Fix model should now work and will update to API list after the first generate.
------
Chinese Translate and Character Verification
Many thanks to the following people for their selfless contributions, who gave up their valuable time to provide Chinese translation and character data verification. They are listed in no particular order. Silence, 燦夜, 镜流の粉丝, 樱小路朝日, 满开之萤, and two more who wish to remain anonymous.Character List Special thanks
lanner0403 WAI-NSFW-illustrious-character-select Cell1310 Illustrious XL (v0.1) Recognized Characters List mobedoor #23 UdinXProgrammer #62 Nurimtod #75 #83 atmogenic #84 #85 funnygeeker #87 ------FAQ
Double clickedsaa.exe but nothing happen?
- It might caused by files download issue or missing files.
- Try run it in console, by input
cmdin your Explorer's address bar to open a console. - Type
saathen enter in console, check backend logs for more information.
- Close the App
- Delete
settings.jsoninresources/app/settings - Try it again
- In most cases, it's the wrong address for the (ComfyUI/WebUI) back-end API.
- YES
- Check
Advanced security settings (API authentication)for more information.
- Install
ComfyUI_Mira - Restart your ComfyUI
None (ComfyUI)
- Have you modified the default directory configuration?
- A non-official version?
- Check #58
ComfyUI/WebUI is busy, cannot run new generation, please try again later. Refer to 5, 6 in README_SAAC.md
VAEDecode crashes on Moss / Flux2 Klein (CUTLASS Mma<16,8,16> / CUDA 719)
- Turing (RTX 20) / Pascal (GTX 10) only. Newer cards are fine.
- ComfyUI 0.43+ fused Flux2 VAE path is the trigger. SDXL / Anima / Qwen Image 2.1 are usually unaffected.
- Enable
Override VAEunder the FP16 switches in the Model panel (needs latest ComfyUI_MiraSubPack). - See Turing FP16.