├── data
└── .gitkeep
├── .gitignore
├── images
├── flux-dev.png
├── flux-dev-fp8.png
├── flux-schnell.png
└── flux-schnell-fp8.png
├── scripts
├── models_fp8.txt
├── models.txt
├── install_comfyui.sh
└── entrypoint.sh
├── docker-compose.yml
├── Dockerfile
├── README.md
└── workflows
├── workflow-flux-schnell-fp8.json
├── workflow-flux-dev-fp8.json
├── workflow-flux-schnell.json
└── workflow-flux-dev.json
/data/.gitkeep:
--------------------------------------------------------------------------------
1 |
--------------------------------------------------------------------------------
/.gitignore:
--------------------------------------------------------------------------------
1 | data/*
2 | !data/.gitkeep
3 | .env
4 | build*
--------------------------------------------------------------------------------
/images/flux-dev.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/frefrik/comfyui-flux/HEAD/images/flux-dev.png
--------------------------------------------------------------------------------
/images/flux-dev-fp8.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/frefrik/comfyui-flux/HEAD/images/flux-dev-fp8.png
--------------------------------------------------------------------------------
/images/flux-schnell.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/frefrik/comfyui-flux/HEAD/images/flux-schnell.png
--------------------------------------------------------------------------------
/images/flux-schnell-fp8.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/frefrik/comfyui-flux/HEAD/images/flux-schnell-fp8.png
--------------------------------------------------------------------------------
/scripts/models_fp8.txt:
--------------------------------------------------------------------------------
1 | # FLUX.1[schnell] FP8
2 | https://huggingface.co/Comfy-Org/flux1-schnell/resolve/main/flux1-schnell-fp8.safetensors
3 | dir=ComfyUI/models/checkpoints
4 | out=flux1-schnell-fp8.safetensors
5 |
6 | # FLUX.1[dev] FP8
7 | https://huggingface.co/Comfy-Org/flux1-dev/resolve/main/flux1-dev-fp8.safetensors
8 | dir=ComfyUI/models/checkpoints
9 | out=flux1-dev-fp8.safetensors
10 |
--------------------------------------------------------------------------------
/docker-compose.yml:
--------------------------------------------------------------------------------
1 | services:
2 | comfyui:
3 | container_name: comfyui
4 | image: frefrik/comfyui-flux:latest
5 | restart: unless-stopped
6 | ports:
7 | - "8188:8188"
8 | volumes:
9 | - "./data:/app"
10 | environment:
11 | - CLI_ARGS=
12 | - HF_TOKEN=${HF_TOKEN}
13 | - LOW_VRAM=${LOW_VRAM:-false}
14 | deploy:
15 | resources:
16 | reservations:
17 | devices:
18 | - driver: nvidia
19 | device_ids: ['0']
20 | capabilities: [gpu]
--------------------------------------------------------------------------------
/scripts/models.txt:
--------------------------------------------------------------------------------
1 | # FLUX.1[schnell] UNet
2 | # Requires HF_TOKEN
3 | https://huggingface.co/black-forest-labs/FLUX.1-schnell/resolve/main/flux1-schnell.safetensors
4 | dir=ComfyUI/models/unet
5 | out=flux1-schnell.safetensors
6 |
7 | # FLUX.1[dev] UNet (Requires HF_TOKEN)
8 | # Requires HF_TOKEN
9 | https://huggingface.co/black-forest-labs/FLUX.1-dev/resolve/main/flux1-dev.safetensors
10 | dir=ComfyUI/models/unet
11 | out=flux1-dev.safetensors
12 |
13 | # Flux Text Encoders
14 | https://huggingface.co/comfyanonymous/flux_text_encoders/resolve/main/clip_l.safetensors
15 | dir=ComfyUI/models/clip
16 | out=clip_l.safetensors
17 | https://huggingface.co/comfyanonymous/flux_text_encoders/resolve/main/t5xxl_fp16.safetensors
18 | dir=ComfyUI/models/clip
19 | out=t5xxl_fp16.safetensors
20 | https://huggingface.co/comfyanonymous/flux_text_encoders/resolve/main/t5xxl_fp8_e4m3fn.safetensors
21 | dir=ComfyUI/models/clip
22 | out=t5xxl_fp8_e4m3fn.safetensors
23 |
24 | # VAE
25 | # Requires HF_TOKEN
26 | https://huggingface.co/black-forest-labs/FLUX.1-schnell/resolve/main/ae.safetensors
27 | dir=ComfyUI/models/vae
28 | out=ae.safetensors
29 |
30 | # Loras
31 | https://huggingface.co/comfyanonymous/flux_RealismLora_converted_comfyui/resolve/main/flux_realism_lora.safetensors
32 | dir=ComfyUI/models/loras
33 | out=flux_realism_lora.safetensors
34 |
--------------------------------------------------------------------------------
/scripts/install_comfyui.sh:
--------------------------------------------------------------------------------
1 | #!/bin/bash
2 |
3 | echo "########################################"
4 | echo "[INFO] Downloading ComfyUI & Manager..."
5 | echo "########################################"
6 |
7 | set -euxo pipefail
8 |
9 | # ComfyUI
10 | cd /app
11 | git clone --recurse-submodules \
12 | https://github.com/comfyanonymous/ComfyUI.git \
13 | || (cd /app/ComfyUI && git pull)
14 |
15 | # ComfyUI Manager
16 | cd /app/ComfyUI/custom_nodes
17 | git clone --recurse-submodules \
18 | https://github.com/ltdrdata/ComfyUI-Manager.git \
19 | || (cd /app/ComfyUI/custom_nodes/ComfyUI-Manager && git pull)
20 |
21 | # Install dependencies for ComfyUI and Manager
22 | for req_file in "/app/ComfyUI/requirements.txt" "/app/ComfyUI/custom_nodes/ComfyUI-Manager/requirements.txt"; do
23 | if [ -f "$req_file" ]; then
24 | echo "[INFO] Installing requirements from $req_file"
25 | uv pip install -r "$req_file" || echo "Warning: Some dependencies from $req_file may have failed to install"
26 | fi
27 | done
28 |
29 | # Copy workflows
30 | WORKFLOWS_DIR="/app/ComfyUI/user/default/workflows"
31 | mkdir -p "$WORKFLOWS_DIR"
32 |
33 | if [ -d "/workflows" ]; then
34 | cp -R /workflows/* "$WORKFLOWS_DIR/"
35 | echo "[INFO] Workflows copied successfully."
36 | else
37 | echo "[WARNING] /workflows directory not found. Skipping workflow copy."
38 | fi
39 |
40 | # Finish
41 | touch /app/.download-complete
--------------------------------------------------------------------------------
/Dockerfile:
--------------------------------------------------------------------------------
1 | FROM python:3.12-slim-trixie
2 |
3 | # Build arguments
4 | ARG CUDA_VERSION=cu128
5 |
6 | # Environment variables
7 | ENV DEBIAN_FRONTEND=noninteractive \
8 | UV_COMPILE_BYTECODE=1 \
9 | UV_LINK_MODE=copy \
10 | VIRTUAL_ENV=/opt/venv \
11 | PATH="/opt/venv/bin:$PATH" \
12 | CLI_ARGS=""
13 |
14 | # Copy UV binaries
15 | COPY --from=ghcr.io/astral-sh/uv:latest /uv /uvx /bin/
16 |
17 | # Install system dependencies
18 | RUN apt-get update && \
19 | apt-get install -y --no-install-recommends \
20 | git \
21 | build-essential \
22 | gcc \
23 | g++ \
24 | aria2 \
25 | libgl1 \
26 | libglib2.0-0 \
27 | fonts-dejavu-core \
28 | sudo \
29 | ca-certificates && \
30 | apt-get clean && \
31 | rm -rf /var/lib/apt/lists/* /tmp/* /var/tmp/*
32 |
33 |
34 | # Create application directories and user
35 | RUN useradd -m -d /app -s /bin/bash runner && \
36 | mkdir -p /app /scripts /workflows /opt/venv && \
37 | chown -R runner:runner /app /scripts /workflows /opt/venv && \
38 | echo "runner ALL=(ALL) NOPASSWD:ALL" > /etc/sudoers.d/runner && \
39 | chmod 0440 /etc/sudoers.d/runner
40 |
41 | # Set working directory
42 | WORKDIR /app
43 |
44 | # Switch to non-root user
45 | USER runner
46 |
47 | # Create virtual environment
48 | RUN uv venv /opt/venv
49 |
50 | # Install torch, torchvision, torchaudio and xformers
51 | RUN uv pip install --no-cache \
52 | torch \
53 | torchvision \
54 | torchaudio \
55 | xformers \
56 | --index-url https://download.pytorch.org/whl/${CUDA_VERSION}
57 |
58 | # Install onnxruntime-gpu
59 | RUN uv pip install --no-cache \
60 | onnxruntime-gpu \
61 | --extra-index-url https://aiinfra.pkgs.visualstudio.com/PublicPackages/_packaging/onnxruntime-cuda-12/pypi/simple/
62 |
63 | # Copy application files
64 | COPY --chown=runner:runner scripts/. /scripts/
65 | COPY --chown=runner:runner workflows/. /workflows/
66 |
67 | VOLUME ["/app"]
68 | EXPOSE 8188
69 | CMD ["bash","/scripts/entrypoint.sh"]
--------------------------------------------------------------------------------
/scripts/entrypoint.sh:
--------------------------------------------------------------------------------
1 | #!/bin/bash
2 |
3 | set -e
4 |
5 | # Ensure correct permissions for /app directory
6 | if [ ! -w "/app" ]; then
7 | echo "Warning: Cannot write to /app. Attempting to fix permissions..."
8 | sudo chown -R $(id -u):$(id -g) /app
9 | fi
10 |
11 | # Install or update ComfyUI
12 | cd /app
13 | if [ ! -d "/app/ComfyUI" ]; then
14 | echo "ComfyUI not found. Installing..."
15 | chmod +x /scripts/install_comfyui.sh
16 | bash /scripts/install_comfyui.sh
17 | else
18 | echo "Updating ComfyUI..."
19 | cd /app/ComfyUI
20 | git fetch origin master
21 | git reset --hard origin/master
22 | uv pip install -r requirements.txt
23 | echo "Updating ComfyUI-Manager..."
24 | cd /app/ComfyUI/custom_nodes/ComfyUI-Manager
25 | git fetch origin main
26 | git reset --hard origin/main
27 | uv pip install -r requirements.txt
28 | cd /app
29 | fi
30 |
31 | # Determine model list file based on LOW_VRAM
32 | if [ "$LOW_VRAM" == "true" ]; then
33 | echo "[INFO] LOW_VRAM is set to true. Downloading FP8 models..."
34 | MODEL_LIST_FILE="/scripts/models_fp8.txt"
35 | else
36 | echo "[INFO] LOW_VRAM is not set or false. Downloading non-FP8 models..."
37 | MODEL_LIST_FILE="/scripts/models.txt"
38 | fi
39 |
40 | # Create temporary file for model list
41 | TEMP_MODEL_LIST=$(mktemp)
42 |
43 | # Filter models based on MODELS_DOWNLOAD if set
44 | if [ -n "${MODELS_DOWNLOAD}" ]; then
45 | echo "[INFO] Filtering models based on MODELS_DOWNLOAD=${MODELS_DOWNLOAD}"
46 |
47 | # Convert to lowercase for case-insensitive matching
48 | MODELS_DOWNLOAD_LC=$(echo "$MODELS_DOWNLOAD" | tr '[:upper:]' '[:lower:]')
49 |
50 | if [ "$LOW_VRAM" == "true" ]; then
51 | # For FP8 models, only copy the specified model sections
52 | if [[ "$MODELS_DOWNLOAD_LC" == *"schnell"* ]]; then
53 | sed -n '/# FLUX.1\[schnell\] FP8/,/^$/p' "$MODEL_LIST_FILE" >> "$TEMP_MODEL_LIST"
54 | fi
55 | if [[ "$MODELS_DOWNLOAD_LC" == *"dev"* ]]; then
56 | sed -n '/# FLUX.1\[dev\] FP8/,/^$/p' "$MODEL_LIST_FILE" >> "$TEMP_MODEL_LIST"
57 | fi
58 | else
59 | # For full models, copy dependencies first
60 | sed -n '/# Flux Text Encoders/,/# VAE/p' "$MODEL_LIST_FILE" >> "$TEMP_MODEL_LIST"
61 | sed -n '/# Loras/,/^$/p' "$MODEL_LIST_FILE" >> "$TEMP_MODEL_LIST"
62 |
63 | # Then add requested models and their VAE
64 | if [[ "$MODELS_DOWNLOAD_LC" == *"schnell"* ]]; then
65 | sed -n '/# FLUX.1\[schnell\] UNet/,/^$/p' "$MODEL_LIST_FILE" >> "$TEMP_MODEL_LIST"
66 | sed -n '/# VAE/,/# Loras/p' "$MODEL_LIST_FILE" >> "$TEMP_MODEL_LIST"
67 | fi
68 | if [[ "$MODELS_DOWNLOAD_LC" == *"dev"* ]]; then
69 | sed -n '/# FLUX.1\[dev\] UNet/,/^$/p' "$MODEL_LIST_FILE" >> "$TEMP_MODEL_LIST"
70 | sed -n '/# VAE/,/# Loras/p' "$MODEL_LIST_FILE" >> "$TEMP_MODEL_LIST"
71 | fi
72 | fi
73 |
74 | # If the temp file is empty (invalid MODELS_DOWNLOAD value), use the full list
75 | if [ ! -s "$TEMP_MODEL_LIST" ]; then
76 | echo "[WARN] No models matched MODELS_DOWNLOAD value. Using complete model list."
77 | cp "$MODEL_LIST_FILE" "$TEMP_MODEL_LIST"
78 | fi
79 | else
80 | # If MODELS_DOWNLOAD not set, use the complete list
81 | cp "$MODEL_LIST_FILE" "$TEMP_MODEL_LIST"
82 | fi
83 |
84 | # Download models
85 | echo "########################################"
86 | echo "[INFO] Downloading models..."
87 | echo "########################################"
88 |
89 | if [ -z "${HF_TOKEN}" ]; then
90 | echo "[WARN] HF_TOKEN not provided. Skipping models that require authentication..."
91 | sed '/# Requires HF_TOKEN/,/^$/d' "$TEMP_MODEL_LIST" > /scripts/models_filtered.txt
92 | DOWNLOAD_LIST_FILE="/scripts/models_filtered.txt"
93 | else
94 | DOWNLOAD_LIST_FILE="$TEMP_MODEL_LIST"
95 | fi
96 |
97 | aria2c --input-file="$DOWNLOAD_LIST_FILE" \
98 | --allow-overwrite=false --auto-file-renaming=false --continue=true \
99 | --max-connection-per-server=5 --conditional-get=true \
100 | ${HF_TOKEN:+--header="Authorization: Bearer ${HF_TOKEN}"}
101 |
102 | # Cleanup
103 | rm -f "$TEMP_MODEL_LIST"
104 |
105 | echo "########################################"
106 | echo "[INFO] Starting ComfyUI..."
107 | echo "########################################"
108 |
109 | export PATH="${PATH}:/app/.local/bin"
110 | export PYTHONPYCACHEPREFIX="/app/.cache/pycache"
111 |
112 | cd /app
113 |
114 | python3 ./ComfyUI/main.py --listen --port 8188 ${CLI_ARGS}
115 |
--------------------------------------------------------------------------------
/README.md:
--------------------------------------------------------------------------------
1 | # ComfyUI Flux
2 |
3 | ComfyUI Flux is a Docker-based setup for running [ComfyUI](https://github.com/comfyanonymous/ComfyUI) with [FLUX.1](https://www.basedlabs.ai/tools/flux1) models and additional features.
4 |
5 | ## Features
6 |
7 | - Dockerized ComfyUI environment
8 | - Automatic installation of ComfyUI and ComfyUI-Manager
9 | - **Low VRAM Mode**: Download and use FP8 models for reduced VRAM usage
10 | - Pre-configured with FLUX models and VAEs
11 | - Easy model management and updates
12 | - GPU support with CUDA 12.6, 12.8 (default), or 12.9
13 |
14 | ## Prerequisites
15 |
16 | - Docker and Docker Compose
17 | - NVIDIA GPU with CUDA support (for GPU acceleration)
18 | - (Optional) Huggingface account and token (for downloading official FLUX.1[dev] and FLUX.1[schnell] models)
19 |
20 | ## Quick Start
21 |
22 | 1. (Optional) Create a `.env` file in the project root and add your Huggingface token:
23 |
24 | ```bash
25 | # For downloading FLUX.1[dev] and FLUX.1[schnell] model files.
26 | # Get your token from https://huggingface.co/settings/tokens
27 | HF_TOKEN=your_huggingface_token
28 | ```
29 |
30 | 2. Download the `docker-compose.yml` file:
31 |
32 | ```bash
33 | wget https://raw.githubusercontent.com/frefrik/comfyui-flux/main/docker-compose.yml
34 | ```
35 |
36 | Alternatively, you can create a `docker-compose.yml` file and copy/paste the following contents:
37 |
38 | ```yaml
39 | services:
40 | comfyui:
41 | container_name: comfyui
42 | image: frefrik/comfyui-flux:latest
43 | restart: unless-stopped
44 | ports:
45 | - "8188:8188"
46 | volumes:
47 | - "./data:/app"
48 | environment:
49 | - CLI_ARGS=
50 | - HF_TOKEN=${HF_TOKEN}
51 | - LOW_VRAM=${LOW_VRAM:-false}
52 | deploy:
53 | resources:
54 | reservations:
55 | devices:
56 | - driver: nvidia
57 | device_ids: ['0']
58 | capabilities: [gpu]
59 | ```
60 |
61 | **Note:** The default Docker image uses CUDA 12.8 (`cu128`). If you require a specific CUDA version, you can specify the tag in the image name. For example:
62 |
63 | ```yaml
64 | image: frefrik/comfyui-flux:cu129
65 | ```
66 |
67 | 3. Run the container using Docker Compose:
68 |
69 | ```bash
70 | docker-compose up -d
71 | ```
72 |
73 | **Note:** The first time you run the container, it will download all the included models before starting up. This process may take some time depending on your internet connection.
74 |
75 | 4. Access ComfyUI in your browser at `http://localhost:8188`
76 |
77 | ## Environment Variables
78 |
79 | - `HF_TOKEN` - Your Hugging Face access token. **Required** to download the official `flux1-dev`, `flux1-schnell` models.
80 | - `LOW_VRAM` - Set to `true` to download and configure ComfyUI for FP8 models, reducing VRAM usage. See [Low VRAM Mode](#low-vram-mode) section.
81 | - `MODELS_DOWNLOAD` - Comma-separated list specifying which FLUX base models to download (`schnell`, `dev`). If not set, both models will be downloaded.
82 | - `CLI_ARGS` - Additional command-line arguments to pass directly to the ComfyUI.
83 |
84 | ## Low VRAM Mode
85 |
86 | By setting the `LOW_VRAM` environment variable to `true`, the container will download and use the FP8 models, which are optimized for lower VRAM usage. The FP8 versions have CLIP and VAE merged, so only the checkpoint files are needed.
87 |
88 | Enable Low VRAM Mode:
89 |
90 | ```bash
91 | LOW_VRAM=true
92 | ```
93 |
94 | ## Model Files
95 |
96 | Overview of the model files that will be downloaded when using this container.
97 | Both official FLUX.1[dev] and FLUX.1[schnell] model files now require a `HF_TOKEN` for download.
98 |
99 | ### When `LOW_VRAM=false` (default)
100 |
101 | The following model files will be downloaded by default, unless specified otherwise in `MODELS_DOWNLOAD`:
102 |
103 | | Type | Model File Name | Size | Notes |
104 | |-------------|-------------------------------|---------|-------------------------------------------------|
105 | | UNet | flux1-schnell.safetensors | 23 GiB | requires `HF_TOKEN` for download |
106 | | UNet | flux1-dev.safetensors | 23 GiB | requires `HF_TOKEN` for download |
107 | | CLIP | clip_l.safetensors | 235 MiB | |
108 | | CLIP | t5xxl_fp16.safetensors | 9.2 GiB | |
109 | | CLIP | t5xxl_fp8_e4m3fn.safetensors | 4.6 GiB | |
110 | | LoRA | flux_realism_lora.safetensors | 22 MiB | |
111 | | VAE | ae.safetensors | 320 MiB | requires `HF_TOKEN` for download |
112 |
113 | ### When `LOW_VRAM=true`
114 |
115 | | Type | Model File Name | Size | Notes |
116 | |-------------|-------------------------------|---------|-------------------------------------------------|
117 | | Checkpoint | flux1-dev-fp8.safetensors | 17 GiB | |
118 | | Checkpoint | flux1-schnell-fp8.safetensors | 17 GiB | |
119 |
120 | ## Workflows
121 |
122 | Download the images below and drag them into ComfyUI to load the corresponding workflows.
123 |
124 | ### Official versions
125 |
126 | | FLUX.1[schnell] | FLUX.1[dev] |
127 | |-----------------|-------------|
128 | |

[Download](https://raw.githubusercontent.com/frefrik/comfyui-flux/refs/heads/main/images/flux-schnell.png)
| 
[Download](https://raw.githubusercontent.com/frefrik/comfyui-flux/refs/heads/main/images/flux-dev.png)
|
129 |
130 | ### FP8 versions (LOW_VRAM)
131 |
132 | | FLUX.1[schnell] FP8 | FLUX.1[dev] FP8 |
133 | |---------------------|-----------------|
134 | | 
[Download](https://raw.githubusercontent.com/frefrik/comfyui-flux/main/images/flux-schnell-fp8.png)
| 
[Download](https://raw.githubusercontent.com/frefrik/comfyui-flux/main/images/flux-dev-fp8.png)
|
135 |
136 | ## Updating
137 |
138 | The ComfyUI and ComfyUI-Manager are automatically updated when the container starts. To update the base image and other dependencies, pull the latest version of the Docker image using:
139 |
140 | ```bash
141 | docker-compose pull
142 | ```
143 |
144 | ## Additional Notes
145 |
146 | - **Switching Between Modes**: If you change the `LOW_VRAM` setting after the initial run, the container will automatically download the required models for the new setting upon restart.
147 | - **Model Selection**: Use the optional `MODELS_DOWNLOAD` environment variable to specify which FLUX models to download:
148 | - `MODELS_DOWNLOAD="schnell"`: Download only FLUX.1[schnell] model
149 | - `MODELS_DOWNLOAD="dev"`: Download only FLUX.1[dev] model
150 | - `MODELS_DOWNLOAD="schnell,dev"` or not set: Download both models (default)
151 | - When `LOW_VRAM=false`, necessary dependencies (VAE, text encoders, LoRA) are always included
152 | - **Model Downloading**: The scripts are designed to skip downloading models that already exist, so you won't waste bandwidth re-downloading models you already have.
153 | - **Huggingface Token**: The `HF_TOKEN` is necessary for downloading the `flux1-dev.safetensors`, `flux1-schnell.safetensors`, and `ae.safetensors` models when `LOW_VRAM=false`.
154 |
--------------------------------------------------------------------------------
/workflows/workflow-flux-schnell-fp8.json:
--------------------------------------------------------------------------------
1 | {
2 | "last_node_id": 36,
3 | "last_link_id": 58,
4 | "nodes": [
5 | {
6 | "id": 33,
7 | "type": "CLIPTextEncode",
8 | "pos": {
9 | "0": 390,
10 | "1": 400
11 | },
12 | "size": {
13 | "0": 422.84503173828125,
14 | "1": 164.31304931640625
15 | },
16 | "flags": {
17 | "collapsed": true
18 | },
19 | "order": 4,
20 | "mode": 0,
21 | "inputs": [
22 | {
23 | "name": "clip",
24 | "type": "CLIP",
25 | "link": 54,
26 | "slot_index": 0
27 | }
28 | ],
29 | "outputs": [
30 | {
31 | "name": "CONDITIONING",
32 | "type": "CONDITIONING",
33 | "links": [
34 | 55
35 | ],
36 | "slot_index": 0
37 | }
38 | ],
39 | "title": "CLIP Text Encode (Negative Prompt)",
40 | "properties": {
41 | "Node name for S&R": "CLIPTextEncode"
42 | },
43 | "widgets_values": [
44 | ""
45 | ],
46 | "color": "#322",
47 | "bgcolor": "#533"
48 | },
49 | {
50 | "id": 27,
51 | "type": "EmptySD3LatentImage",
52 | "pos": {
53 | "0": 471,
54 | "1": 455
55 | },
56 | "size": {
57 | "0": 315,
58 | "1": 106
59 | },
60 | "flags": {},
61 | "order": 0,
62 | "mode": 0,
63 | "inputs": [],
64 | "outputs": [
65 | {
66 | "name": "LATENT",
67 | "type": "LATENT",
68 | "links": [
69 | 51
70 | ],
71 | "slot_index": 0,
72 | "shape": 3
73 | }
74 | ],
75 | "properties": {
76 | "Node name for S&R": "EmptySD3LatentImage"
77 | },
78 | "widgets_values": [
79 | 1024,
80 | 1024,
81 | 1
82 | ],
83 | "color": "#323",
84 | "bgcolor": "#535"
85 | },
86 | {
87 | "id": 8,
88 | "type": "VAEDecode",
89 | "pos": {
90 | "0": 1151,
91 | "1": 195
92 | },
93 | "size": {
94 | "0": 210,
95 | "1": 46
96 | },
97 | "flags": {},
98 | "order": 6,
99 | "mode": 0,
100 | "inputs": [
101 | {
102 | "name": "samples",
103 | "type": "LATENT",
104 | "link": 52
105 | },
106 | {
107 | "name": "vae",
108 | "type": "VAE",
109 | "link": 46
110 | }
111 | ],
112 | "outputs": [
113 | {
114 | "name": "IMAGE",
115 | "type": "IMAGE",
116 | "links": [
117 | 9
118 | ],
119 | "slot_index": 0
120 | }
121 | ],
122 | "properties": {
123 | "Node name for S&R": "VAEDecode"
124 | },
125 | "widgets_values": []
126 | },
127 | {
128 | "id": 9,
129 | "type": "SaveImage",
130 | "pos": {
131 | "0": 1375,
132 | "1": 194
133 | },
134 | "size": {
135 | "0": 985.3012084960938,
136 | "1": 1060.3828125
137 | },
138 | "flags": {},
139 | "order": 7,
140 | "mode": 0,
141 | "inputs": [
142 | {
143 | "name": "images",
144 | "type": "IMAGE",
145 | "link": 9
146 | }
147 | ],
148 | "outputs": [],
149 | "properties": {},
150 | "widgets_values": [
151 | "ComfyUI"
152 | ]
153 | },
154 | {
155 | "id": 30,
156 | "type": "CheckpointLoaderSimple",
157 | "pos": {
158 | "0": 48,
159 | "1": 192
160 | },
161 | "size": {
162 | "0": 315,
163 | "1": 98
164 | },
165 | "flags": {},
166 | "order": 1,
167 | "mode": 0,
168 | "inputs": [],
169 | "outputs": [
170 | {
171 | "name": "MODEL",
172 | "type": "MODEL",
173 | "links": [
174 | 47
175 | ],
176 | "slot_index": 0,
177 | "shape": 3
178 | },
179 | {
180 | "name": "CLIP",
181 | "type": "CLIP",
182 | "links": [
183 | 45,
184 | 54
185 | ],
186 | "slot_index": 1,
187 | "shape": 3
188 | },
189 | {
190 | "name": "VAE",
191 | "type": "VAE",
192 | "links": [
193 | 46
194 | ],
195 | "slot_index": 2,
196 | "shape": 3
197 | }
198 | ],
199 | "properties": {
200 | "Node name for S&R": "CheckpointLoaderSimple"
201 | },
202 | "widgets_values": [
203 | "flux1-schnell-fp8.safetensors"
204 | ]
205 | },
206 | {
207 | "id": 34,
208 | "type": "Note",
209 | "pos": {
210 | "0": 831,
211 | "1": 501
212 | },
213 | "size": {
214 | "0": 282.8617858886719,
215 | "1": 164.08004760742188
216 | },
217 | "flags": {},
218 | "order": 2,
219 | "mode": 0,
220 | "inputs": [],
221 | "outputs": [],
222 | "properties": {
223 | "text": ""
224 | },
225 | "widgets_values": [
226 | "Note that Flux dev and schnell do not have any negative prompt so CFG should be set to 1.0. Setting CFG to 1.0 means the negative prompt is ignored.\n\nThe schnell model is a distilled model that can generate a good image with only 4 steps."
227 | ],
228 | "color": "#432",
229 | "bgcolor": "#653"
230 | },
231 | {
232 | "id": 31,
233 | "type": "KSampler",
234 | "pos": {
235 | "0": 816,
236 | "1": 192
237 | },
238 | "size": {
239 | "0": 315,
240 | "1": 262
241 | },
242 | "flags": {},
243 | "order": 5,
244 | "mode": 0,
245 | "inputs": [
246 | {
247 | "name": "model",
248 | "type": "MODEL",
249 | "link": 47
250 | },
251 | {
252 | "name": "positive",
253 | "type": "CONDITIONING",
254 | "link": 58
255 | },
256 | {
257 | "name": "negative",
258 | "type": "CONDITIONING",
259 | "link": 55
260 | },
261 | {
262 | "name": "latent_image",
263 | "type": "LATENT",
264 | "link": 51
265 | }
266 | ],
267 | "outputs": [
268 | {
269 | "name": "LATENT",
270 | "type": "LATENT",
271 | "links": [
272 | 52
273 | ],
274 | "slot_index": 0,
275 | "shape": 3
276 | }
277 | ],
278 | "properties": {
279 | "Node name for S&R": "KSampler"
280 | },
281 | "widgets_values": [
282 | 887041056990335,
283 | "randomize",
284 | 4,
285 | 1,
286 | "euler",
287 | "simple",
288 | 1
289 | ]
290 | },
291 | {
292 | "id": 6,
293 | "type": "CLIPTextEncode",
294 | "pos": {
295 | "0": 384,
296 | "1": 192
297 | },
298 | "size": {
299 | "0": 422.84503173828125,
300 | "1": 164.31304931640625
301 | },
302 | "flags": {},
303 | "order": 3,
304 | "mode": 0,
305 | "inputs": [
306 | {
307 | "name": "clip",
308 | "type": "CLIP",
309 | "link": 45
310 | }
311 | ],
312 | "outputs": [
313 | {
314 | "name": "CONDITIONING",
315 | "type": "CONDITIONING",
316 | "links": [
317 | 58
318 | ],
319 | "slot_index": 0
320 | }
321 | ],
322 | "title": "CLIP Text Encode (Positive Prompt)",
323 | "properties": {
324 | "Node name for S&R": "CLIPTextEncode"
325 | },
326 | "widgets_values": [
327 | "photo of a cat holding up a neonsign that says \"FLUX SCHNELL FP 8\""
328 | ],
329 | "color": "#232",
330 | "bgcolor": "#353"
331 | }
332 | ],
333 | "links": [
334 | [
335 | 9,
336 | 8,
337 | 0,
338 | 9,
339 | 0,
340 | "IMAGE"
341 | ],
342 | [
343 | 45,
344 | 30,
345 | 1,
346 | 6,
347 | 0,
348 | "CLIP"
349 | ],
350 | [
351 | 46,
352 | 30,
353 | 2,
354 | 8,
355 | 1,
356 | "VAE"
357 | ],
358 | [
359 | 47,
360 | 30,
361 | 0,
362 | 31,
363 | 0,
364 | "MODEL"
365 | ],
366 | [
367 | 51,
368 | 27,
369 | 0,
370 | 31,
371 | 3,
372 | "LATENT"
373 | ],
374 | [
375 | 52,
376 | 31,
377 | 0,
378 | 8,
379 | 0,
380 | "LATENT"
381 | ],
382 | [
383 | 54,
384 | 30,
385 | 1,
386 | 33,
387 | 0,
388 | "CLIP"
389 | ],
390 | [
391 | 55,
392 | 33,
393 | 0,
394 | 31,
395 | 2,
396 | "CONDITIONING"
397 | ],
398 | [
399 | 58,
400 | 6,
401 | 0,
402 | 31,
403 | 1,
404 | "CONDITIONING"
405 | ]
406 | ],
407 | "groups": [],
408 | "config": {},
409 | "extra": {
410 | "ds": {
411 | "scale": 0.683013455365071,
412 | "offset": [
413 | -3.187623496637743,
414 | 41.041799397560105
415 | ]
416 | }
417 | },
418 | "version": 0.4
419 | }
--------------------------------------------------------------------------------
/workflows/workflow-flux-dev-fp8.json:
--------------------------------------------------------------------------------
1 | {
2 | "last_node_id": 36,
3 | "last_link_id": 57,
4 | "nodes": [
5 | {
6 | "id": 33,
7 | "type": "CLIPTextEncode",
8 | "pos": {
9 | "0": 390,
10 | "1": 400
11 | },
12 | "size": {
13 | "0": 422.84503173828125,
14 | "1": 164.31304931640625
15 | },
16 | "flags": {
17 | "collapsed": true
18 | },
19 | "order": 4,
20 | "mode": 0,
21 | "inputs": [
22 | {
23 | "name": "clip",
24 | "type": "CLIP",
25 | "link": 54,
26 | "slot_index": 0,
27 | "label": "clip"
28 | }
29 | ],
30 | "outputs": [
31 | {
32 | "name": "CONDITIONING",
33 | "type": "CONDITIONING",
34 | "links": [
35 | 55
36 | ],
37 | "slot_index": 0,
38 | "label": "CONDITIONING"
39 | }
40 | ],
41 | "title": "CLIP Text Encode (Negative Prompt)",
42 | "properties": {
43 | "Node name for S&R": "CLIPTextEncode"
44 | },
45 | "widgets_values": [
46 | ""
47 | ],
48 | "color": "#322",
49 | "bgcolor": "#533"
50 | },
51 | {
52 | "id": 27,
53 | "type": "EmptySD3LatentImage",
54 | "pos": {
55 | "0": 471,
56 | "1": 455
57 | },
58 | "size": {
59 | "0": 315,
60 | "1": 106
61 | },
62 | "flags": {},
63 | "order": 0,
64 | "mode": 0,
65 | "inputs": [],
66 | "outputs": [
67 | {
68 | "name": "LATENT",
69 | "type": "LATENT",
70 | "links": [
71 | 51
72 | ],
73 | "slot_index": 0,
74 | "shape": 3,
75 | "label": "LATENT"
76 | }
77 | ],
78 | "properties": {
79 | "Node name for S&R": "EmptySD3LatentImage"
80 | },
81 | "widgets_values": [
82 | 1024,
83 | 1024,
84 | 1
85 | ],
86 | "color": "#323",
87 | "bgcolor": "#535"
88 | },
89 | {
90 | "id": 35,
91 | "type": "FluxGuidance",
92 | "pos": {
93 | "0": 576,
94 | "1": 96
95 | },
96 | "size": {
97 | "0": 211.60000610351562,
98 | "1": 58
99 | },
100 | "flags": {},
101 | "order": 5,
102 | "mode": 0,
103 | "inputs": [
104 | {
105 | "name": "conditioning",
106 | "type": "CONDITIONING",
107 | "link": 56,
108 | "label": "conditioning"
109 | }
110 | ],
111 | "outputs": [
112 | {
113 | "name": "CONDITIONING",
114 | "type": "CONDITIONING",
115 | "links": [
116 | 57
117 | ],
118 | "slot_index": 0,
119 | "shape": 3,
120 | "label": "CONDITIONING"
121 | }
122 | ],
123 | "properties": {
124 | "Node name for S&R": "FluxGuidance"
125 | },
126 | "widgets_values": [
127 | 3.5
128 | ]
129 | },
130 | {
131 | "id": 8,
132 | "type": "VAEDecode",
133 | "pos": {
134 | "0": 1151,
135 | "1": 195
136 | },
137 | "size": {
138 | "0": 210,
139 | "1": 46
140 | },
141 | "flags": {},
142 | "order": 7,
143 | "mode": 0,
144 | "inputs": [
145 | {
146 | "name": "samples",
147 | "type": "LATENT",
148 | "link": 52,
149 | "label": "samples"
150 | },
151 | {
152 | "name": "vae",
153 | "type": "VAE",
154 | "link": 46,
155 | "label": "vae"
156 | }
157 | ],
158 | "outputs": [
159 | {
160 | "name": "IMAGE",
161 | "type": "IMAGE",
162 | "links": [
163 | 9
164 | ],
165 | "slot_index": 0,
166 | "label": "IMAGE"
167 | }
168 | ],
169 | "properties": {
170 | "Node name for S&R": "VAEDecode"
171 | },
172 | "widgets_values": []
173 | },
174 | {
175 | "id": 34,
176 | "type": "Note",
177 | "pos": {
178 | "0": 831,
179 | "1": 501
180 | },
181 | "size": {
182 | "0": 282.8617858886719,
183 | "1": 164.08004760742188
184 | },
185 | "flags": {},
186 | "order": 1,
187 | "mode": 0,
188 | "inputs": [],
189 | "outputs": [],
190 | "properties": {
191 | "text": ""
192 | },
193 | "widgets_values": [
194 | "Note that Flux dev and schnell do not have any negative prompt so CFG should be set to 1.0. Setting CFG to 1.0 means the negative prompt is ignored."
195 | ],
196 | "color": "#432",
197 | "bgcolor": "#653"
198 | },
199 | {
200 | "id": 9,
201 | "type": "SaveImage",
202 | "pos": {
203 | "0": 1375,
204 | "1": 194
205 | },
206 | "size": {
207 | "0": 985.3012084960938,
208 | "1": 1060.3828125
209 | },
210 | "flags": {},
211 | "order": 8,
212 | "mode": 0,
213 | "inputs": [
214 | {
215 | "name": "images",
216 | "type": "IMAGE",
217 | "link": 9,
218 | "label": "images"
219 | }
220 | ],
221 | "outputs": [],
222 | "properties": {},
223 | "widgets_values": [
224 | "ComfyUI"
225 | ]
226 | },
227 | {
228 | "id": 31,
229 | "type": "KSampler",
230 | "pos": {
231 | "0": 816,
232 | "1": 192
233 | },
234 | "size": {
235 | "0": 315,
236 | "1": 262
237 | },
238 | "flags": {},
239 | "order": 6,
240 | "mode": 0,
241 | "inputs": [
242 | {
243 | "name": "model",
244 | "type": "MODEL",
245 | "link": 47,
246 | "label": "model"
247 | },
248 | {
249 | "name": "positive",
250 | "type": "CONDITIONING",
251 | "link": 57,
252 | "label": "positive"
253 | },
254 | {
255 | "name": "negative",
256 | "type": "CONDITIONING",
257 | "link": 55,
258 | "label": "negative"
259 | },
260 | {
261 | "name": "latent_image",
262 | "type": "LATENT",
263 | "link": 51,
264 | "label": "latent_image"
265 | }
266 | ],
267 | "outputs": [
268 | {
269 | "name": "LATENT",
270 | "type": "LATENT",
271 | "links": [
272 | 52
273 | ],
274 | "slot_index": 0,
275 | "shape": 3,
276 | "label": "LATENT"
277 | }
278 | ],
279 | "properties": {
280 | "Node name for S&R": "KSampler"
281 | },
282 | "widgets_values": [
283 | 1122807001177657,
284 | "randomize",
285 | 20,
286 | 1,
287 | "euler",
288 | "simple",
289 | 1
290 | ]
291 | },
292 | {
293 | "id": 30,
294 | "type": "CheckpointLoaderSimple",
295 | "pos": {
296 | "0": 48,
297 | "1": 192
298 | },
299 | "size": {
300 | "0": 315,
301 | "1": 98
302 | },
303 | "flags": {},
304 | "order": 2,
305 | "mode": 0,
306 | "inputs": [],
307 | "outputs": [
308 | {
309 | "name": "MODEL",
310 | "type": "MODEL",
311 | "links": [
312 | 47
313 | ],
314 | "slot_index": 0,
315 | "shape": 3,
316 | "label": "MODEL"
317 | },
318 | {
319 | "name": "CLIP",
320 | "type": "CLIP",
321 | "links": [
322 | 45,
323 | 54
324 | ],
325 | "slot_index": 1,
326 | "shape": 3,
327 | "label": "CLIP"
328 | },
329 | {
330 | "name": "VAE",
331 | "type": "VAE",
332 | "links": [
333 | 46
334 | ],
335 | "slot_index": 2,
336 | "shape": 3,
337 | "label": "VAE"
338 | }
339 | ],
340 | "properties": {
341 | "Node name for S&R": "CheckpointLoaderSimple"
342 | },
343 | "widgets_values": [
344 | "flux1-dev-fp8.safetensors"
345 | ]
346 | },
347 | {
348 | "id": 6,
349 | "type": "CLIPTextEncode",
350 | "pos": {
351 | "0": 384,
352 | "1": 192
353 | },
354 | "size": {
355 | "0": 422.84503173828125,
356 | "1": 164.31304931640625
357 | },
358 | "flags": {},
359 | "order": 3,
360 | "mode": 0,
361 | "inputs": [
362 | {
363 | "name": "clip",
364 | "type": "CLIP",
365 | "link": 45,
366 | "label": "clip"
367 | }
368 | ],
369 | "outputs": [
370 | {
371 | "name": "CONDITIONING",
372 | "type": "CONDITIONING",
373 | "links": [
374 | 56
375 | ],
376 | "slot_index": 0,
377 | "label": "CONDITIONING"
378 | }
379 | ],
380 | "title": "CLIP Text Encode (Positive Prompt)",
381 | "properties": {
382 | "Node name for S&R": "CLIPTextEncode"
383 | },
384 | "widgets_values": [
385 | "photo of a cat holding up a sign that says \"FLUX DEV FP 8\""
386 | ],
387 | "color": "#232",
388 | "bgcolor": "#353"
389 | }
390 | ],
391 | "links": [
392 | [
393 | 9,
394 | 8,
395 | 0,
396 | 9,
397 | 0,
398 | "IMAGE"
399 | ],
400 | [
401 | 45,
402 | 30,
403 | 1,
404 | 6,
405 | 0,
406 | "CLIP"
407 | ],
408 | [
409 | 46,
410 | 30,
411 | 2,
412 | 8,
413 | 1,
414 | "VAE"
415 | ],
416 | [
417 | 47,
418 | 30,
419 | 0,
420 | 31,
421 | 0,
422 | "MODEL"
423 | ],
424 | [
425 | 51,
426 | 27,
427 | 0,
428 | 31,
429 | 3,
430 | "LATENT"
431 | ],
432 | [
433 | 52,
434 | 31,
435 | 0,
436 | 8,
437 | 0,
438 | "LATENT"
439 | ],
440 | [
441 | 54,
442 | 30,
443 | 1,
444 | 33,
445 | 0,
446 | "CLIP"
447 | ],
448 | [
449 | 55,
450 | 33,
451 | 0,
452 | 31,
453 | 2,
454 | "CONDITIONING"
455 | ],
456 | [
457 | 56,
458 | 6,
459 | 0,
460 | 35,
461 | 0,
462 | "CONDITIONING"
463 | ],
464 | [
465 | 57,
466 | 35,
467 | 0,
468 | 31,
469 | 1,
470 | "CONDITIONING"
471 | ]
472 | ],
473 | "groups": [],
474 | "config": {},
475 | "extra": {
476 | "ds": {
477 | "scale": 0.6934334949441618,
478 | "offset": [
479 | -25.60850917723201,
480 | 39.85080263219448
481 | ]
482 | }
483 | },
484 | "version": 0.4
485 | }
--------------------------------------------------------------------------------
/workflows/workflow-flux-schnell.json:
--------------------------------------------------------------------------------
1 | {
2 | "last_node_id": 51,
3 | "last_link_id": 89,
4 | "nodes": [
5 | {
6 | "id": 10,
7 | "type": "VAELoader",
8 | "pos": {
9 | "0": 80,
10 | "1": 80
11 | },
12 | "size": {
13 | "0": 315,
14 | "1": 58
15 | },
16 | "flags": {},
17 | "order": 0,
18 | "mode": 0,
19 | "inputs": [],
20 | "outputs": [
21 | {
22 | "name": "VAE",
23 | "type": "VAE",
24 | "links": [
25 | 12
26 | ],
27 | "slot_index": 0,
28 | "shape": 3
29 | }
30 | ],
31 | "properties": {
32 | "Node name for S&R": "VAELoader"
33 | },
34 | "widgets_values": [
35 | "ae.safetensors"
36 | ]
37 | },
38 | {
39 | "id": 12,
40 | "type": "UNETLoader",
41 | "pos": {
42 | "0": 80,
43 | "1": 180
44 | },
45 | "size": {
46 | "0": 315,
47 | "1": 82
48 | },
49 | "flags": {},
50 | "order": 1,
51 | "mode": 0,
52 | "inputs": [],
53 | "outputs": [
54 | {
55 | "name": "MODEL",
56 | "type": "MODEL",
57 | "links": [
58 | 38,
59 | 39
60 | ],
61 | "slot_index": 0,
62 | "shape": 3
63 | }
64 | ],
65 | "properties": {
66 | "Node name for S&R": "UNETLoader"
67 | },
68 | "widgets_values": [
69 | "flux1-schnell.safetensors",
70 | "fp8_e4m3fn"
71 | ]
72 | },
73 | {
74 | "id": 11,
75 | "type": "DualCLIPLoader",
76 | "pos": {
77 | "0": 80,
78 | "1": 300
79 | },
80 | "size": {
81 | "0": 315,
82 | "1": 106
83 | },
84 | "flags": {},
85 | "order": 2,
86 | "mode": 0,
87 | "inputs": [],
88 | "outputs": [
89 | {
90 | "name": "CLIP",
91 | "type": "CLIP",
92 | "links": [
93 | 10
94 | ],
95 | "slot_index": 0,
96 | "shape": 3
97 | }
98 | ],
99 | "properties": {
100 | "Node name for S&R": "DualCLIPLoader"
101 | },
102 | "widgets_values": [
103 | "t5xxl_fp8_e4m3fn.safetensors",
104 | "clip_l.safetensors",
105 | "flux"
106 | ]
107 | },
108 | {
109 | "id": 6,
110 | "type": "CLIPTextEncode",
111 | "pos": {
112 | "0": 80,
113 | "1": 460
114 | },
115 | "size": {
116 | "0": 422.84503173828125,
117 | "1": 164.31304931640625
118 | },
119 | "flags": {},
120 | "order": 7,
121 | "mode": 0,
122 | "inputs": [
123 | {
124 | "name": "clip",
125 | "type": "CLIP",
126 | "link": 10
127 | }
128 | ],
129 | "outputs": [
130 | {
131 | "name": "CONDITIONING",
132 | "type": "CONDITIONING",
133 | "links": [
134 | 40
135 | ],
136 | "slot_index": 0
137 | }
138 | ],
139 | "properties": {
140 | "Node name for S&R": "CLIPTextEncode"
141 | },
142 | "widgets_values": [
143 | "a monkey that holds up a sign that says \"wooo local FLUX!\""
144 | ]
145 | },
146 | {
147 | "id": 22,
148 | "type": "BasicGuider",
149 | "pos": {
150 | "0": 660,
151 | "1": 460
152 | },
153 | "size": {
154 | "0": 241.79998779296875,
155 | "1": 46
156 | },
157 | "flags": {},
158 | "order": 9,
159 | "mode": 0,
160 | "inputs": [
161 | {
162 | "name": "model",
163 | "type": "MODEL",
164 | "link": 39,
165 | "slot_index": 0
166 | },
167 | {
168 | "name": "conditioning",
169 | "type": "CONDITIONING",
170 | "link": 40,
171 | "slot_index": 1
172 | }
173 | ],
174 | "outputs": [
175 | {
176 | "name": "GUIDER",
177 | "type": "GUIDER",
178 | "links": [
179 | 30
180 | ],
181 | "slot_index": 0,
182 | "shape": 3
183 | }
184 | ],
185 | "properties": {
186 | "Node name for S&R": "BasicGuider"
187 | }
188 | },
189 | {
190 | "id": 16,
191 | "type": "KSamplerSelect",
192 | "pos": {
193 | "0": 660,
194 | "1": 200
195 | },
196 | "size": {
197 | "0": 315,
198 | "1": 58
199 | },
200 | "flags": {},
201 | "order": 3,
202 | "mode": 0,
203 | "inputs": [],
204 | "outputs": [
205 | {
206 | "name": "SAMPLER",
207 | "type": "SAMPLER",
208 | "links": [
209 | 19
210 | ],
211 | "shape": 3
212 | }
213 | ],
214 | "properties": {
215 | "Node name for S&R": "KSamplerSelect"
216 | },
217 | "widgets_values": [
218 | "euler"
219 | ]
220 | },
221 | {
222 | "id": 17,
223 | "type": "BasicScheduler",
224 | "pos": {
225 | "0": 660,
226 | "1": 300
227 | },
228 | "size": {
229 | "0": 315,
230 | "1": 106
231 | },
232 | "flags": {},
233 | "order": 6,
234 | "mode": 0,
235 | "inputs": [
236 | {
237 | "name": "model",
238 | "type": "MODEL",
239 | "link": 38,
240 | "slot_index": 0
241 | }
242 | ],
243 | "outputs": [
244 | {
245 | "name": "SIGMAS",
246 | "type": "SIGMAS",
247 | "links": [
248 | 59
249 | ],
250 | "slot_index": 0,
251 | "shape": 3
252 | }
253 | ],
254 | "properties": {
255 | "Node name for S&R": "BasicScheduler"
256 | },
257 | "widgets_values": [
258 | "normal",
259 | 4,
260 | 1
261 | ]
262 | },
263 | {
264 | "id": 13,
265 | "type": "SamplerCustomAdvanced",
266 | "pos": {
267 | "0": 1100,
268 | "1": 320
269 | },
270 | "size": {
271 | "0": 355.20001220703125,
272 | "1": 106
273 | },
274 | "flags": {},
275 | "order": 10,
276 | "mode": 0,
277 | "inputs": [
278 | {
279 | "name": "noise",
280 | "type": "NOISE",
281 | "link": 86,
282 | "slot_index": 0
283 | },
284 | {
285 | "name": "guider",
286 | "type": "GUIDER",
287 | "link": 30,
288 | "slot_index": 1
289 | },
290 | {
291 | "name": "sampler",
292 | "type": "SAMPLER",
293 | "link": 19,
294 | "slot_index": 2
295 | },
296 | {
297 | "name": "sigmas",
298 | "type": "SIGMAS",
299 | "link": 60,
300 | "slot_index": 3
301 | },
302 | {
303 | "name": "latent_image",
304 | "type": "LATENT",
305 | "link": 89,
306 | "slot_index": 4
307 | }
308 | ],
309 | "outputs": [
310 | {
311 | "name": "output",
312 | "type": "LATENT",
313 | "links": [
314 | 24
315 | ],
316 | "slot_index": 0,
317 | "shape": 3
318 | },
319 | {
320 | "name": "denoised_output",
321 | "type": "LATENT",
322 | "links": null,
323 | "shape": 3
324 | }
325 | ],
326 | "properties": {
327 | "Node name for S&R": "SamplerCustomAdvanced"
328 | }
329 | },
330 | {
331 | "id": 50,
332 | "type": "RandomNoise",
333 | "pos": {
334 | "0": 660,
335 | "1": 720
336 | },
337 | "size": {
338 | "0": 315,
339 | "1": 82
340 | },
341 | "flags": {},
342 | "order": 4,
343 | "mode": 0,
344 | "inputs": [],
345 | "outputs": [
346 | {
347 | "name": "NOISE",
348 | "type": "NOISE",
349 | "links": [
350 | 86
351 | ],
352 | "shape": 3
353 | }
354 | ],
355 | "properties": {
356 | "Node name for S&R": "RandomNoise"
357 | },
358 | "widgets_values": [
359 | 818571366394800,
360 | "randomize"
361 | ]
362 | },
363 | {
364 | "id": 8,
365 | "type": "VAEDecode",
366 | "pos": {
367 | "0": 1240,
368 | "1": 480
369 | },
370 | "size": {
371 | "0": 210,
372 | "1": 46
373 | },
374 | "flags": {},
375 | "order": 11,
376 | "mode": 0,
377 | "inputs": [
378 | {
379 | "name": "samples",
380 | "type": "LATENT",
381 | "link": 24
382 | },
383 | {
384 | "name": "vae",
385 | "type": "VAE",
386 | "link": 12
387 | }
388 | ],
389 | "outputs": [
390 | {
391 | "name": "IMAGE",
392 | "type": "IMAGE",
393 | "links": [
394 | 88
395 | ],
396 | "slot_index": 0
397 | }
398 | ],
399 | "properties": {
400 | "Node name for S&R": "VAEDecode"
401 | }
402 | },
403 | {
404 | "id": 38,
405 | "type": "SplitSigmas",
406 | "pos": {
407 | "0": 1140,
408 | "1": 180
409 | },
410 | "size": {
411 | "0": 315,
412 | "1": 78
413 | },
414 | "flags": {},
415 | "order": 8,
416 | "mode": 0,
417 | "inputs": [
418 | {
419 | "name": "sigmas",
420 | "type": "SIGMAS",
421 | "link": 59
422 | }
423 | ],
424 | "outputs": [
425 | {
426 | "name": "high_sigmas",
427 | "type": "SIGMAS",
428 | "links": [],
429 | "slot_index": 0,
430 | "shape": 3
431 | },
432 | {
433 | "name": "low_sigmas",
434 | "type": "SIGMAS",
435 | "links": [
436 | 60
437 | ],
438 | "slot_index": 1,
439 | "shape": 3
440 | }
441 | ],
442 | "properties": {
443 | "Node name for S&R": "SplitSigmas"
444 | },
445 | "widgets_values": [
446 | 0
447 | ]
448 | },
449 | {
450 | "id": 9,
451 | "type": "SaveImage",
452 | "pos": {
453 | "0": 1500,
454 | "1": 180
455 | },
456 | "size": {
457 | "0": 686.9293823242188,
458 | "1": 1089.4158935546875
459 | },
460 | "flags": {},
461 | "order": 12,
462 | "mode": 0,
463 | "inputs": [
464 | {
465 | "name": "images",
466 | "type": "IMAGE",
467 | "link": 88
468 | }
469 | ],
470 | "outputs": [],
471 | "properties": {},
472 | "widgets_values": [
473 | "flux/ComfyUI"
474 | ]
475 | },
476 | {
477 | "id": 51,
478 | "type": "EmptyLatentImage",
479 | "pos": {
480 | "0": 660,
481 | "1": 560
482 | },
483 | "size": {
484 | "0": 315,
485 | "1": 106
486 | },
487 | "flags": {},
488 | "order": 5,
489 | "mode": 0,
490 | "inputs": [],
491 | "outputs": [
492 | {
493 | "name": "LATENT",
494 | "type": "LATENT",
495 | "links": [
496 | 89
497 | ],
498 | "slot_index": 0,
499 | "shape": 3
500 | }
501 | ],
502 | "properties": {
503 | "Node name for S&R": "EmptyLatentImage"
504 | },
505 | "widgets_values": [
506 | 1024,
507 | 1024,
508 | 1
509 | ]
510 | }
511 | ],
512 | "links": [
513 | [
514 | 10,
515 | 11,
516 | 0,
517 | 6,
518 | 0,
519 | "CLIP"
520 | ],
521 | [
522 | 12,
523 | 10,
524 | 0,
525 | 8,
526 | 1,
527 | "VAE"
528 | ],
529 | [
530 | 19,
531 | 16,
532 | 0,
533 | 13,
534 | 2,
535 | "SAMPLER"
536 | ],
537 | [
538 | 24,
539 | 13,
540 | 0,
541 | 8,
542 | 0,
543 | "LATENT"
544 | ],
545 | [
546 | 30,
547 | 22,
548 | 0,
549 | 13,
550 | 1,
551 | "GUIDER"
552 | ],
553 | [
554 | 38,
555 | 12,
556 | 0,
557 | 17,
558 | 0,
559 | "MODEL"
560 | ],
561 | [
562 | 39,
563 | 12,
564 | 0,
565 | 22,
566 | 0,
567 | "MODEL"
568 | ],
569 | [
570 | 40,
571 | 6,
572 | 0,
573 | 22,
574 | 1,
575 | "CONDITIONING"
576 | ],
577 | [
578 | 59,
579 | 17,
580 | 0,
581 | 38,
582 | 0,
583 | "SIGMAS"
584 | ],
585 | [
586 | 60,
587 | 38,
588 | 1,
589 | 13,
590 | 3,
591 | "SIGMAS"
592 | ],
593 | [
594 | 86,
595 | 50,
596 | 0,
597 | 13,
598 | 0,
599 | "NOISE"
600 | ],
601 | [
602 | 88,
603 | 8,
604 | 0,
605 | 9,
606 | 0,
607 | "IMAGE"
608 | ],
609 | [
610 | 89,
611 | 51,
612 | 0,
613 | 13,
614 | 4,
615 | "LATENT"
616 | ]
617 | ],
618 | "groups": [],
619 | "config": {},
620 | "extra": {
621 | "ds": {
622 | "scale": 0.6209213230591553,
623 | "offset": [
624 | 122.48530024999918,
625 | 74.87918050000005
626 | ]
627 | }
628 | },
629 | "version": 0.4
630 | }
--------------------------------------------------------------------------------
/workflows/workflow-flux-dev.json:
--------------------------------------------------------------------------------
1 | {
2 | "last_node_id": 37,
3 | "last_link_id": 116,
4 | "nodes": [
5 | {
6 | "id": 6,
7 | "type": "CLIPTextEncode",
8 | "pos": [
9 | 384,
10 | 240
11 | ],
12 | "size": {
13 | "0": 422.84503173828125,
14 | "1": 164.31304931640625
15 | },
16 | "flags": {},
17 | "order": 9,
18 | "mode": 0,
19 | "inputs": [
20 | {
21 | "name": "clip",
22 | "type": "CLIP",
23 | "link": 10
24 | }
25 | ],
26 | "outputs": [
27 | {
28 | "name": "CONDITIONING",
29 | "type": "CONDITIONING",
30 | "links": [
31 | 41
32 | ],
33 | "slot_index": 0
34 | }
35 | ],
36 | "title": "CLIP Text Encode (Positive Prompt)",
37 | "properties": {
38 | "Node name for S&R": "CLIPTextEncode"
39 | },
40 | "widgets_values": [
41 | "a monkey that holds up a sign that says \"wooo local FLUX!\""
42 | ],
43 | "color": "#232",
44 | "bgcolor": "#353"
45 | },
46 | {
47 | "id": 8,
48 | "type": "VAEDecode",
49 | "pos": [
50 | 866,
51 | 367
52 | ],
53 | "size": {
54 | "0": 210,
55 | "1": 46
56 | },
57 | "flags": {},
58 | "order": 16,
59 | "mode": 0,
60 | "inputs": [
61 | {
62 | "name": "samples",
63 | "type": "LATENT",
64 | "link": 24
65 | },
66 | {
67 | "name": "vae",
68 | "type": "VAE",
69 | "link": 12
70 | }
71 | ],
72 | "outputs": [
73 | {
74 | "name": "IMAGE",
75 | "type": "IMAGE",
76 | "links": [
77 | 9
78 | ],
79 | "slot_index": 0
80 | }
81 | ],
82 | "properties": {
83 | "Node name for S&R": "VAEDecode"
84 | }
85 | },
86 | {
87 | "id": 9,
88 | "type": "SaveImage",
89 | "pos": [
90 | 1155,
91 | 196
92 | ],
93 | "size": {
94 | "0": 985.3012084960938,
95 | "1": 1060.3828125
96 | },
97 | "flags": {},
98 | "order": 17,
99 | "mode": 0,
100 | "inputs": [
101 | {
102 | "name": "images",
103 | "type": "IMAGE",
104 | "link": 9
105 | }
106 | ],
107 | "properties": {},
108 | "widgets_values": [
109 | "ComfyUI"
110 | ]
111 | },
112 | {
113 | "id": 10,
114 | "type": "VAELoader",
115 | "pos": [
116 | 48,
117 | 432
118 | ],
119 | "size": {
120 | "0": 311.81634521484375,
121 | "1": 60.429901123046875
122 | },
123 | "flags": {},
124 | "order": 0,
125 | "mode": 0,
126 | "outputs": [
127 | {
128 | "name": "VAE",
129 | "type": "VAE",
130 | "links": [
131 | 12
132 | ],
133 | "slot_index": 0,
134 | "shape": 3
135 | }
136 | ],
137 | "properties": {
138 | "Node name for S&R": "VAELoader"
139 | },
140 | "widgets_values": [
141 | "ae.safetensors"
142 | ]
143 | },
144 | {
145 | "id": 11,
146 | "type": "DualCLIPLoader",
147 | "pos": [
148 | 48,
149 | 288
150 | ],
151 | "size": {
152 | "0": 315,
153 | "1": 106
154 | },
155 | "flags": {},
156 | "order": 1,
157 | "mode": 0,
158 | "outputs": [
159 | {
160 | "name": "CLIP",
161 | "type": "CLIP",
162 | "links": [
163 | 10
164 | ],
165 | "slot_index": 0,
166 | "shape": 3
167 | }
168 | ],
169 | "properties": {
170 | "Node name for S&R": "DualCLIPLoader"
171 | },
172 | "widgets_values": [
173 | "t5xxl_fp16.safetensors",
174 | "clip_l.safetensors",
175 | "flux"
176 | ]
177 | },
178 | {
179 | "id": 12,
180 | "type": "UNETLoader",
181 | "pos": [
182 | 48,
183 | 144
184 | ],
185 | "size": {
186 | "0": 315,
187 | "1": 82
188 | },
189 | "flags": {},
190 | "order": 2,
191 | "mode": 0,
192 | "outputs": [
193 | {
194 | "name": "MODEL",
195 | "type": "MODEL",
196 | "links": [
197 | 56
198 | ],
199 | "slot_index": 0,
200 | "shape": 3
201 | }
202 | ],
203 | "properties": {
204 | "Node name for S&R": "UNETLoader"
205 | },
206 | "widgets_values": [
207 | "flux1-dev.safetensors",
208 | "default"
209 | ],
210 | "color": "#223",
211 | "bgcolor": "#335"
212 | },
213 | {
214 | "id": 13,
215 | "type": "SamplerCustomAdvanced",
216 | "pos": [
217 | 864,
218 | 192
219 | ],
220 | "size": {
221 | "0": 272.3617858886719,
222 | "1": 124.53733825683594
223 | },
224 | "flags": {},
225 | "order": 15,
226 | "mode": 0,
227 | "inputs": [
228 | {
229 | "name": "noise",
230 | "type": "NOISE",
231 | "link": 37,
232 | "slot_index": 0
233 | },
234 | {
235 | "name": "guider",
236 | "type": "GUIDER",
237 | "link": 30,
238 | "slot_index": 1
239 | },
240 | {
241 | "name": "sampler",
242 | "type": "SAMPLER",
243 | "link": 19,
244 | "slot_index": 2
245 | },
246 | {
247 | "name": "sigmas",
248 | "type": "SIGMAS",
249 | "link": 20,
250 | "slot_index": 3
251 | },
252 | {
253 | "name": "latent_image",
254 | "type": "LATENT",
255 | "link": 116,
256 | "slot_index": 4
257 | }
258 | ],
259 | "outputs": [
260 | {
261 | "name": "output",
262 | "type": "LATENT",
263 | "links": [
264 | 24
265 | ],
266 | "slot_index": 0,
267 | "shape": 3
268 | },
269 | {
270 | "name": "denoised_output",
271 | "type": "LATENT",
272 | "links": null,
273 | "shape": 3
274 | }
275 | ],
276 | "properties": {
277 | "Node name for S&R": "SamplerCustomAdvanced"
278 | }
279 | },
280 | {
281 | "id": 16,
282 | "type": "KSamplerSelect",
283 | "pos": [
284 | 480,
285 | 912
286 | ],
287 | "size": {
288 | "0": 315,
289 | "1": 58
290 | },
291 | "flags": {},
292 | "order": 3,
293 | "mode": 0,
294 | "outputs": [
295 | {
296 | "name": "SAMPLER",
297 | "type": "SAMPLER",
298 | "links": [
299 | 19
300 | ],
301 | "shape": 3
302 | }
303 | ],
304 | "properties": {
305 | "Node name for S&R": "KSamplerSelect"
306 | },
307 | "widgets_values": [
308 | "euler"
309 | ]
310 | },
311 | {
312 | "id": 17,
313 | "type": "BasicScheduler",
314 | "pos": [
315 | 480,
316 | 1008
317 | ],
318 | "size": {
319 | "0": 315,
320 | "1": 106
321 | },
322 | "flags": {},
323 | "order": 13,
324 | "mode": 0,
325 | "inputs": [
326 | {
327 | "name": "model",
328 | "type": "MODEL",
329 | "link": 55,
330 | "slot_index": 0
331 | }
332 | ],
333 | "outputs": [
334 | {
335 | "name": "SIGMAS",
336 | "type": "SIGMAS",
337 | "links": [
338 | 20
339 | ],
340 | "shape": 3
341 | }
342 | ],
343 | "properties": {
344 | "Node name for S&R": "BasicScheduler"
345 | },
346 | "widgets_values": [
347 | "simple",
348 | 20,
349 | 1
350 | ]
351 | },
352 | {
353 | "id": 22,
354 | "type": "BasicGuider",
355 | "pos": [
356 | 576,
357 | 48
358 | ],
359 | "size": {
360 | "0": 222.3482666015625,
361 | "1": 46
362 | },
363 | "flags": {},
364 | "order": 14,
365 | "mode": 0,
366 | "inputs": [
367 | {
368 | "name": "model",
369 | "type": "MODEL",
370 | "link": 54,
371 | "slot_index": 0
372 | },
373 | {
374 | "name": "conditioning",
375 | "type": "CONDITIONING",
376 | "link": 42,
377 | "slot_index": 1
378 | }
379 | ],
380 | "outputs": [
381 | {
382 | "name": "GUIDER",
383 | "type": "GUIDER",
384 | "links": [
385 | 30
386 | ],
387 | "slot_index": 0,
388 | "shape": 3
389 | }
390 | ],
391 | "properties": {
392 | "Node name for S&R": "BasicGuider"
393 | }
394 | },
395 | {
396 | "id": 25,
397 | "type": "RandomNoise",
398 | "pos": [
399 | 480,
400 | 768
401 | ],
402 | "size": {
403 | "0": 315,
404 | "1": 82
405 | },
406 | "flags": {},
407 | "order": 4,
408 | "mode": 0,
409 | "outputs": [
410 | {
411 | "name": "NOISE",
412 | "type": "NOISE",
413 | "links": [
414 | 37
415 | ],
416 | "shape": 3
417 | }
418 | ],
419 | "properties": {
420 | "Node name for S&R": "RandomNoise"
421 | },
422 | "widgets_values": [
423 | 860965999065638,
424 | "randomize"
425 | ],
426 | "color": "#2a363b",
427 | "bgcolor": "#3f5159"
428 | },
429 | {
430 | "id": 26,
431 | "type": "FluxGuidance",
432 | "pos": [
433 | 480,
434 | 144
435 | ],
436 | "size": {
437 | "0": 317.4000244140625,
438 | "1": 58
439 | },
440 | "flags": {},
441 | "order": 12,
442 | "mode": 0,
443 | "inputs": [
444 | {
445 | "name": "conditioning",
446 | "type": "CONDITIONING",
447 | "link": 41
448 | }
449 | ],
450 | "outputs": [
451 | {
452 | "name": "CONDITIONING",
453 | "type": "CONDITIONING",
454 | "links": [
455 | 42
456 | ],
457 | "slot_index": 0,
458 | "shape": 3
459 | }
460 | ],
461 | "properties": {
462 | "Node name for S&R": "FluxGuidance"
463 | },
464 | "widgets_values": [
465 | 3.5
466 | ],
467 | "color": "#233",
468 | "bgcolor": "#355"
469 | },
470 | {
471 | "id": 27,
472 | "type": "EmptySD3LatentImage",
473 | "pos": [
474 | 480,
475 | 624
476 | ],
477 | "size": {
478 | "0": 315,
479 | "1": 106
480 | },
481 | "flags": {},
482 | "order": 10,
483 | "mode": 0,
484 | "inputs": [
485 | {
486 | "name": "width",
487 | "type": "INT",
488 | "link": 112,
489 | "widget": {
490 | "name": "width"
491 | }
492 | },
493 | {
494 | "name": "height",
495 | "type": "INT",
496 | "link": 113,
497 | "widget": {
498 | "name": "height"
499 | }
500 | }
501 | ],
502 | "outputs": [
503 | {
504 | "name": "LATENT",
505 | "type": "LATENT",
506 | "links": [
507 | 116
508 | ],
509 | "slot_index": 0,
510 | "shape": 3
511 | }
512 | ],
513 | "properties": {
514 | "Node name for S&R": "EmptySD3LatentImage"
515 | },
516 | "widgets_values": [
517 | 1024,
518 | 1024,
519 | 1
520 | ]
521 | },
522 | {
523 | "id": 30,
524 | "type": "ModelSamplingFlux",
525 | "pos": [
526 | 480,
527 | 1152
528 | ],
529 | "size": {
530 | "0": 315,
531 | "1": 130
532 | },
533 | "flags": {},
534 | "order": 11,
535 | "mode": 0,
536 | "inputs": [
537 | {
538 | "name": "model",
539 | "type": "MODEL",
540 | "link": 56,
541 | "slot_index": 0
542 | },
543 | {
544 | "name": "width",
545 | "type": "INT",
546 | "link": 115,
547 | "slot_index": 1,
548 | "widget": {
549 | "name": "width"
550 | }
551 | },
552 | {
553 | "name": "height",
554 | "type": "INT",
555 | "link": 114,
556 | "slot_index": 2,
557 | "widget": {
558 | "name": "height"
559 | }
560 | }
561 | ],
562 | "outputs": [
563 | {
564 | "name": "MODEL",
565 | "type": "MODEL",
566 | "links": [
567 | 54,
568 | 55
569 | ],
570 | "slot_index": 0,
571 | "shape": 3
572 | }
573 | ],
574 | "properties": {
575 | "Node name for S&R": "ModelSamplingFlux"
576 | },
577 | "widgets_values": [
578 | 1.15,
579 | 0.5,
580 | 1024,
581 | 1024
582 | ]
583 | },
584 | {
585 | "id": 34,
586 | "type": "PrimitiveNode",
587 | "pos": [
588 | 432,
589 | 480
590 | ],
591 | "size": {
592 | "0": 210,
593 | "1": 82
594 | },
595 | "flags": {},
596 | "order": 6,
597 | "mode": 0,
598 | "outputs": [
599 | {
600 | "name": "INT",
601 | "type": "INT",
602 | "links": [
603 | 112,
604 | 115
605 | ],
606 | "slot_index": 0,
607 | "widget": {
608 | "name": "width"
609 | }
610 | }
611 | ],
612 | "title": "width",
613 | "properties": {
614 | "Run widget replace on values": false
615 | },
616 | "widgets_values": [
617 | 1024,
618 | "fixed"
619 | ],
620 | "color": "#323",
621 | "bgcolor": "#535"
622 | },
623 | {
624 | "id": 35,
625 | "type": "PrimitiveNode",
626 | "pos": [
627 | 672,
628 | 480
629 | ],
630 | "size": {
631 | "0": 210,
632 | "1": 82
633 | },
634 | "flags": {},
635 | "order": 7,
636 | "mode": 0,
637 | "outputs": [
638 | {
639 | "name": "INT",
640 | "type": "INT",
641 | "links": [
642 | 113,
643 | 114
644 | ],
645 | "slot_index": 0,
646 | "widget": {
647 | "name": "height"
648 | }
649 | }
650 | ],
651 | "title": "height",
652 | "properties": {
653 | "Run widget replace on values": false
654 | },
655 | "widgets_values": [
656 | 1024,
657 | "fixed"
658 | ],
659 | "color": "#323",
660 | "bgcolor": "#535"
661 | }
662 | ],
663 | "links": [
664 | [
665 | 9,
666 | 8,
667 | 0,
668 | 9,
669 | 0,
670 | "IMAGE"
671 | ],
672 | [
673 | 10,
674 | 11,
675 | 0,
676 | 6,
677 | 0,
678 | "CLIP"
679 | ],
680 | [
681 | 12,
682 | 10,
683 | 0,
684 | 8,
685 | 1,
686 | "VAE"
687 | ],
688 | [
689 | 19,
690 | 16,
691 | 0,
692 | 13,
693 | 2,
694 | "SAMPLER"
695 | ],
696 | [
697 | 20,
698 | 17,
699 | 0,
700 | 13,
701 | 3,
702 | "SIGMAS"
703 | ],
704 | [
705 | 24,
706 | 13,
707 | 0,
708 | 8,
709 | 0,
710 | "LATENT"
711 | ],
712 | [
713 | 30,
714 | 22,
715 | 0,
716 | 13,
717 | 1,
718 | "GUIDER"
719 | ],
720 | [
721 | 37,
722 | 25,
723 | 0,
724 | 13,
725 | 0,
726 | "NOISE"
727 | ],
728 | [
729 | 41,
730 | 6,
731 | 0,
732 | 26,
733 | 0,
734 | "CONDITIONING"
735 | ],
736 | [
737 | 42,
738 | 26,
739 | 0,
740 | 22,
741 | 1,
742 | "CONDITIONING"
743 | ],
744 | [
745 | 54,
746 | 30,
747 | 0,
748 | 22,
749 | 0,
750 | "MODEL"
751 | ],
752 | [
753 | 55,
754 | 30,
755 | 0,
756 | 17,
757 | 0,
758 | "MODEL"
759 | ],
760 | [
761 | 56,
762 | 12,
763 | 0,
764 | 30,
765 | 0,
766 | "MODEL"
767 | ],
768 | [
769 | 112,
770 | 34,
771 | 0,
772 | 27,
773 | 0,
774 | "INT"
775 | ],
776 | [
777 | 113,
778 | 35,
779 | 0,
780 | 27,
781 | 1,
782 | "INT"
783 | ],
784 | [
785 | 114,
786 | 35,
787 | 0,
788 | 30,
789 | 2,
790 | "INT"
791 | ],
792 | [
793 | 115,
794 | 34,
795 | 0,
796 | 30,
797 | 1,
798 | "INT"
799 | ],
800 | [
801 | 116,
802 | 27,
803 | 0,
804 | 13,
805 | 4,
806 | "LATENT"
807 | ]
808 | ],
809 | "groups": [],
810 | "config": {},
811 | "extra": {
812 | "ds": {
813 | "scale": 0.620921323059155,
814 | "offset": [
815 | 176.31363458750957,
816 | -34.489478521297364
817 | ]
818 | },
819 | "groupNodes": {}
820 | },
821 | "version": 0.4
822 | }
--------------------------------------------------------------------------------