ComfyUI + FLUX — image generation
What it is. ComfyUI is a node-graph UI for diffusion models — you wire up a workflow (model loader → text encoders → sampler → decoder → save) and run it. FLUX.1-schnell is the model: 12B parameters, 4-step inference (~5-15 seconds per image on the right GPU), Apache 2.0, top-tier quality for most styles. Together they replace your DALL·E spend with unlimited free generation.
Where it lives
| Location | URL | Auth |
|---|---|---|
| sps-srv1 service (shared) | https://comfy.sandpointstudios.ltd |
CF Access (Google SSO, @sandpointstudios.ltd) |
| sps-srv1 LAN | http://vigil-server:8188 |
None |
Models stored at /backup/comfyui-flux/models/ on sps-srv1 (auto-mounted into the container).
When to use ComfyUI/FLUX vs. DALL·E
Use ComfyUI/FLUX when: - Generating multiple variations to pick from (free; DALL·E charges per image) - Need consistent characters/style across many images (LoRAs solve this; DALL·E doesn't) - Brand-specific art (you can train a LoRA on existing assets for style consistency) - Workflows you can save and rerun: "card art for Right Bower" with the same prompt template across 24 cards
Keep using DALL·E when: - One-off hero image for a marketing page (DALL·E's "AI website look" handles certain compositional styles FLUX struggles with — the auto-rendered "abstract concept" type) - Speed matters more than quality control (DALL·E is faster than FLUX-on-2060S right now)
The current GPU caveat
sps-srv1 ComfyUI is currently pinned to the RTX 2060 SUPER (8 GB) because the prebuilt image's PyTorch doesn't support Blackwell sm_120. The RTX 5090 (32 GB) is idle for FLUX until a Blackwell-capable image lands. Until then: - FLUX schnell fp8 (the model on disk) won't fit — needs ~12 GB - Use the GGUF variant:
flux1-schnell-Q4_K_S.gguf(~6 GB) fromcity96/FLUX.1-schnell-ggufon HF. Workflow template usesUnetLoaderGGUFinstead ofUNETLoader. Already on disk at/backup/comfyui-flux/models/unet/. - Generation time on the 2060S: ~45-60 seconds per image. A Blackwell upgrade will bring this to ~5-10 seconds. Open a ticket if you need batch generation today.
3 recipes
1. Generate a Wyrdlyre character portrait (browser, sps-srv1)
- Go to
https://comfy.sandpointstudios.ltd, sign in with@sandpointstudios.ltdGoogle account - Top-right menu → Workflow → Open → load
/backup/comfyui-flux/workflows/flux-schnell-template.json(or drag the file in) - In the CLIPTextEncode node, replace the placeholder text with your character prompt: "A weathered halfling rogue with auburn hair tied back, leather armor, leaning on a polished oak quarterstaff, soft tavern lamplight, oil-painting style, character portrait, head and shoulders"
- Click Queue Prompt (top right)
- Output saves to
/backup/comfyui-flux/output/on sps-srv1; you also see a preview in the SaveImage node
2. Batch-generate 24 card images for Right Bower (script)
import requests, json, time
with open("flux-schnell-template.json") as f:
workflow = json.load(f)
cards = [
("hearts", "ace"), ("hearts", "king"), ("hearts", "queen"), ...
]
for suit, rank in cards:
workflow["4"]["inputs"]["text"] = (
f"playing card art, {rank} of {suit}, art-nouveau border, "
"stylized illustration, no text, vibrant colors"
)
workflow["6"]["inputs"]["seed"] = hash((suit, rank)) % (2**32) # deterministic
workflow["8"]["inputs"]["filename_prefix"] = f"rightbower-{suit}-{rank}"
r = requests.post("http://vigil-server:8188/prompt", json={"prompt": workflow})
r.raise_for_status()
time.sleep(15) # let it generate before queuing next
This is the workflow JSON pattern — load template, mutate the prompt + filename, POST to /prompt.
3. Iterate on a prompt (browser, sps-srv1)
- Open
https://comfy.sandpointstudios.ltd, sign in - Load the template JSON (same as Recipe 1)
- Right-click any node → Properties to tweak. The fastest iterations:
- Change the seed (KSampler node) → different composition, same prompt
- Change EmptyLatentImage width/height for portrait/landscape
- Add a negative prompt by duplicating the CLIPTextEncode and wiring it to KSampler's
negativeinput - Click Queue Prompt between tweaks
Iteration time on the 2060S: ~45-60 seconds per image (1024×1024). Plan to queue a batch and come back; don't watch the spinner.
Gotchas
- The node UI is intimidating at first. Always start from the template workflow; don't try to build from scratch. Right-click empty space → "Add Node" if you need to extend.
- Output piles up.
/backup/comfyui-flux/output/will grow. Periodically prune viassh teagan@vigil-server 'find /backup/comfyui-flux/output -mtime +30 -delete'— or just let it ride until disk pressure is real (the volume has plenty of headroom). - The schnell variant uses CFG=1.0 and only 4 steps. Don't crank steps up "for quality" — schnell is distilled to be terminal at 4 steps; more degrades it. (FLUX.1-dev is the non-schnell variant that wants 20-50 steps, but it's HF-gated and not currently installed.)
- FLUX is bad at text in images. Don't expect readable signs / labels. Use Inkscape/Figma for compositions that need real text.
- NSFW / faces of specific real people: FLUX schnell has weak guardrails compared to DALL·E — be deliberate. (Not a "you can't do X" warning — a "you can, so own the choice" one.)