Test GenAsset Connection
The GenAsset node you run first (it makes no images)
- workspace_name
- status_json
- summary
- state
- normalized_status_json
Test GenAsset Connection is the front door of the whole pack. Before you save anything, before you wire up a workflow, this one node tells you the boring but critical truth: can ComfyUI actually reach GenAsset, and does your token work? Everything else in the pack is a wasted click until that's green.
The pack is the ComfyUI side of GenAsset, a cloud workspace that versions your image generations - the author's own framing is "git, but for workflows." Every save keeps the image together with its recipe (prompt, model, seed, sampler, workflow JSON, repro-lock metadata), so teams and agents can reload, compare, and branch it later. But git doesn't work before you authenticate, and neither does this.
How it works
It's not a magic health check. Under the hood the node sends a GET to api/v1/workspace with your token as a Bearer header, and the server answers with your workspace's name, id, and slug. No image is generated, no file is uploaded - this is the "am I holding it right" step.
The thing people trip over is the token field. Its default value isn't a token at all - it's the path ComfyUI/user/genasset.json, which is the node telling you where to put your token. The resolution order is:
- If you paste an actual token into the
tokenwidget, that wins. - Otherwise the
GENASSET_WORKSPACE_TOKENenvironment variable. - Otherwise the
ComfyUI/user/genasset.jsonfile, which should look like:
{
"base_url": "https://genasset.xyz",
"workspace_token": "PASTE_TOKEN"
}
A literal PASTE_TOKEN is treated as "nothing set," so the node will error until you replace it with a real workspace token from genasset.xyz (Settings → Tokens).
Inputs and outputs that matter
Only two inputs: base_url (defaults to https://genasset.xyz) and token. A beginner sets exactly those and nothing else.
The outputs are verbose on purpose:
workspace_name- the human-readable name of your workspace. Wire this into a display node if you want proof it worked.state- just"success"or"error", the quickest thing to branch on.summary- a one-line human message like "SUCCESS: Connected to workspace 'your-workspace'."status_json/normalized_status_json- the full JSON blob with workspace details andtoken_source(whether the token came from the widget, the env var, or the file). That last bit is genuinely useful for debugging later.
Installation
This is one node in the steliosot/ComfyUI-GenAsset pack, so installing the pack installs it. In ComfyUI Manager, search GenAsset and hit install, or:
cd ComfyUI/custom_nodes
git clone https://github.com/steliosot/ComfyUI-GenAsset.git
Restart ComfyUI either way. There are no extra pip dependencies - the pack leans on torch, numpy, and Pillow that ComfyUI already ships. The node lives in the genasset category on the canvas.
Common issues
- "Paste your GenAsset token into token..." - you haven't set a real token anywhere in the three-step chain above. Create one at genasset.xyz and put it in the widget or the
genasset.jsonfile. - Connection errors with a bad
base_url- you're almost certainly leaving the default alone (correct) or pasting a trailing-slash URL that confuses the join. Keep it ashttps://genasset.xyz. - It says success but saves fail later - the token is fine but the workspace or asset-level permissions aren't. Check that the token is workspace-scoped, and note that the README explicitly says to rotate tokens periodically.
One caution worth keeping in mind from the API-node playbook: this is a node whose whole job is to hold a credential and phone home with it. That's normal for the pack, but it's exactly why you should never commit a workflow file containing a pasted token, and why the pack redacts token-like fields from the workflow JSON it saves.
Inputs (2)
| Name | Type | Default | Description |
|---|---|---|---|
| base_url | STRING | https://genasset.xyz | — |
| token | STRING | ComfyUI/user/genasset.json | — |
Outputs (5)
| Name | Type | Description |
|---|---|---|
| workspace_name | STRING | — |
| status_json | STRING | — |
| summary | STRING | — |
| state | STRING | — |
| normalized_status_json | STRING | — |