ComfyUI Node

Sloyd: Save Asset

Save Asset — put the GLB where you actually want it

By Sloydai·Created 22 days ago·Updated 21 days ago· 1
Sloyd: Save Asset
  • sloyd_job
  • saved_path
◄filename_prefixsloyd/model►

Every Sloyd generation node already writes its result to ComfyUI/output/sloyd/ with the job id as the filename. That's fine until you've made forty of them and can't tell 9f2c…-a41.glb from b70e…-8c2.glb. Sloyd: Save Asset is the one optional extra in the pack: it copies a generated asset to a filename you choose, with a counter appended when the name is taken.

It's a two-widget node, it does one thing, and it's the difference between a folder of hashes and a folder of assets.

How it works

It's not a downloader - the file is already on disk by the time this node runs. It takes the SLOYD_JOB handle from any upstream Sloyd node, reads the absolute path of the file that job produced, and copies it (extension and all) to <ComfyUI/output>/<filename_prefix><ext>. Directories in the prefix are created for you, so props/crates/wooden_crate lands in a folder tree, not flat in output/.

Two details from the source worth knowing:

  • The extension comes from the source file. A GLB stays .glb, a skybox panorama keeps .png/.jpg/.webp, a 2D result keeps its image extension. There's no format conversion happening here.
  • Collisions are handled, not overwritten. If the target name exists, it appends a counter: wooden_crate_00001.glb. So running the same graph twice never destroys the first result - and never silently replaces it either. That also means a batch of ten gives you ten files, not one.

Unsafe characters in the prefix are sanitised to underscores, and the leading/trailing slashes and spaces are trimmed, so a sloppy prefix won't escape the output directory.

Inputs

  • sloyd_job - required, and it's a SLOYD_JOB, not an IMAGE. Wire it from Text to 3D, Image to 3D, Multi-Image to 3D, Retexture, Split to Parts, or any of the skybox/2D nodes. There's no job_id string alternative on this node (unlike the model tools), so it has to be a live wire.
  • filename_prefix - defaults to sloyd/model. Name it relative to ComfyUI/output and leave the extension off; the node supplies it. game/props/lantern_brass is the right shape.

Output

Just saved_path - a STRING, the new file's path relative to ComfyUI/output. Feed it to a text node if you want to see it on the canvas, or ignore it entirely and let the copy happen. This node is marked as an output node, so ComfyUI always executes it, which is what you want: it doesn't get optimised away when nothing downstream consumes it.

Install

ComfyUI Manager → search Sloyd, or:

cd ComfyUI/custom_nodes
git clone https://github.com/Sloydai/comfyui-sloyd
pip install -r comfyui-sloyd/requirements.txt

requests and nothing else, no weights, no GPU. Credentials go in Settings → Sloyd (Client ID + Client Secret from api-dashboard.sloyd.ai) or in SLOYD_CLIENT_ID / SLOYD_CLIENT_SECRET env vars. The node itself costs nothing - the generation behind it is what's billed.

Two limitations to plan around

It only works off a Sloyd handle, so it can't rescue a file from an old session where you've lost the graph - for that, just copy the file out of output/sloyd/ by hand. And it copies rather than moves, so you'll accumulate duplicates: the original under sloyd/ stays put. If you want to keep the output dir tidy, that's on you, and there's no delete node here.

CategorySloyd/Utility

Inputs (2)

NameTypeDefaultDescription
sloyd_jobSLOYD_JOB—
filename_prefixSTRINGsloyd/modelOutput name relative to ComfyUI/output, without an extension. A counter is appended when the name already exists.

Outputs (1)

NameTypeDescription
saved_pathSTRING—