Nodes/arkennemasis - ChatGPT / Codex / fal AI nodes/arkennemasis fal · Flux Subject · $0.04/MP
ComfyUI Node

arkennemasis fal · Flux Subject · $0.04/MP

Keep one specific thing, generate everything around it

By Hishamahmer·Created 3 months ago·Updated 9 days ago· 11
arkennemasis fal · Flux Subject · $0.04/MP
  • image
  • images
  • image_paths
  • seed
  • timings
  • prompt
  • has_nsfw_concepts
  • info
◄prompt►
◄image_sizesquare_hd►
◄image_size_width1024►
◄image_size_height1024►
◄num_inference_steps8►
◄seed-1►
◄guidance_scale3.50►
◄num_images1►
◄enable_safety_checkertrue►
◄output_formatpng►
◄max_cost_usd20.0►
◄reuse_identical_runtrue►
◄extra_json►
◄max_concurrent1►

Flux Subject puts a specific thing back into a generated scene. Not a face, in the PuLID sense - a product, a bag, a mug, a brand identity, a style reference. You supply the picture of the subject, describe the scene you want it in, and it renders that scene with your object in it. Schema-wise it's Schnell with a subject input: fast endpoint, 8 default steps, and the cheapest subject-conditioning option in this pack at $0.04/MP.

That price point is why it's interesting. Four cents a megapixel is a hair above PuLID, well under Fill, and far under the Ultra endpoints, so you can generate a product-shot matrix - five backgrounds, four angles - without doing arithmetic first. If you've done the customer-photo-to-catalogue thing with local LoRAs, this is the "no training, no dataset, just a reference and a prompt" version of the job, and the trade you're making is fidelity for speed. Don't expect a LoRA's precision from one reference image.

Inputs

  • image - the subject. One image, clean crop, plain-ish background if you have the choice.
  • prompt - the scene you want built around it. The description does the heavy lifting; the subject socket only holds one thing constant.
  • image_size - square_hd is the default here (unlike the landscape default on the other Flux nodes in this pack), with square, the landscape/portrait presets and custom plus image_size_width/image_size_height available. Billing is per output megapixel, so this is the price dial.
  • num_inference_steps - default 8, up to 50. The endpoint is the "super fast" Schnell branch; the defaults are where the speed is.
  • guidance_scale - default 3.5.
  • num_images (up to 4), seed, output_format (png by default here), enable_safety_checker.
  • The shared four: max_cost_usd, reuse_identical_run, extra_json, max_concurrent.

Outputs

images and image_paths (files under output/fal/fal-ai_flux-subject/), seed as an INT, plus prompt, timings, has_nsfw_concepts and info - JSON containing the request id, the cost estimate, the saved files and fal's full answer. Wiring is the usual: image socket into SaveImage, or into a fill/erase node, or into an upscaler if 1 MP isn't enough.

Install

cd ComfyUI/custom_nodes
git clone https://github.com/Hishamahmer/comfyui-arkennemasis

or install comfyui-arkennemasis from ComfyUI Manager. Restart, then add the key line to the .env in the folder that holds run_nvidia_gpu.bat:

FAL_KEY=your-key-from-fal.ai/dashboard/keys

No downloads, no Python dependencies for this node, no key widget - the pack reads the .env and nowhere else, which is exactly why your key can't end up inside a workflow file.

Where it goes wrong

Subject conditioning is sensitive to the reference crop. A tight, well-lit, single-object photo with the whole object in frame works; a cluttered shot with three similar items gets you an amalgam of all three. If the output keeps morphing your product, that's the model's guess showing - crop harder and describe less.

There's also an expectation mismatch worth naming: "Subject" sounds like it guarantees consistency across a set, and it doesn't - it biases one generation toward one reference. For a run of twenty images that must all show the same object, you want a trained LoRA, or the pack's Variation pipeline, or an edit model. This node is the fast first draft of that project, not the guarantee.

And the pack-wide caveats: the safety checker returns black images rather than errors, and switching it off needs account authorisation on fal; reuse_identical_run hands back cached files for identical inputs unless you turn it off; a missing key or an empty fal balance stops the run before it bills; and the free Recover Result node rescues a job whose ComfyUI died mid-wait.

Categoryarkennemasis/fal/Image/Flux

Inputs (15)

NameTypeDefaultDescription
promptSTRINGThe prompt to generate an image from.
imageIMAGEURL of image of the subject
image_sizeCOMBOsquare_hdThe size of the generated image. 'custom' uses the width and height below.
image_size_widthINT102416–14142Width in pixels when image_size is 'custom'.
image_size_heightINT102416–14142Height in pixels when image_size is 'custom'.
num_inference_stepsINT81–50The number of inference steps to perform.
seedINT-1-1–2147483647The same seed and the same prompt given to the same version of the model will output the same image every time. -1 leaves it to the model.
guidance_scaleFLOAT3.500–20The CFG (Classifier Free Guidance) scale is a measure of how close you want the model to stick to your prompt when looking for a related image to show you.
num_imagesINT11–4The number of images to generate.
enable_safety_checkerBOOLEANtrueIf set to true, the safety checker will be enabled. Disabling it requires account authorization; unauthorized requests are always checked, and images flagged as unsafe are returned as black images.
output_formatCOMBOpngThe format of the generated image.
max_cost_usdoptFLOAT20.00–100000Safety cap. If the estimated cost of this run is above this many US dollars the node stops BEFORE sending anything to fal. 0 = no cap.
reuse_identical_runoptBOOLEANtrueIf these exact inputs (the settings AND the same pictures/clips/audio) were already paid for and the files are still in output/fal, return them instead of paying again - also after a ComfyUI restart. Turn off for a fresh take with the same settings.
extra_jsonoptSTRINGAdvanced: a JSON object merged into the request last, for any fal field this node has no box for. Example: {"seed": 7}. Leave empty normally.
max_concurrentoptINT11–32How many paid fal calls may run at the same time in one run, across every fal node. 1 (default) = one after another. This node starts its paid part only while fewer than this many fal calls are running. Once any fal node fails, the ones still waiting are not started, so nothing more is billed.

Outputs (7)

NameTypeDescription
imagesIMAGE—
image_pathsSTRING—
seedINT—
timingsSTRING—
promptSTRING—
has_nsfw_conceptsSTRING—
infoSTRINGJSON: request id, cost estimate, saved files and fal's full answer.