💾 SF Smart Saver
Persist the bus's current render as .fury + PNG — or flip it off and just preview
- fury_bus
Smart Saver is the pack's export node, and it's almost aggressively simple: it looks at what the bus is currently holding as its current_render - the most recent result from a FurySampler or Generative Fusion - and writes it to disk in two formats. A .fury technical file with the image tensor and the latent, plus a PNG preview, filed under the right project folder (Characters or Scenes, inferred from what was rendered).
The single save_action toggle is the whole interface. It's a boolean widget labeled 💾 SAVE on and 👀 PREVIEW ONLY off - which is the pack's little nod to how you actually work: iterate on a character, don't save anything, and only flip it to SAVE when you've got one worth keeping. Because the node is an output node that returns nothing, it can sit at the end of a chain without adding a wire you have to route around; it just does its thing when the graph runs.
Where the files go is the consistent bit you'll already recognize if you've used the Project Manager: ComfyUI/output/StudioFury/<project_name>/Characters/ or .../Scenes/, with the .fury and .png sharing the entity's name. The Asset Loader reads exactly this layout back. So the round trip is: generate → Smart Saver → reload later with Asset Loader and keep refining. That's the persistence loop the whole pack is built around.
The inputs:
- fury_bus (SF_LINK) - the bus holding
current_render. Wire it from FurySampler'sbus_resultor Generative Fusion'sbus. - save_action (BOOLEAN) - SAVE vs PREVIEW ONLY. That's it. No filename, no format choices, no path fiddling - everything is derived from the bus and the project name.
No outputs; it's a sink node.
Install
Part of StudioFury: ComfyUI Manager → ComfyUI-Studio-Fury → Install → restart, or:
cd ComfyUI/custom_nodes/
git clone https://github.com/FuryNocturn/ComfyUI-Studio-Fury
Dependencies are torch/Pillow/numpy/aiohttp - nothing extra.
Gotchas
The big one: this node only saves whatever the bus calls current_render - and only the FurySampler and Generative Fusion set that field. If you run Smart Saver after a Director Engine batch, nothing happens (the Director Engine already auto-saved its own outputs, so you're not losing anything - it just means this node is redundant in that path). If you wire it into a graph that never ran a sampler, it logs a "no active render" warning and returns an empty result; you'll see it in the console, not in the UI. So think of Smart Saver as the paired companion to the single-shot sampler: FurySampler renders, Smart Saver persists. It's the quiet cleanup node at the end of the pipeline, and once you accept that it saves exactly one thing - the bus's current render - it never surprises you again.
Inputs (2)
| Name | Type | Default | Description |
|---|---|---|---|
| fury_bus | SF_LINK | — | |
| save_action | BOOLEAN | true | — |
Outputs (0)
No outputs