arkennemasis fal · Flux SRPO · $0.025/MP
The aesthetics-tuned Flux that wants shorter prompts than you're used to
- images
- image_paths
- timings
- seed
- prompt
- has_nsfw_concepts
- info
SRPO is a preference-optimised Flux dev variant - the ["dev]" in the endpoint name is literal - tuned for aesthetics rather than instruction-following. On fal you get it as fal-ai/flux/srpo for $0.025 per megapixel, which lands a 1 MP image at two and a half cents.
Is it worth knowing about? Mildly, and honestly. The people running it locally report that the difference against the base is subtle - one of the few community write-ups on it is someone comparing SRPO Q5 at 8.4GB and Q8 at 12.7GB and concluding the gap is small. What they do report with more confidence is behaviour: it responds better to short prompts, one to three lines, and it leans painterly, handling artistic styles almost like a different model. There are also model-mix threads pairing it with Krea and other checkpoints for photographic output, which tells you where it sits - an aesthetics-first base that people blend rather than a workhorse.
So the honest framing: run it hosted if you don't want a 12 GB quant and 28 steps on your own card, and steal the prompting habit regardless of where you run it. If your Flux prompt is a paragraph of clause-stacked detail, SRPO is not the model to fix that with.
The inputs
- prompt - required and, per the above, shorter is better here.
- image_size - presets (
landscape_4_3default,square_hd,square, portrait presets) orcustomwithimage_size_width/image_size_height. Billing is per output megapixel, so this is the price control:square_hdis 1 MP and two and a half cents, 1536×1536 rounds up to three megapixels and seven and a half cents. - num_inference_steps - default
28, range 1–50. SRPO is not a step-distilled tier; the default is where it was tuned. - guidance_scale - default
4.5, range 1–20. Note that's above the classic Flux 3.5, and the standing advice about Flux's same-face look - drop it toward 2 for people - applies here too. - acceleration -
none/regular/high. - num_images (up to 4), seed, output_format, enable_safety_checker.
- Shared across the pack's fal nodes: max_cost_usd (default $20, checked before upload), reuse_identical_run, extra_json, max_concurrent.
Outputs
images (IMAGE - into SaveImage, an upscaler, an edit node), image_paths (the file as a string), seed as an INT so you can hold a run you liked, and prompt, timings, has_nsfw_concepts, info. The info output is JSON: fal's request id, the cost estimate, the files saved and fal's full answer.
Install
cd ComfyUI/custom_nodes
git clone https://github.com/Hishamahmer/comfyui-arkennemasis
Manager equivalently: search comfyui-arkennemasis and install. Restart ComfyUI, then:
FAL_KEY=your-key-from-fal.ai/dashboard/keys
in the .env file beside run_nvidia_gpu.bat. The fal nodes in this pack install nothing - the wrapper is standard-library HTTP - so this is a genuinely two-minute setup, and there is no key box on the node because a typed key would be written into every workflow you share.
Notes from actually using it
If SRPO's output feels like base Flux, that's consistent with what the community says about it - treat it as a flavour dial, not a different model, and don't buy a workflow redesign on its account. Aesthetic tuning also tends to mean you should stop helping: the "ultra realistic, 8K, masterpiece" boilerplate that SD 1.5 needed actively hurts Flux-family output, and with an aesthetics-tuned variant you're fighting the tuning rather than helping it.
The safety checker returns black images instead of erroring when it flags something, and disabling it requires account authorisation on fal - unauthorised requests get checked regardless. Black output at this price is moderation, not breakage. reuse_identical_run (on by default) will hand back the cached file for identical inputs, including after a restart, so if you want a genuinely different take from the same settings, either change the seed or switch it off. And if ComfyUI restarts mid-job, the money isn't gone: requests are logged to output/fal/_requests.jsonl and the pack's free Recover Result node collects the finished job by id.
Inputs (15)
| Name | Type | Default | Description |
|---|---|---|---|
| prompt | STRING | The prompt to generate an image from. | |
| image_size | COMBO | landscape_4_3 | The size of the generated image. 'custom' uses the width and height below. |
| image_size_width | INT | 102416–14142 | Width in pixels when image_size is 'custom'. |
| image_size_height | INT | 102416–14142 | Height in pixels when image_size is 'custom'. |
| num_inference_steps | INT | 281–50 | The number of inference steps to perform. |
| seed | INT | -1-1–2147483647 | The 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_scale | FLOAT | 4.501–20 | The 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_images | INT | 11–4 | The number of images to generate. |
| enable_safety_checker | BOOLEAN | true | If 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_format | COMBO | jpeg | The format of the generated image. |
| acceleration | COMBO | none | The speed of the generation. The higher the speed, the faster the generation. |
| max_cost_usdopt | FLOAT | 20.00–100000 | Safety 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_runopt | BOOLEAN | true | If 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_jsonopt | STRING | Advanced: 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_concurrentopt | INT | 11–32 | How 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)
| Name | Type | Description |
|---|---|---|
| images | IMAGE | — |
| image_paths | STRING | — |
| timings | STRING | — |
| seed | INT | — |
| prompt | STRING | — |
| has_nsfw_concepts | STRING | — |
| info | STRING | JSON: request id, cost estimate, saved files and fal's full answer. |