Runware ControlNet
Cloud ControlNet — spatial structure, minus the local model files
- guideImage
- controlNet
- controlNet
ControlNet is how you tell a diffusion model where things go instead of just what they are - feed it an edge map, a depth map, a pose skeleton, and the generation follows that structure. It's one of the most powerful conditions in the whole ecosystem, and locally it means downloading per-architecture ControlNet files that don't transfer between model families. This builder is the Runware way: you give it a guide image and pick a ControlNet model from Runware's catalog, and the conditioning runs on their servers, wired into any model node in the pack that exposes a controlNet socket.
The inputs that matter
- guideImage - required IMAGE. This is your condition: a Canny edge map, a depth render, a pose skeleton, whatever the model expects. Runware's convention is that you do the preprocessing - the pack doesn't ship preprocessor nodes (that's the job of ComfyUI's ControlNet Auxiliary Preprocessors locally) - so feed the prepared condition in.
- model - required enum, and here's the friction: it's eight opaque AIR identifiers (
runware:25@1throughrunware:31@1, plusrunware:98@1), not friendly names like "canny" or "depth." You'll need Runware's model list to map which ID is which condition type. It's the one genuinely annoying thing about this node. - weight - -4 to 4, default 1. The strength of the condition. Community wisdom says the SD-era sweet spot was 0.8–1.2 for strict adherence and 0.3–0.7 for loose guidance; the tooltip also notes that negative values steer away from the guide image, which is a neat trick for "anything but this composition."
- controlMode -
balanced(default),controlnet, orprompt. How much the condition versus the prompt wins when they disagree.
The step controls, and why they matter most
startStep/endStep (and their percentage versions, all gated off by default) control when during denoising the ControlNet applies. The standing community advice is to release the condition once composition has formed - start at 0 but end early (say 50–70% of steps) - so the model gets to add its own detail in the late phase instead of being held to the guide through the whole sample. This is the single most impactful thing you can tune here, and it's free because the gate defaults are "off, use model default."
Output and wiring
Output is RUNWARE_CONTROLNET, and there's a controlNet input of the same type, so you can chain one onto another - the pack's stackable-feature pattern for combining multiple conditions. Wire the last one into a model node's controlNet socket.
Install
One-time pack setup:
cd ComfyUI/custom_nodes
git clone https://github.com/Runware/ComfyUI-Runware
pip install -r ComfyUI-Runware/requirements.txt
Restart, add your Runware API key (Settings → Runware API key, or RUNWARE_API_KEY).
The honest take
If you already run local ControlNet happily, you probably don't need this. If you want the conditioning without the model files and the VRAM, it's the cleanest cloud version of the idea - the end-to-end structure of your workflow stays identical (preprocess → condition → generate), you just don't hold the weights. The opaque model IDs are the price of admission; make a note of which AIR is which and it stops mattering.
Inputs (13)
| Name | Type | Default | Description |
|---|---|---|---|
| guideImage | IMAGE | — | |
| model | COMBO | ControlNet model identifier. | |
| controlModeopt | COMBO | balanced | ControlNet guidance mode. |
| endStepopt | BOOLEAN | false | Enable to set endStep. Off uses the model's default. |
| endStep_valueopt | INT | 1 | Absolute step number to end ControlNet influence. Must be greater than `startStep` and less than or equal to `steps`. |
| endStepPercentageopt | BOOLEAN | false | Enable to set endStepPercentage. Off uses the model's default. |
| endStepPercentage_valueopt | INT | 11–100 | Percentage of steps to end ControlNet influence. Must be greater than `startStepPercentage`. |
| startStepopt | BOOLEAN | false | Enable to set startStep. Off uses the model's default. |
| startStep_valueopt | INT | 0 | Absolute step number to start ControlNet influence. Must be less than `endStep`. |
| startStepPercentageopt | BOOLEAN | false | Enable to set startStepPercentage. Off uses the model's default. |
| startStepPercentage_valueopt | INT | 00–99 | Percentage of steps to start ControlNet influence. Must be less than `endStepPercentage`. |
| weightopt | FLOAT | 1.00-4–4 | Strength of the ControlNet influence. A value of 0 means no influence. Higher values increase the influence, and negative values can be used to steer away from the guide image. |
| controlNetopt | RUNWARE_CONTROLNET | — |
Outputs (1)
| Name | Type | Description |
|---|---|---|
| controlNet | RUNWARE_CONTROLNET | — |