FLUX.1 & PuLID FaceSwap: Fulfill Your Fantasies with ComfyUI 2
Master photorealistic uncensored FLUX.1, native-res PuLID identity face swapping, and remote headless RTX 4070 orchestration via private Tailscale mesh.

The raw FLUX.1 [dev] foundation model out of the box from Black Forest Labs is essentially a digital mannequin: unnaturally smooth plastic skin, sanitized anatomy, and corporate refusal triggers.
In Part 1, we escaped commercial cloud censorship by spinning up a local ComfyUI environment. However, sticking with legacy SDXL or Pony XL checkpoints quickly exposes hard engineering ceilings: frequent anatomical hallucinations, deformed fingers, and vintage face-swappers like ReActor that paste blurry 128x128 pixel crops over high-resolution bodies like cheap stickers.
This second installment provides an operational, production-tested blueprint for three complex engineering hurdles: packing the 24GB FLUX.1 [dev] monster into a 12GB VRAM (ultra-fast GPU video memory) card using GGUF Q4_K_M quantization (compressed model packaging that shrinks weights roughly 4x) combined with photorealistic anatomy LoRA (lightweight parameter adapter) weights, executing native-resolution identity face replacement using PuLID (identity adapter that injects faces directly in latent space), and transforming your noisy workstation PC into a headless server (no monitor attached, controlled fully remotely) over an encrypted Tailscale mesh (zero-config private VPN network).
TL;DR
Quick Answer Box (Google Search Featured Snippet):
- How do you run uncensored FLUX.1 with photorealistic face-swapping on a 12GB GPU? Pair a GGUF Q4_K_M quantized DiT (Diffusion Transformer) core with FP8 T5-XXL text encoding and the PuLID-FLUX adapter. This pipeline caps peak usage under 10.5 GB VRAM, delivering uncompromised organic skin micro-textures without CUDA out-of-memory crashes.
- Core takeaway 1: PuLID conditions target facial identity directly inside the latent space at native 1024x1024 resolution, eliminating legacy ReActor paste seams.
- Core takeaway 2: Binding ComfyUI to local subnet listeners via Tailscale lets you dispatch intensive batch queues from lightweight laptops or mobile devices.
- Repository: HoangYell/comfyui
Beginner Map (Mental Model)
Think of your graphics card memory as a compact workbench: if you drop a 24GB engine block directly onto it, the entire workbench collapses under mechanical stress (CUDA Out of Memory).
The engineering fix involves modular staging: quantizing the heavy diffusion transformer into compact GGUF blocks, streaming the T5 text encoder into system RAM only during prompt parsing, and injecting facial features directly into the latent matrix.
Part 1: Foundations (Mental Model)
The primary bottleneck in modern generative synthesis is no longer gross composition or camera perspective. It is micro-texture authenticity and anatomical fidelity.
When commercial cloud platforms aggressively scrub explicit training imagery, the diffusion engine loses all understanding of natural skin pores, epidermal blemishes, and real anatomical proportions. FLUX.1 [dev] excels at complex prompt adherence because of its DiT (Diffusion Transformer) backbone, yet its base weights lack explicit human contours.
By injecting a surgical photorealistic anatomy LoRA into the diffusion transformer, we restore authentic subsurface scattering (light diffusion through real human skin layers) and natural contours. This intervention preserves the spatial composition of FLUX while recalibrating surface rendering toward realistic human biology.
| Technical Term | Field Meaning (3-6 words) |
|---|---|
| DiT (Diffusion Transformer) | Attention-driven generative image core |
| GGUF (Binary Quant Format) | Optimized binary model quantization packaging |
| Latent Space | Compressed mathematical visual coordinate field |
| PuLID (Identity Customization) | Non-destructive native latent face injection |
| Subsurface Scattering | Biological light dispersion across skin |
| Tailscale (Mesh VPN) | Zero-configuration encrypted peer network |
Part 2: Investigation (How It Works)
Operating this heavyweight stack on a standard consumer GPU like the RTX 4070 (12GB VRAM) requires meticulous memory orchestration. Loading uncompressed FP16 weights instantly causes memory thrashing, falling back to system RAM paging and dragging rendering speeds down by forty times.
Here is the exact VRAM allocation profile during an active sampling loop:
| Model Component | Quantization / Precision | File Footprint | Active Peak VRAM |
|---|---|---|---|
| FLUX.1 DiT Core | GGUF Q4_K_M |
6.81 GB | ~6.2 GB |
| T5-XXL Text Encoder | FP8 (e4m3fn) |
4.89 GB | Dynamically staged / ~4.0 GB |
| CLIP-L Text Encoder | FP16 | 0.25 GB | ~0.2 GB |
| FLUX VAE | BF16 | 0.34 GB | ~0.6 GB |
| PuLID-FLUX Adapter | FP16 (v0.9.1) |
1.14 GB | ~1.1 GB |
| Photorealistic LoRA | FP16 | 0.65 GB | Staged inside DiT |
| Total Peak Working VRAM | ~9.5 - 10.5 GB (Fits inside 12GB) |
The Engineering Superiority of PuLID over ReActor
Legacy solutions like ReActor rely on InsightFace modules to detect, crop, and transform a small 128x128 bounding box from the generated bitmap, blending it back onto the neck. This post-processing approach inevitably causes visible border artifacts, sharp skin tone discontinuities, and lighting orientation mismatches.
PuLID (Pure and Lightning ID Customization) operates fundamentally differently. It uses an EVA02 visual backbone combined with FaceNet to extract multi-level identity embeddings, injecting them directly into the cross-attention layers of the FLUX diffusion core. The result is a face synthesized directly out of noise, matching the scene lighting, depth of field, and skin micro-pores.
Headless Remote Setup via Private Tailscale Mesh
Rather than enduring fan noise and heat in your immediate physical workspace, configure the workstation to expose ComfyUI across your private Tailscale subnet. The heavy RTX 4070 rig operates quietly in another room, while you interact seamlessly from an ultra-light laptop or tablet:
:: Excerpt from run.bat configured for remote headless execution
%PYTHON% %CORE% ^
--listen 0.0.0.0 ^
--port 8188 ^
--preview-method auto ^
--extra-model-paths-config "%~dp0config\extra_model_paths.yaml" ^
--input-directory "%~dp0input" ^
--output-directory "%~dp0output" ^
--enable-manager %*
The --listen 0.0.0.0 argument directs the internal web server to accept incoming connections across all virtual adapters, including your encrypted Tailscale IP (100.x.y.z), without opening risky inbound ports on your home router.
Part 3: Diagnosis (The Rough Edges)
Production deployments inevitably expose hardware-level traps that introductory tutorials omit:
1. The Stealth VRAM Bandit: Windows DWM
On Windows workstations, the Desktop Window Manager (DWM) and active Chromium browser windows quietly consume between 1.0 and 1.5 GB of dedicated VRAM. When a heavy 1024x1024 FLUX queue spikes to 10.5 GB, normal desktop window resizing can trigger an unrecoverable CUDA out of memory abort.
The Fix: Always append --reserve-vram 2.0 or --lowvram to your launch script on Windows to guarantee a protective cushion for OS window compositing.
2. Guidance Scale Dynamic Range Blowout
Developers transitioning from SDXL often keep CFG Scale set to 7.0 or 8.0. On FLUX.1, excessive guidance causes severe contrast blowout and garbled skin highlights.
The Rule: Keep FluxGuidance locked strictly between 3.0 and 3.5. Pushing guidance past 4.0 fries fine pore details and introduces artificial sharp edges.
# Optimal KSampler parameter bounds for FLUX.1 GGUF
sampler_name = "euler"
scheduler = "simple"
steps = 22
denoise = 1.0
flux_guidance = 3.5 # Never exceed 4.0
3. The InsightFace C++ Compiler Trap on Windows
The standard PuLID implementation defaults to PulidFluxInsightFaceLoader via AntelopeV2. On Windows installations lacking full Microsoft Visual C++ Build Tools, running pip install insightface fails with cryptic compiler errors.
The Clean Fix: Swap the loader node for PulidFluxFaceNetLoader. FaceNet operates entirely on native PyTorch tensors, eliminating the need for MSVC compilers while maintaining high facial identity accuracy.
Part 4: Resolution (Decision Matrix)
Review this decision matrix to evaluate when to deploy the FLUX.1 + PuLID stack versus lighter legacy pipelines:
| Operational Metric | FLUX.1 GGUF + PuLID | SDXL / Pony XL LoRA | Commercial Cloud Services |
|---|---|---|---|
| Skin Micro-Realism | Maximum (Pores, authentic epidermal lighting) | Moderate (Prone to plastic or anime look) | Poor (Aggressive artificial smoothing) |
| Facial Identity Locking | Native resolution (1024px+ uncropped) | Requires dedicated checkpoint fine-tune | Heavily restricted or prohibited |
| Hardware Requirement | 12GB VRAM minimum (RTX 3060/4070) | Modest (Runs easily on 8GB VRAM) | Any modern web browser |
| Generation Latency | 25 - 40 seconds (RTX 4070) | 6 - 12 seconds | Dependent on provider server load |
| Content Sovereignty | 100% offline, zero content filters | Unfiltered but unstable anatomy | Rigorous corporate refusal filters |
Final Take
True sovereignty in generative technology scales with your willingness to understand low-level hardware constraints. By mastering GGUF model quantization and PuLID cross-attention conditioning, you transform a standard consumer graphics card into a fully autonomous, unfiltered creative studio with zero corporate surveillance and zero recurring platform fees.
Student First Assignment
Spend 20 minutes executing this production verification drill:
- Launch your terminal, navigate to your ComfyUI workspace, and place the quantized DiT weights
flux1-dev-Q4_K_M.ggufintomodels/unet/. - Download the identity weights
pulid_flux_v0.9.1.safetensorsintomodels/pulid/and load an uncompressed reference portrait into theLoadImagenode. - Append
--listen 0.0.0.0to your startup script, launch Tailscale on your mobile phone, connect to your workstation at port:8188, and dispatch a photorealistic portrait queue remotely.
Frequently Asked Questions (FAQ)
Does GGUF Q4_K_M quantization noticeably degrade visual fidelity compared to full FP16?
Human observers cannot distinguish between Q4_K_M quantized outputs and uncompressed FP16 weights at 1024x1024 resolution. The GGUF quantization scheme protects sensitive attention layers while compressing redundant parameters, slashing memory overhead by 70% with negligible loss in fidelity.
Why does increasing LoRA weight beyond 1.2 cause severe physical anatomy distortion?
LoRA adapters are trained on specific statistical distributions. When scaled past 1.0, the corrective vectors overpower the base model spatial manifold, leading to overlapping limbs and unnatural skin textures. Maintain LoRA strength strictly within the 0.85 to 1.0 window.
Does exposing ComfyUI to 0.0.0.0 expose my computer to public Internet attacks?
Binding to 0.0.0.0 without public router port forwarding exposes the port exclusively to your local network and connected Tailscale mesh. Tailscale uses end-to-end WireGuard encryption with cryptographic machine authentication, blocking unauthorized external traffic from accessing your workstation.
Related posts
- AI & Agents
Fulfill Your Dirty Fantasies with ComfyUI: Uncensored Workflow Guide
Step-by-step engineering guide to running uncensored ComfyUI workflows locally on NVIDIA GPUs. Master node graphs, bypass cloud filters, and optimize VRAM.
21 min readRead → - AI & Agents
Qwen-Image-2.1 Uncensored: Run Unrestricted ComfyUI with GGUF & Heretic
Master running Qwen-Image-2.1 Uncensored in ComfyUI using GGUF DiT and Heretic Text Encoder. Bypass refusal filters and optimize VRAM on RTX and Apple Silicon.
19 min readRead → - AI & Agents
Pixelle-Video: One Topic, a ComfyUI Assembly Line
Streamlit app that turns a topic or script into short video: LLM copy, ComfyUI or RunningHub media, TTS, BGM, HTML templates, ffmpeg out to output/.
6 min readRead → - AI & Agents
Qwen-Image-2.1 ncnn Vulkan: Run 7B DiT on 2GB VRAM Without CUDA
Run Qwen-Image-2.1 locally on Intel, AMD, and Mac GPUs with 2GB VRAM. Master nihui's portable C++ ncnn Vulkan engine without Python, PyTorch, or CUDA lock-in.
11 min readRead →