Graphical UIs suck. Why can't we write code directly?
A basic workflow is less than 10 lines of code:
text_encoder = load_text_encoder("te.safetensor")
model = load_model("model.safetensor")
vae = load_vae("vae.safetensor")
model.load_lora("lora.safetensor")
latent = new_latent(width=1024, height=1024)
latent = latent.ksampler(steps=20, cfg=4, seed=12345)
image = vae.decode(latent)
image.save("out.png")
Ability to write functions make abstraction possible:
latent = new_latent(width=1024, height=1024)
latent = my_custom_first_pass_sample(latent, steps=20, cfg=4)
latent = my_custom_hires_fix(latent, steps=30, cfg=4, denoise=0.7)
latent = my_custom_adetailer(latent, ...)
No more spaghetti. No more janky node to workaround node UI deficiencies like reroute, switch, number to string to number, numeric operations on numbers, etc.
Not to mention with loop statements it's easy to make custom XYZ plots, which node UI just can't do.
With a real programming language, it has the power of both forge-style UI and node-based UI do while also better than both in flexibility and cleanness.
Pair it with a Jupyter notebook style UI, you can nicely iterate and inspect results anywhere in the middle of generation and nicely iterate until you get a good result.