Topaz Labs Proteus
Topaz Labs Proteus in ComfyUI — Topaz Video AI's workhorse, one clip at a time
- image
Topaz Video AI is what people buy when they have real footage to clean up and don't trust free upscalers with it. Proteus is its general-purpose model - the one Topaz describes as upscaling and restoring a wide range of footage while handling noise, compression artifacts, faces, interlaced material, and scene transitions. This node is Proteus running on Runware's cloud, so you get the commercial video enhancer inside ComfyUI without the Topaz subscription or the hours of local render time. Pay per clip instead.
Before you get excited, read this node's shape carefully, because it's the least "just wire it up" node in the Runware pack.
The video has to be a URL or UUID, not a canvas tensor. The required video input is a plain STRING - a hosted video URL or a Runware media UUID. You cannot drag a video from your graph into this socket, and there's no upload-helper wired to it. You need your footage reachable by Runware (a public URL, or uploaded into Runware's media storage first) and you paste the reference in as text. That friction alone tells you this is a batch/cleanup tool, not a live-render toy.
Resolution is an envelope, not a target. width and height (both up to 8192) don't force the output to exactly that size. Per the tooltips they act as an envelope: the source aspect ratio is preserved, so the result can come back narrower or shorter than you asked, and each value must exceed a fifth of the source dimension or the request is rejected. Set them to roughly "the biggest this clip could ever need," not a precise pixel count.
What you'll actually touch. Most of the settings follow the pack's toggle pattern - a boolean like settings.enhancement.blur that says "Enable to set X", with the value widget next to it gated until you flip the switch. Off means the model's default, which is usually what you want at first. The ones worth knowing:
settings.enhancement.mode-auto,relative, ormanual, controlling how the tuning weights (blur, details, noise, compression, halo, preblur…) are applied. Auto is the sane starting point.settings.enhancement.recoverOriginalDetail- how much source detail gets reintroduced after enhancement; the main "don't let it get too clean" dial.settings.focusFixLevelandsettings.fieldOrder/settings.videoType- Topaz Video AI's bag of tricks for blurred subjects and interlaced broadcast footage, exposed as dropdowns.fps(toggle + value),outputFormat(MP4 / WEBM / MOV),outputQuality.
What comes out. Honest warning: the current pack serves every "upscale" task through the same template, and that template exposes an output socket named image typed as IMAGE - even though this is a video model and Runware's API returns the enhanced clip. The MP4/WEBM/MOV choices in outputFormat are the tell that the real payload is video. Treat this node as file-oriented: expect the result to land as a clip rather than something you can scrub through an in-graph VIDEO pipeline. It's an early-corner of the pack, and video support is where Runware's integration is still roughest.
Install. Standard Runware pack setup:
# ComfyUI Manager (recommended): Custom Nodes Manager → search "Runware" → install → restart
cd ComfyUI/custom_nodes
git clone https://github.com/Runware/ComfyUI-Runware # manual alternative
pip install -r ComfyUI-Runware/requirements.txt
Restart and add a Runware API key (Settings → Runware API key or RUNWARE_API_KEY). No local models.
Video enhancement is the most compute-heavy thing Runware sells, so check the cost shown on the node after each run before you batch a whole folder through it - and remember every clip and frame leaves your machine. For occasional "rescue this one footage" jobs it's a bargain versus a Topaz subscription; for everything else, the local SeedVR2-and-friends path is still the default.
Inputs (33)
| Name | Type | Default | Description |
|---|---|---|---|
| video | STRING | Video input (UUID or URL). | |
| width | INT | 102416–8192 | Width of the generated media in pixels. Acts as an envelope: the source aspect ratio is preserved, so the output can come back narrower, and the value must exceed a fifth of the source width. |
| height | INT | 102416–8192 | Height of the generated media in pixels. Acts as an envelope: the source aspect ratio is preserved, so the output can come back shorter, and the value must exceed a fifth of the source height. |
| fpsopt | BOOLEAN | false | Enable to set fps. Off uses the model's default. |
| fps_valueopt | FLOAT | 1.001–120 | Frames per second for video generation. Defaults to the source frame rate, which is also the lower bound, so a lower value is rejected. |
| settings.enhancement.bluropt | BOOLEAN | false | Enable to set settings.enhancement.blur. Off uses the model's default. |
| settings.enhancement.blur_valueopt | FLOAT | -1.00-1–1 | Amount of sharpness applied. |
| settings.enhancement.compressionopt | BOOLEAN | false | Enable to set settings.enhancement.compression. Off uses the model's default. |
| settings.enhancement.compression_valueopt | FLOAT | -1.00-1–1 | Strength of compression recovery. |
| settings.enhancement.detailsopt | BOOLEAN | false | Enable to set settings.enhancement.details. Off uses the model's default. |
| settings.enhancement.details_valueopt | FLOAT | -1.00-1–1 | Amount of detail reconstruction. |
| settings.fieldOrderopt | COMBO | (default) | Field order for interlaced sources. |
| settings.focusFixLevelopt | COMBO | (default) | Downscales the input for stronger correction of blurred subjects. |
| settings.enhancement.grainopt | BOOLEAN | false | Enable to set settings.enhancement.grain. Off uses the model's default. |
| settings.enhancement.grain_valueopt | FLOAT | 0.000–0.1 | Adds grain after model processing. |
| settings.enhancement.grainSizeopt | BOOLEAN | false | Enable to set settings.enhancement.grainSize. Off uses the model's default. |
| settings.enhancement.grainSize_valueopt | FLOAT | 0.000–5 | Size of the generated grain. |
| settings.enhancement.haloopt | BOOLEAN | false | Enable to set settings.enhancement.halo. Off uses the model's default. |
| settings.enhancement.halo_valueopt | FLOAT | -1.00-1–1 | Amount of halo reduction. |
| settings.enhancement.modeopt | COMBO | (default) | How the tuning weights are applied. |
| settings.enhancement.noiseopt | BOOLEAN | false | Enable to set settings.enhancement.noise. Off uses the model's default. |
| settings.enhancement.noise_valueopt | FLOAT | -1.00-1–1 | Amount of noise reduction. |
| settings.enhancement.prebluropt | BOOLEAN | false | Enable to set settings.enhancement.preblur. Off uses the model's default. |
| settings.enhancement.preblur_valueopt | FLOAT | -1.00-1–1 | Anti-aliasing and deblurring strength. |
| settings.enhancement.prenoiseopt | BOOLEAN | false | Enable to set settings.enhancement.prenoise. Off uses the model's default. |
| settings.enhancement.prenoise_valueopt | FLOAT | 0.000–0.1 | Adds noise to the input to reduce over-smoothing. |
| settings.enhancement.recoverOriginalDetailopt | BOOLEAN | false | Enable to set settings.enhancement.recoverOriginalDetail. Off uses the model's default. |
| settings.enhancement.recoverOriginalDetail_valueopt | FLOAT | 0.000–1 | Reintroduces source details into the output video. |
| settings.videoTypeopt | COMBO | (default) | Frame or field type of the source video. |
| ttlopt | BOOLEAN | false | Enable to set ttl. Off uses the model's default. |
| ttl_valueopt | INT | 60 | Time-to-live (TTL) in seconds for generated content. Only applies when `outputType` is `URL`. |
| outputFormatopt | COMBO | MP4 | File format for the generated video. |
| outputQualityopt | INT | 9520–99 | Compression quality of the output. Higher values preserve quality but increase file size. |
Outputs (1)
| Name | Type | Description |
|---|---|---|
| image | IMAGE | — |