Fibo 2 Scheduler
The sigma curve Fibo 2.0 was trained on, not the one you guessed
- latent
- SIGMAS
What this is for
Fibo 2.0 is Bria's follow-up to FIBO, the model that made long structured JSON captions its whole personality instead of a prompting trick. It ships as two transformers: Dev, which generates and edits at 50 steps and CFG 5, and Edit Turbo, which edits at 4 steps and CFG 1. Both sample through SamplerCustomAdvanced, which means the sigma schedule is a wire, not a dropdown - and that's the gap this node fills.
You cannot pick "Fibo" in a KSampler scheduler list, because it isn't one. The released schedule is the one Bria trained the model against, and it shifts with the number of tokens in the latent. That last part is the interesting bit.
How it works
Internally the node turns your image size into a token count - (width // 16) * (height // 16) - and asks the model's own prompt module for the released sigma ladder at that token count and step count. A 1024×1024 render and a 1216×832 render do not get the same curve, because the model wasn't trained to see them as the same problem.
If you connect a latent, its spatial dimensions replace your typed width and height entirely. This matters more than it sounds: Text Encode Fibo 2 hands on an empty latent sized to about one megapixel in the shape of the image you're editing, and that latent is the honest source of truth for size. Typing a number yourself is a good way to sample a schedule that doesn't match the noise you're actually denoising.
It outputs one thing: a SIGMAS tensor of steps + 1 values running from 1 down to 0. Feed it into SamplerCustomAdvanced alongside a CFGGuider.
Worth saying out loud in 2026: CFG 5 on Dev is not a typo for "use 7". Fibo 2.0 is a guidance-distilled, flow-matching-era model, and the schedule assumes the CFG it shipped with - the same inversion the KB's concepts doc covers for every modern base. The KB's whole point about reshaped sigma curves applies here too: on a straight trajectory, an aggressive schedule is a distortion, so don't stack a Karras-shaped hack on top of a curve that's already the intended one.
Inputs and outputs
steps(default 50) - 50 for Dev, 30 for a fast draft, 4 for Edit Turbo. Match it to the transformer you loaded, not to your habits.width/height(default 1024×1024) - in pixels, multiples of 16. Ignored the momentlatentis connected.latent(optional) - the latent being sampled. Connect this and stop typing sizes.SIGMAS- the only output. IntoSamplerCustomAdvanced.
Install
The pack itself:
cd ComfyUI/custom_nodes
git clone https://github.com/WASasquatch/was-node-suite-comfyui.git
Or ComfyUI Manager, searching WAS Node Suite v3. No pip step - requirements.txt is an empty comment, and the pack needs ComfyUI 0.14.0+ on Python 3.10+. First start writes its config under ComfyUI/user/was-node-suite/ and compiles bytecode; after that it's silent.
The node is free. The model isn't:
fibo2_dev_bf16.safetensors(16.5 GB) orfibo2_dev_int8_convrot.safetensors(8.4 GB) →ComfyUI/models/diffusion_modelsfibo2_edit_turbo_*in the same two flavours, if you want editingqwen3vl_4b_bf16.safetensors(8.9 GB) →ComfyUI/models/text_encodersflux2-vae.safetensors(336 MB) →ComfyUI/models/vae
All from Comfy-Org's repackaging at Comfy-Org/Fibo-2.0. If 16.5 GB is too much, the int8-convrot build is the one that works on 20- and 30-series cards without fp8 support.
The transformers are CC BY-NC 4.0. Non-commercial only, Bria AI. That's a real constraint and it's why Fibo 2.0 got a chilly reception on release - the same "calling it open source when the code and weights are non-commercial" argument that thread ran about FIBO. Weights on your disk, licence on your output.
Where people get burned
Edit Turbo sampled like a normal model. 4 steps, CFG 1, euler. Miss that and you get oversaturated, harsh frames and blame the model.
The wrong latent. If you hand it a latent from a stock Empty Latent Image, the run dies with a message about sampling a FLUX.2 latent of 128 channels. Fibo 2.0 rides the FLUX.2 VAE and its 128-channel latent; use the one Text Encode Fibo 2 produces.
Reaching for the wrong sampler. This output is sigmas. KSampler takes a scheduler name. If you're on KSampler, no amount of wiring gets this curve into it - switch to SamplerCustomAdvanced.
Choosing Dev when you meant Edit Turbo (or the reverse). Dev does both jobs; Edit Turbo only edits. A 50-step schedule on the turbo transformer is 46 steps of noise-shaping the model wasn't trained for.
Inputs (4)
| Name | Type | Default | Description |
|---|---|---|---|
| steps | INT | 501–4096 | Denoising steps: 50 for Dev, 30 for a faster draft, 4 for Edit Turbo. |
| width | INT | 102416–16384 | Image width in pixels, as 1024 or 1216. Ignored when latent is connected. |
| height | INT | 102416–16384 | Image height in pixels, as 1024 or 832. Ignored when latent is connected. |
| latentopt | LATENT | The latent being sampled, as Text Encode Fibo 2 hands on; its size replaces width and height. |
Outputs (1)
| Name | Type | Description |
|---|---|---|
| SIGMAS | SIGMAS | steps + 1 sigmas from 1 down to 0. |