Install
openclaw skills install image-inpaintingMask-driven image inpainting on RunComfy via the `runcomfy` CLI. Routes to Tongyi MAI Z-Image Turbo Inpainting (the dedicated inpainting endpoint with mask, strength, and control-scale) and to identity-preserving edit models (Nano Banana 2 Edit, GPT Image 2 Edit, FLUX Kontext Pro) when a mask isn't available and the region must be described instead. Use for object removal, watermark removal, region replacement, blemish cleanup, and any controlled local edit where a binary mask defines the target area. Triggers on "inpaint", "inpainting", "image inpaint", "remove from image", "fill region", "mask-driven edit", "remove watermark", "remove object", "patch the photo", "fill the hole", or any explicit ask to edit a specific masked region of a still.
openclaw skills install image-inpaintingMask-driven region edits โ remove objects, fill gaps, replace masked areas โ on RunComfy via the runcomfy CLI. This skill routes to Z-Image Turbo Inpainting when a mask is available, and to instruction-driven edit models when the region must be described in prose.
runcomfy.com ยท Z-Image Inpainting ยท CLI docs
# 1. Install (see runcomfy-cli skill for details)
npm i -g @runcomfy/cli # or: npx -y @runcomfy/cli --version
# 2. Sign in
runcomfy login # or in CI: export RUNCOMFY_TOKEN=<token>
# 3. Inpaint
runcomfy run tongyi-mai/z-image/turbo/inpainting \
--input '{"image": "...", "mask_image": "...", "prompt": "..."}' \
--output-dir ./out
CLI deep dive: runcomfy-cli skill.
Listed by precision of region targeting (mask-required first, then description-based).
Z-Image Turbo Inpainting โ tongyi-mai/z-image/turbo/inpainting (default โ mask required)
Dedicated inpainting endpoint with mask, strength, and control-scale. Open-weights, sub-second to a few seconds. Pick for: precise region edits with a binary mask โ object removal, watermark cleanup, full-region replacement. Avoid for: edits without a mask โ use Nano Banana 2 Edit (description-based).
Z-Image Turbo Inpainting LoRA โ tongyi-mai/z-image/turbo/inpainting/lora
Inpainting endpoint with LoRA adapter support โ apply a fine-tuned style during inpainting. Pick for: brand-style-locked inpainting (LoRA captures the look, mask defines the region). Avoid for: generic inpainting โ use the base inpainting endpoint.
Nano Banana 2 Edit โ google/nano-banana-2/edit (description-based fallback)
Identity-preserving edit driven by spatial language ("the watermark in the bottom-right", "the cables overhead"). No mask required. Pick for: when no mask is available and the region can be described. Avoid for: precise pixel-level region edges โ use Z-Image Inpainting.
GPT Image 2 Edit โ openai/gpt-image-2/edit
Multi-ref edit with layout-precise instructions; honors "remove only the X" directives. Pick for: complex prompt + reference composition where the masked region needs context from other images. Avoid for: simple single-image mask-driven jobs โ use Z-Image Inpainting.
FLUX Kontext Pro โ blackforestlabs/flux-1-kontext/pro/edit
Single-instruction local edit with maximum preservation of everything else. Pick for: "keep everything except X" style local edits without a mask. Avoid for: explicit mask-driven workflows โ use Z-Image Inpainting.
Model: tongyi-mai/z-image/turbo/inpainting
Catalog: Z-Image inpainting
| Field | Type | Required | Notes |
|---|---|---|---|
prompt | string | yes | What fills the masked region; describe preservation constraints for the surround |
image | string | yes | Source image URL |
mask_image | string | yes | Grayscale mask URL (white = inpaint, black = preserve) |
strength | float | no | 0.3โ0.6 for retouching, 0.7โ1.0 for full replacement |
control_scale | float | no | 0.6โ0.9 typical |
aspect_ratio | enum | no | W:H output ratio |
seed | int | no | Reproducibility |
Object removal (low strength):
runcomfy run tongyi-mai/z-image/turbo/inpainting \
--input '{
"prompt": "Remove overhead cables; preserve rooflines and sky gradient; thin clean sky.",
"image": "https://your-cdn.example/street.jpg",
"mask_image": "https://your-cdn.example/cables-mask.png",
"strength": 0.5,
"control_scale": 0.8
}' \
--output-dir ./out
Region replacement (high strength):
runcomfy run tongyi-mai/z-image/turbo/inpainting \
--input '{
"prompt": "Replace busy backdrop with smooth light gray studio paper; mask background only.",
"image": "https://your-cdn.example/product.jpg",
"mask_image": "https://your-cdn.example/bg-mask.png",
"strength": 0.9
}' \
--output-dir ./out
0.3โ0.5 retouching / blemish cleanup0.6โ0.7 object replacement with style match0.8โ1.0 full region replacement"preserve rooflines and sky gradient", "match brick pattern and mortar tone"."the left shelf", "upper-right quadrant" โ disambiguates if the mask covers multiple objects.When you don't have a mask, use Nano Banana 2 Edit with spatial language. The model identifies the target region from your prompt:
runcomfy run google/nano-banana-2/edit \
--input '{
"prompt": "Remove the watermark in the bottom-right corner. Keep everything else exactly as in the input.",
"image_urls": ["https://your-cdn.example/photo.jpg"]
}' \
--output-dir ./out
For richer description-based edit, see image-edit.
strength: 0.9 and a description of the new backgroundstrength: 0.8/trainerimage-edit.image-outpainting.video-inpainting.Mask-creation tools (Photoshop, GIMP, segment-anything models) are upstream of this skill; the CLI consumes a mask URL but doesn't generate one.
| code | meaning |
|---|---|
| 0 | success |
| 64 | bad CLI args |
| 65 | bad input JSON / schema mismatch |
| 69 | upstream 5xx |
| 75 | retryable: timeout / 429 |
| 77 | not signed in or token rejected |
Full reference: docs.runcomfy.com/cli/troubleshooting.
The skill picks Z-Image Inpainting when a mask is available, falls back to description-based edit otherwise, and invokes runcomfy run with the matching JSON body. The CLI POSTs to the Model API, polls request status, and downloads the result into --output-dir.
npm i -g @runcomfy/cli or npx -y @runcomfy/cli. Agents must not pipe an arbitrary remote install script into a shell on the user's behalf.runcomfy login writes the API token to ~/.config/runcomfy/token.json with mode 0600. Set RUNCOMFY_TOKEN env var in CI / containers.--input. The CLI does not shell-expand prompt content. No shell-injection surface.model-api.runcomfy.net and *.runcomfy.net / *.runcomfy.com. No telemetry.Bash(runcomfy *) only.best-image-editing-models collection