omnisvg
Raster-to-vector with a real generative model, in the cloud
- image
- api_config
- svg_audio
- svg_video
- workflow_id
- raw_json
OmniSVG is a model-based image-to-SVG generator - one of the newer "generative vectorization" approaches that doesn't trace paths the old way, but actually generates the SVG markup from what it sees. This node runs it on Civitai's orchestration layer: feed it a raster image, get back an SVG, no local model download and no GPU needed. It's the pick when you want clean, semantic vector output - logos, icons, illustrations - rather than a pixel-precise geometric trace.
Compare it to the two siblings in the same menu: StarVector (also generative, Adobe's approach, fewer knobs) and VTracer (the classic algorithmic tracer, fast and deterministic, tons of tuning parameters). OmniSVG is the generative option with the most controls, including an optional text prompt that can steer the SVG generation.
How it works
Standard civitai-comfy-nodes mechanics: the node uploads your image to the Civitai Orchestration API as an imageToSvg recipe on the Comfy engine with ecosystem omnisvg, long-polls, and returns the result. Since OmniSVG is a language-model-style generator, the tuning knobs are sampling parameters - temperature, top-p, top-k, repetition penalty - the same family of controls you'd expect on an LLM.
The inputs that matter
- image - required (
IMAGE; the tooltip notes it also accepts a URL/DataURL/Base64 string). Wire a Load Image. - model -
omnisvg-4b(default) oromnisvg-8b. The 8B is the quality upgrade, presumably at higher cost. - max_length - 256–2048 (default 1536), how long the generated SVG text may be.
- temperature (default 0.3), top_p (0.9), top_k (50), repetition_penalty (1.05) - sampling controls. Low temperature = more deterministic, safer output; raise it for more adventurous vectorizations.
- prompt - optional free-text hint that steers generation.
- seed - present, so you can reproduce results. Nice.
Outputs
The output naming is a codegen quirk worth knowing: the pack maps the generic media result to slots named svg_audio and svg_video, plus workflow_id and raw_json. Don't overthink the names - one of those media slots carries the SVG result, and raw_json holds the full workflow JSON when you need the raw SVG text for saving to a file.
Installing and authenticating
Pack-wide install:
cd ComfyUI/custom_nodes
git clone https://github.com/civitai/civitai-comfy-nodes.git
pip install -r civitai-comfy-nodes/requirements.txt
or ComfyUI Manager → "Civitai Comfy Nodes" → Install → restart. Dependencies: requests + python-socketio[client].
Auth: Civitai Auth node → CIVITAI_API_TOKEN → stored key/OAuth → browser login. Headless:
export CIVITAI_API_TOKEN=your_token
Where people get burned
- Generative vectorization is not a trace. Output won't be a pixel-perfect geometric replica of the input the way VTracer is; it's a generated SVG that captures the image. For exact reproduction, use the VTracer node instead.
- Billed per job, and 8B costs more than 4B. For icon/logo work the 4B default is usually plenty.
- Low temperature first. If output is chaotic or repetitive, drop temperature (0.1–0.2) and raise repetition_penalty before blaming the image.
- The odd output names trip people up -
svg_audio/svg_videoare just the pack's generated naming for the media slot; the SVG content is what comes back in that slot /raw_json. - Your source image goes to Civitai's servers for the job. Standard API-node trade.
Inputs (10)
| Name | Type | Default | Description |
|---|---|---|---|
| image | IMAGE | Either A URL, A DataURL or a Base64 string | |
| modelopt | COMBO | omnisvg-4b | 2 options: omnisvg-4b, omnisvg-8b |
| max_lengthopt | INT | 1536256–2048 | — |
| seedopt | INT | 00–2147483647 | — |
| top_popt | FLOAT | 0.900–1 | — |
| top_kopt | INT | 501–1000 | — |
| temperatureopt | FLOAT | 0.300–1 | — |
| repetition_penaltyopt | FLOAT | 1.050–10 | — |
| promptopt | STRING | — | |
| api_configopt | CIVITAI_CONFIG | Optional Civitai Auth connection; defaults to CIVITAI_API_TOKEN or stored OAuth login. |
Outputs (4)
| Name | Type | Description |
|---|---|---|
| svg_audio | AUDIO | — |
| svg_video | VIDEO | — |
| workflow_id | STRING | — |
| raw_json | STRING | — |