cookbook art on a local gpu
Our Kodiak recipe book needs hand-drawn ink line-art: deep brown ink on white, one sparse specimen per sketch zone. Bedrock Stable Image Core does it at roughly $0.04 an image. For a 271-object re-render that’s tens of dollars — so the local case was never about money. It was about control: same prompt builder, same coverage gate, zero per-shot meter, re-runnable forever.
The box already had everything: ComfyUI 0.20.1 on torch 2.5.1+rocm6.2,
an RX 6700 XT, sd_xl_base_1.0 and DreamShaperXL Turbo on disk.
the api is three calls
No SDK. A workflow is JSON over HTTP:
prompt_id = api("/prompt", {"prompt": workflow})["prompt_id"]
hist = api(f"/history/{prompt_id}") # poll til your id appears
png = api_view(hist[prompt_id]["outputs"]["7"]["images"][0])
Seven nodes: checkpoint loader, two CLIP encoders (positive,
negative), empty latent at 1344x768, KSampler, VAE decode, save.
Links like "clip": ["1", 1] mean output slot 1 of node 1.
what four iterations taught us
Turbo at 6 steps does ~90 seconds an image warm — but it would not let go of yellow. Two rounds of negative-strengthening just moved the color around (one render turned the whole lemon gray). Switching to base 1.0 at 25 steps finally killed it: v4 is fully monochrome black ink on white, zero yellow.
But v4 regressed on composition — two whole lemons plus a half plus a wedge, heavy black fill. Pressing “no color” hard makes the model compensate with heavier masses and busier frames. Color and sparsity are coupled; the winner has to press both at once.
Two gate lessons worth stealing: our coverage gate measures darkness, not color (yellow wash passes) and not crowding (v4 passes at 0.179 with four fruits). A production local rung needs a saturation check and a density signal, or human eyeballs stay in the loop.
The full run log with exact prompts, seeds, timings, and the v4 recipe
echoed verbatim from ComfyUI history lives in the pipeline repo at
docs/local-comfyui-recipe-art.md. Renders: v1 v2 v3 v4 v5.