LocalHarness — the image plugin
Image
← the plugins /image
Off by default — turn it on with your ComfyUI address and the agent can make pictures.
how it works
- one tool generate_image takes a prompt and a size; the server and workflow are settings, not arguments.
- your server it sends a workflow template to your ComfyUI and waits up to timeout_s; the first picture also loads the model.
- never overwritten each picture gets its own id, in a folder core assigns.
- machine-level a project folder cannot change the server or the workflow.
- doctor checks that ComfyUI answers and has the template’s model files.
Setup
Turn it on from the session, fill in its settings, and it checks they work; your coding agent can do the hardware part.
~/project — localharness start
shipped
qwen3.6-27b ~/project
Plugins: image, memory, autoresearch
❯ /plugins enable image
Restarting with image on — your conversation is kept.
ComfyUI address [http://127.0.0.1:8188]:
✓ image enabled in ~/.localharness/overrides.yaml
set image.comfyui_url = 'http://127.0.0.1:8188'
Checking it now:
✓ image: ComfyUI reachable at http://127.0.0.1:8188 (template: qwen-image-2.1)
Once ComfyUI answers, the agent can make pictures with generate_image.
Restarted with image on. Your conversation continues.
image: on in this session
❯ make a picture of a lighthouse at dusk
◆ generate_image a lighthouse at dusk
✓ generate_image
in a session: /plugins enable image · from a shell: localharness plugins enable image
paste into your coding agent to set it up for your hardware
Set up ComfyUI on this machine for LocalHarness image generation. Install ComfyUI and run it so it answers at http://127.0.0.1:8188; keep it off the open internet. Put these Qwen-Image-2.1 INT8 files in its models folder: diffusion_models/qwen_image_2.1_int8_convrot.safetensors (about 7.3 GB), text_encoders/qwen3vl_8b_int8_convrot.safetensors (about 9.4 GB) and vae/qwen_image_2.1_vae_bf16.safetensors (about 0.7 GB). The weights are under the Qwen Research License: personal, non-commercial use. Keep the UNETLoader weight_dtype at "default" (the fp8 fast mode spoils the pictures). On an NVIDIA GB10 (DGX Spark) the INT8 kernels compile on first use and need the Python headers: start ComfyUI with C_INCLUDE_PATH pointing at them. You are done when http://127.0.0.1:8188/system_stats answers and `localharness doctor` shows image reachable. Surfaces
where you reach it
- generate_image the tool the agent calls in a session.
- localharness generate-image makes a picture from the shell.
- image.comfyui_url · image.workflow · image.timeout_s the server, your own workflow, and how long to wait.
- slash commands none.
- /plugins enable image inside a running session: until it is set up, asks what it needs and checks it; then restarts with your conversation kept.
- localharness plugins enable image off by default; disable turns it off again.