Workflow Manager
Save, version, and search your workflows without leaving the graph
- result
Honest pitch first: Yeban Workflow Manager is a workflow-organizing extension, and the WorkflowManager node is not the part you'll mostly use. The star is the sidebar - groups and subgroups, drag-and-drop, auto-save on a timer, version history you can roll back to, thumbnails, tags, stars, and a layered backup system. Install the pack and all of that lives in the ComfyUI left rail, no wiring required.
The node is the programmatic half: a single JSON-in, JSON-out action dispatcher that talks to the same storage engine as the sidebar. You reach for it when you want to script workflow management from inside a graph instead of clicking around - save the current canvas into the library, load one back, list everything, search, manage groups, toggle a star, snapshot a version, or force a backup. The output comes back as a JSON string.
How it works
Under the hood the pack keeps a singleton WorkflowManager that reads config.json from the plugin directory, resolves a data directory (default ComfyUI/yeban-workflows/), and hands everything to a file handler. Every action in the node is just a call into that handler: save, load, delete, list, search, create_group, delete_group, rename_group, rename, move, copy, backup, toggle_star, update_tags, save_version, list_versions - sixteen actions on one enum. It's the same engine the sidebar uses, so anything you script in the node shows up in the sidebar and vice versa.
The one output, result, is always a JSON string, never a nicely typed object. That means you'll be feeding it into a Parse JSON node or a text viewer if you want to do anything with it downstream. There's also no "load straight into the canvas" action - load returns the workflow data as JSON and getting it into the graph is on you.
The inputs that matter
One required input: action, the enum above. Everything else is optional context depending on which action you picked:
workflow_id- the identifier used by load/delete/rename/move/copy/backup/version actions. You get real IDs from alistcall.workflow_name- what to name a workflow you're saving (or the group name forcreate_group).workflow_data- a STRING containing the workflow JSON forsave. Default is{}, so an empty save is legal.query- free text forsearch.tagsis a comma-separated list forupdate_tags.
Install
The pack's main face is the sidebar, so this is a one-click Manager job:
# ComfyUI Manager → Custom Nodes Manager → search "yeban-workflow-manager" → Install → restart
# or, from a terminal:
cd ComfyUI/custom_nodes
git clone https://github.com/wsq194/yeban-workflow-manager.git
# then restart ComfyUI
Good news on dependencies: the requirements file is literally "no additional dependencies required, Python 3.10+ only." No model downloads, no pip resolution roulette - a genuinely rare thing in this ecosystem, where the norm is dependency conflicts the moment you add a second pack. You do need ComfyUI 0.19.0+.
Gotchas worth knowing
- Your library lives in
ComfyUI/yeban-workflows/, not insidecustom_nodes. Back that directory up - it's the whole point of the pack. - The README's default language is Chinese. Flip to English from the panel header; the choice sticks in browser localStorage, not in the config.
- The v0.2.7 changelog mentions metadata-index weirdness after ComfyUI Manager updates. The pack self-heals: if
metadata.jsongoes missing it rebuilds the index from the workflow files and version snapshots on disk. - If you somehow end up with duplicate name+group entries, saves pick the newest modified workflow, so you can't accidentally overwrite the wrong one.
- Tuning lives in
config.jsonin the plugin folder:auto_save_interval(seconds),max_versions,max_auto_backups, and toggles for the backup layers.
This is a small, young, MIT-licensed pack from a one-person author who ships a bilingual README and credits comfyui-workspace-manager as inspiration. It's a lightweight bet compared to the heavyweight utility suites. If the stock workflow organizer leaves you reaching for more, this is worth a shot. And if you only ever wanted to stop losing work, install it for the sidebar and let this node sit quietly - it'll be there the day you decide to automate.
Inputs (9)
| Name | Type | Default | Description |
|---|---|---|---|
| action | COMBO | 16 options: save, load, delete, list, search, create_group, +10 | |
| workflow_idopt | STRING | — | |
| workflow_nameopt | STRING | — | |
| group_idopt | STRING | — | |
| workflow_dataopt | STRING | {} | — |
| new_nameopt | STRING | — | |
| target_groupopt | STRING | — | |
| queryopt | STRING | — | |
| tagsopt | STRING | — |
Outputs (1)
| Name | Type | Description |
|---|---|---|
| result | STRING | — |