🌌 Cosmos 3 Super T2I (fal.ai) *DRE
Run the 64B model nobody can download
- image
- seed
- metadata
Cosmos 3 Super-Text2Image was one of the best open image models in the world the day it shipped, and almost nobody could run it. The 64B Super weights - a 32B reasoner fused to a 32B diffusion tower - want a ~130GB download and 8xH100-class hardware. That's the whole reason this node exists: it doesn't run the model, it asks fal.ai to run it and hands the result back as a normal ComfyUI image you can wire into your own upscaler and saver.
Local is not a route here. This is the route.
How it works
The pack talks to fal's queue API over raw REST - no fal-client package hiding inside. A POST to nvidia/cosmos-3-super/text-to-image returns a request_id plus status_url and response_url; the node polls the status URL until COMPLETED, fetches the result, downloads the images and stacks them into one IMAGE batch.
Two details explain behaviour you'd otherwise blame on ComfyUI. Polling is async, so your queue keeps moving and the UI doesn't lock up while a job waits. And retries are GET-only by design: replaying the submit POST could bill you twice, so it never happens.
The inputs that matter
prompt is the one to slow down on. The author's own tooltip: Cosmos 3 was trained on dense, structured captions, so a three-word prompt undersells it. Write a paragraph, not a phrase.
image_size picks a fal preset (square_hd, square, the 4:3 and 16:9 portrait/landscape variants) or custom, which unlocks width and height - 512 to 1280, steps of 16. That's the endpoint's ceiling, not a bug - this node won't hand you 4K.
num_inference_steps (28) and guidance_scale (4.0) are the quality/obedience pair, and the defaults are fine - reach for guidance when the prompt is being ignored. num_images (1–4) comes back as one batch, seed is for reproducibility, output_format is jpeg or png.
The optional half is where the money goes. enable_prompt_expansion has an LLM rewrite your text into dense Cosmos format first. enable_agentic_generation runs an iterative loop - sample candidates, score, sharpen, repeat - tuned by agentic_max_iterations, agentic_samples_per_iteration and agentic_early_stop; every candidate is a full billed generation, so leave it off until you have a reason. negative_prompt only goes out when you fill it in. enable_safety_checker is on by default and disabling it needs fal account approval. sync_mode keeps the run out of your fal history; you almost never need it. timeout_minutes deserves a warning: if it fires, the node stops waiting but the server job keeps running and keeps costing credits. api_key can be pasted in, otherwise the node reads FAL_KEY from the pack's .env or the environment.
Outputs
image is the batch - Preview Image, Save Image, or your upscale chain. seed is the seed the API actually used. metadata dumps the whole transaction as a string, including the request_id and response URL - feed it to a Show Any node when a run fails and you want to look the job up.
Install
ComfyUI Manager, search DenRakEiw Nodes (publisher denrakeiw), or:
cd ComfyUI/custom_nodes
git clone https://github.com/DenRakEiw/DenRakEiw_Nodes
pip install -r DenRakEiw_Nodes/requirements.txt
Then the key - note the .env lives in the pack's own directory, not ComfyUI root:
echo 'FAL_KEY=your-fal-key' >> ComfyUI/custom_nodes/DenRakEiw_Nodes/.env
That requirements file mostly serves the pack's Flux LayerDiffuse and latent nodes (diffusers, kornia, opencv); this node only needs requests plus the torch and Pillow ComfyUI already ships. Note the README never mentions Cosmos - it documents the Flux 3 API nodes and stops, because this node is newer than the docs. The *DRE tag in the display name is just the pack's convention for coexisting with the author's standalone packs.
Where people get burned
The errors are in German. Not a broken install - the author is German. Kein fal.ai API Key gefunden means no key found; Cosmos3: prompt darf nicht leer sein means you ran it with an empty prompt. A 401/403 means an invalid or missing key; any other refusal carries the API's own error body, which is where the real explanation lives.
Nothing appears on the canvas. It isn't an output node. An unwired graph finishes happily and shows you nothing, so add a Preview or Save node.
It's metered. Every call costs credits, including each of your up-to-4 images and every agentic candidate. An empty fal balance doesn't fail politely, it just stops working. If a queue is long, raise timeout_minutes rather than assuming a hang.
One caveat: r/comfyui reads "not local, goes through an API" as a reason to skip a release, and that instinct is usually right. Here it isn't, because there's no local option to prefer. For stills with real physics in them, a few credits is a fair price to see the fuss.
Inputs (19)
| Name | Type | Default | Description |
|---|---|---|---|
| prompt | STRING | Beschreibung des Bildes. Cosmos3 wurde auf dichte, strukturierte Captions trainiert — ausführliche Prompts funktionieren besser. | |
| image_size | COMBO | square_hd | fal-Preset oder 'custom' für eigene width/height (512–1280, Schritte von 16). |
| width | INT | 1024512–1280 | Nur bei image_size='custom'. |
| height | INT | 1024512–1280 | Nur bei image_size='custom'. |
| num_inference_steps | INT | 281–50 | Denoising-Steps. Mehr = höhere Qualität, langsamer. |
| guidance_scale | FLOAT | 4.01–20 | Classifier-free guidance. Höher = strengere Prompt-Treue. |
| num_images | INT | 11–4 | Anzahl Bilder pro Run (werden als Batch ausgegeben). |
| seed | INT | 00–4294967295 | Gleiche Seed + Prompt + Modellversion = gleiches Bild. |
| output_format | COMBO | jpeg | jpeg (kleiner) oder png (verlustfrei). |
| negative_promptopt | STRING | Wovon die Generation weggesteuert wird (Farben, Objekte, Artefakte). Leer = aus. | |
| enable_prompt_expansionopt | BOOLEAN | false | LLM schreibt den Prompt vorab in das dichte Cosmos3-Trainingsformat um. Bei Fehler fällt die API auf den Rohtext zurück. |
| enable_agentic_generationopt | BOOLEAN | false | Iterativer Agentic-Loop: mehrere Kandidaten generieren, bewerten, Prompt nachschärfen. Deutlich langsamer und teurer (jeder Kandidat ist eine volle Generation). |
| agentic_max_iterationsopt | INT | 21–5 | Nur bei Agentic: maximale Verfeinerungsrunden. |
| agentic_samples_per_iterationopt | INT | 21–4 | Nur bei Agentic: Kandidaten pro Runde. |
| agentic_early_stopopt | BOOLEAN | true | Nur bei Agentic: Loop früh stoppen, wenn ein Kandidat die Qualitätsschwelle reißt. |
| enable_safety_checkeropt | BOOLEAN | true | Content-Moderation für Prompt und Ergebnis. Deaktivieren braucht Account-Freigabe bei fal. |
| sync_modeopt | BOOLEAN | false | True = Bild kommt als data-URI zurück und taucht nicht in der fal-History auf. Fast nie nötig. |
| timeout_minutesopt | INT | 151–240 | Wie lange die Node auf das Ergebnis wartet. Läuft die Zeit ab, bricht nur die Node ab — der Job läuft serverseitig weiter (und kostet trotzdem Credits). |
| api_keyopt | STRING | Leer = FAL_KEY aus .env oder Umgebungsvariable. |
Outputs (3)
| Name | Type | Description |
|---|---|---|
| image | IMAGE | — |
| seed | INT | — |
| metadata | STRING | — |