P-Image
Pruna's take on text-to-image, minus the GPU
- advancedFeatures.watermark.image
- image
P-Image is Pruna AI's text-to-image model, wrapped as a node in the Runware pack, and the honest summary is: it's a clean, competent diffusion image generator that you pay for per run instead of hosting. Pruna is best known in the ML world for model optimization - quantization, caching, making big models run faster on weaker hardware - so P-Image is effectively the optimized product they ship as a service. Through Runware, you get it as the simplest possible ComfyUI node: prompt, width, height, image out.
The reason to pick it over a local FLUX or SDXL setup isn't raw quality - open models are the community's default for still images and the KB's essays make that case well. It's the zero-friction factor: no checkpoint to download, no VAE to get wrong, no VRAM budget. If you're on a machine that can't run a modern model at all, or you just want a second opinion from a different model family without installing anything, this is the node.
What you actually set
positivePrompt- required. P-Image responds to plain descriptive English; it's not a tags-only model.width/height- 256 to 1440 pixels, step 16, default 1024×1024. Those 16px steps are worth noting: oddball dimensions get snapped.numberResults- up to 4 seeded variations.outputFormat-JPG(default),PNG,WEBP.watermark- aRUNWARE_WATERMARKbuilder socket if you want to stamp output programmatically.safety/safety.checkContent- content checking, off by default.
Output: one image socket, type IMAGE, into any Preview or Save node.
Install
One-time pack setup: ComfyUI Manager → search Runware → install → restart, or
cd ComfyUI/custom_nodes
git clone https://github.com/Runware/ComfyUI-Runware
pip install -r ComfyUI-Runware/requirements.txt
API key from runware.ai/api-keys into ComfyUI Settings → Runware API key or RUNWARE_API_KEY. Dependencies are runware-sdk, pillow, and soundfile - nothing heavy, and no weights ever land on your disk.
Where people get burned
- Per-run pricing adds up. The title bar shows each run's cost, and it's easy to forget that "cheap per image" × "twenty images" is real money. Set a budget in your head before you batch.
- It's not competing with your local FLUX on detail. P-Image is good, not a benchmark-topper. Use it for what the pack is good at - a reliable image from a clean node - and keep your local models for the heavy lifting.
- Default JPG. If alpha matters, flip
outputFormattoPNG.
The verdict: P-Image is the "no local GPU, no install friction" option in the pack's image line. It won't dethrone your local checkpoint, but when you can't run one at all, this node is genuinely there when you need it.
Inputs (18)
| Name | Type | Default | Description |
|---|---|---|---|
| positivePrompt | STRING | Text prompt describing elements to include in the generated output. | |
| width | INT | 1024256–1440 | Width of the generated media in pixels. |
| height | INT | 1024256–1440 | Height of the generated media in pixels. |
| advancedFeatures.watermark.imageopt | IMAGE | — | |
| numberResultsopt | INT | 11–20 | Number of results to generate. Each result uses a different seed, producing variations of the same parameters. |
| advancedFeaturesopt | BOOLEAN | false | Enable to set advancedFeatures. Off uses the model's default. |
| advancedFeatures.watermark.bgColoropt | STRING | Background color in hex format. | |
| advancedFeatures.watermark.displayPositionopt | COMBO | (default) | Watermark position. |
| advancedFeatures.watermark.fontColoropt | STRING | Text color in hex format. | |
| advancedFeatures.watermark.opacityopt | BOOLEAN | false | Enable to set advancedFeatures.watermark.opacity. Off uses the model's default. |
| advancedFeatures.watermark.opacity_valueopt | FLOAT | 0.100.1–1 | Watermark opacity. |
| advancedFeatures.watermark.textopt | STRING | Watermark text. | |
| safetyopt | BOOLEAN | false | Enable to set safety. Off uses the model's default. |
| safety.checkContentopt | BOOLEAN | false | Enable or disable content safety checking. |
| 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 | JPG | File format for the generated image. |
| outputQualityopt | INT | 9520–99 | Compression quality of the output. Higher values preserve quality but increase file size. |
Outputs (1)
| Name | Type | Description |
|---|---|---|
| image | IMAGE | — |