BAGEL Text to Image
GPT-4o-style native generation, on your GPU
- model
- latent
- reasoning
BAGEL Text to Image is where the magic is easiest to see: you type a long, specific sentence and the model writes the image the way GPT-4o does - no diffusion checkpoint, no sampler dance, no negative prompt. ByteDance Seed trained BAGEL-7B-MoT as a unified multimodal model (7B active, 14B total, mixture-of-transformers) that does text-to-image, image editing, and image understanding with one set of weights. Released spring 2025 as the open-source answer to GPT-4o's native image generation, it's the kind of model that made people say "it mogs Flux" in the release thread - and for prompt adherence, it kind of does. This node is that model's text-to-image path, wrapped for ComfyUI by the neverbiasu/ComfyUI-BAGEL pack.
How it works
BAGEL doesn't hand you a finished image. It generates a standard ComfyUI LATENT - the node is deliberately VAE-decoupled, so it never loads the autoencoder itself. You decode downstream with the official VAEDecode node and the FLUX ae.safetensors. That's the same VAE BAGEL was trained on, so wiring it up is: this node → VAEDecode → preview/save.
Inside, it builds three parallel contexts before sampling: a text-conditioned context, an image-conditioned one (fixed internally for text-to-image), and the full prompt context, then runs its denoiser with your CFG settings. It can even "think" first - with show_thinking on, it writes planning text between <think> tags before sampling, and returns that as the reasoning output.
The inputs that matter
- prompt - the whole point. BAGEL rewards natural, specific language; the official style is long sentences, not comma soup.
- width / height - 256–1024, stepped in 16. These are the ComfyUI version of the official app's ratio presets, so treat 1024×1024 as the default and 16-aligned dimensions as a rule, not a suggestion.
- cfg_text_scale (default 4) - how hard it follows the prompt; the official app recommends 4.0–8.0. This is the dial you'll actually touch.
- cfg_interval (default 0.4) - start of the CFG interval, end fixed at 1.0. Leave it alone until you have a reason not to.
- timestep_shift (default 3) - higher favors layout, lower favors fine detail.
- num_timesteps (default 50) - total denoising steps; more steps, slower, sharper.
- seed - 0 leaves it unset (matches the official app), any positive value is reproducible.
- The show_thinking / max_think_tokens / do_sample / text_temperature cluster - enable thinking and it plans before generating; temperature 0.3 is the sensible default.
Outputs: latent (LATENT, wire to VAEDecode with the FLUX AE) and reasoning (STRING, only populated when thinking is on).
Installing and the VRAM reality
Same shared setup as the rest of the pack: clone https://github.com/neverbiasu/ComfyUI-BAGEL into custom_nodes, pip install -r requirements.txt, put the single-file BAGEL .safetensors in models/bagel/ and FLUX ae.safetensors in models/vae/, restart. ComfyUI Manager search "ComfyUI-BAGEL" works too. The example workflow bagel_text_to_image.json shows the whole graph.
Where people get burned: this node is heavy. The README flags BF16 as A100-class, and the community consensus is that 16–24 GB cards should reach for the FP8/INT8/NF4 variants rather than fighting the full-precision checkpoint. If you get OOM on a 4090, that's not a bug - that's BAGEL. Grab a quantized model from the 6chan collection and the same workflow will run.
Also worth knowing: the generation-side capability lives on the model, not the node. If you load a variant without text-to-image support, the node refuses before wasting a GPU cycle. That's a nice touch in a pack this fiddly.
Inputs (15)
| Name | Type | Default | Description |
|---|---|---|---|
| model | BAGEL_MODEL | Native BAGEL model from BAGEL Model Loader. | |
| prompt | STRING | A female cosplayer portraying an ethereal fairy or elf, wearing a flowing dress made of delicate fabrics in soft, mystical colors like emerald green and silver. She has pointed ears, a gentle, enchanting expression, and her outfit is adorned with sparkling jewels and intricate patterns. The background is a magical forest with glowing plants, mystical creatures, and a serene atmosphere. | Text prompt for image generation. |
| width | INT | 1024256–1024 | Output width. This is the ComfyUI equivalent of the official app's image-ratio preset; use 16-pixel aligned dimensions. |
| height | INT | 1024256–1024 | Output height. This is the ComfyUI equivalent of the official app's image-ratio preset; use 16-pixel aligned dimensions. |
| cfg_text_scale | FLOAT | 4.01–8 | Controls how strongly BAGEL follows the text prompt; the official app recommends 4.0–8.0. |
| cfg_interval | FLOAT | 0.40–1 | Start of the CFG interval. The end is fixed at 1.0, matching the official app. |
| timestep_shift | FLOAT | 3.01–5 | Shifts denoising-step allocation: higher favours layout, lower favours detail. |
| num_timesteps | INT | 5010–100 | Total denoising steps. |
| cfg_renorm_min | FLOAT | 0.00–1 | CFG-Renorm minimum. 1.0 disables CFG-Renorm. |
| cfg_renorm_type | COMBO | global | CFG-Renorm method. global is the official text-to-image default. |
| show_thinking | BOOLEAN | false | Generate and return the model planning text before image sampling. |
| max_think_tokens | INT | 102464–4096 | Maximum planning tokens when Thinking is enabled. |
| do_sample | BOOLEAN | false | Enable sampling for planning-text generation when Thinking is enabled. |
| text_temperature | FLOAT | 0.30.1–1 | Planning-text randomness when Thinking is enabled. |
| seed | INT | 00–1000000 | 0 leaves the seed unset, matching the official app; positive values are reproducible. |
Outputs (2)
| Name | Type | Description |
|---|---|---|
| latent | LATENT | — |
| reasoning | STRING | — |