Fork Asset From Version In GenAsset
Fork Asset From Version In GenAsset — a new asset, born from an old version
- image
- asset_id
- version_id
- status_json
Branching keeps you inside one asset's history. Forking gets you a new asset whose first version is a copy of something you already made. Fork Asset From Version In GenAsset is the node for when a direction deserves to become its own thing instead of a footnote in an existing asset's lineage.
Think of the difference this way: you've been iterating on a character portrait in one asset for weeks. Now you want to spin the whole thing into a different project - different prompt direction, different team, different asset name. A branch keeps it tied to the original asset; a fork gives it a fresh identity while preserving where it came from. For a team, forks are also how you hand an approved concept to a new owner without letting them touch the original's history.
How it works
You give it a source_version_id and a new_asset_name. The node fetches the source version, downloads its preview image, and - here's the neat part - rebuilds the recipe from the source: it takes the source's prompt (appending your prompt_suffix), its negative prompt (unless you override it with negative_prompt_override), its model name and seed, and its stored workflow_json. Then it uploads all of that as a brand-new generation with an empty asset_id, which creates a new asset whose first version is a faithful copy plus your suffix.
It also stamps a fork block into the metadata recording from_version_id and from_asset_id, so even as a standalone asset, its ancestry is never lost. It's the same api/v1/generations endpoint the other save nodes use, just pre-fed with a source's data.
Inputs and outputs that matter
The two that drive everything:
source_version_id- which version to fork from. Required, and the whole source of the copy.new_asset_name- the name of the new asset. Required, because a fork that doesn't become a named thing is just a clone.
Everything else is optional flavor: prompt_suffix (defaults to forked in comfyui - change it or your forked assets will say that forever), negative_prompt_override, tags_csv (defaults to forked), intent (defaults to fork), and extra_metadata_json (defaults to {"fork": true}).
Outputs: image (the forked preview, downloaded locally), asset_id, version_id, and status_json. Wire the new asset_id back into a save node later if you want to keep appending versions to the forked asset.
Installation
Same pack as all the others: ComfyUI Manager → search GenAsset → install, or
cd ComfyUI/custom_nodes
git clone https://github.com/steliosot/ComfyUI-GenAsset.git
restart, and set a workspace token (widget, GENASSET_WORKSPACE_TOKEN, or ComfyUI/user/genasset.json). No extra dependencies.
Common issues
- "Source version missing signed_preview_url." - the version's preview URL didn't come back, so the node can't grab the image to fork. Server-side blip or a bad base URL; retry.
- The forked prompt reads oddly - remember the node appends
prompt_suffixto the source prompt with a comma. If you set a suffix that isn't comma-friendly, the result reads awkwardly. Keep it short, like "v2 direction" or leave it empty. - You expected the new asset to have the same versions - nope. A fork is one version (the copy). The new asset starts with a single version; you build its history from there. That's the definition of a fork.
The mental model that clicks for most people: fork when the idea graduates, branch when it's still an experiment on the same asset. This node is the graduation ceremony.
Inputs (9)
| Name | Type | Default | Description |
|---|---|---|---|
| base_url | STRING | https://genasset.xyz | — |
| token | STRING | ComfyUI/user/genasset.json | — |
| source_version_id | STRING | Existing version id to fork from. | |
| new_asset_name | STRING | Forked Asset | — |
| prompt_suffix | STRING | forked in comfyui | — |
| negative_prompt_override | STRING | — | |
| tags_csv | STRING | forked | — |
| intent | STRING | fork | — |
| extra_metadata_json | STRING | { "fork": true } | — |
Outputs (4)
| Name | Type | Description |
|---|---|---|
| image | IMAGE | — |
| asset_id | STRING | — |
| version_id | STRING | — |
| status_json | STRING | — |