Nodes/ComfyUI Workspaces/Workspace Data
ComfyUI Node

Workspace Data

Reopen a whole project without re-picking anything

By wgedeon·Created 11 months ago·Updated 10 months ago· 0
Workspace Data
  • workspace
  • workspace
  • codename
  • model
  • clip
  • vae
  • width
  • height
◄codenamedefault►
◄codename_override—►
◄workspace_hash►

fot_WorkspaceReadOnly (display name "Workspace Data") is the read-only companion to the fot_Workspace node in comfyui_user_workspaces. Think of it as the "open project" node. fot_Workspace creates and updates a project; this one just reopens it. You drop it in a fresh graph, pick a codename, and it rebuilds the project's model, CLIP, VAE, and saved dimensions from disk - without you having to remember which checkpoint you used or what resolution you settled on last week.

The name matters: "Read Only." Unlike its sibling, it does not write or update workspace.json. It only reads. That's the whole design, and it's what makes it safe to drop anywhere.

How it works

Two paths in, same result out.

If you feed it a WORKSPACE object (from fot_Workspace or fot_Folder), it just unpacks that object - model, clip, vae, width, height, codename - and passes them through. The node becomes a tidy way to fan the bundle out onto separate wires.

If you don't feed it anything, it goes to disk: it loads ComfyUI/output/workspaces/<codename>/workspace.json, reads the stored ckpt_name, and loads that checkpoint via ComfyUI's normal checkpoint loader to hand you model, clip, and vae. The width and height come straight from the JSON. So the second path is the useful one - it's literally "reopen project X with the setup I saved."

The frontend behavior is shared with the rest of the pack: the codename dropdown is populated live from the workspace folders on disk, and the workspace_hash widget gets filled in by the UI so the node's inputs are recognized as changed when the underlying project data changes.

The inputs and outputs

Everything here is optional, which is why the node works in both modes:

  • workspace (optional, WORKSPACE) - connect this to use an in-graph workspace instead of reading from disk.
  • codename (dropdown, default "default") - which project to reopen. If you've never created a workspace, you'll get the default one.
  • codename_override (optional STRING) - wire in a codename instead of using the dropdown. Same niche trick as on fot_Workspace.
  • workspace_hash (optional STRING) - mostly a UI bookkeeping field; the frontend writes a hash of the current workspace.json into it so the graph re-runs when the project changes.

Outputs: workspace (the object), codename, then model, clip, vae, width, height. No full_path here - if you need a save path, chain the workspace output into fot_Folder.

Installing it

The pack-wide install applies - Manager's method is still TODO and the pack's underscore-prefixed name blocks registry publishing, so clone it:

cd ComfyUI/custom_nodes
git clone https://github.com/wgedeon/comfyui_user_workspaces

Restart ComfyUI. Only dependency is the python_path pip package. No model downloads.

Where people get burned

The big one: this node loads whatever checkpoint is stored in workspace.json. If you've since deleted or renamed that checkpoint, the load fails with an error - there's no graceful fallback to "just ask me." The fix is to re-run the fot_Workspace node once to refresh the project, or edit the JSON.

Also remember it's "read only" about the JSON, not about your VRAM. Every queue it re-executes the checkpoint load (it's an output node, so it never gets skipped), and like fot_Workspace it's a per-run cost on big checkpoints. It's the one node of the four that truly shines as a project-reopening shortcut; the rest of the time the stock loader is fine. Given how young and small this pack is, that's still a genuinely useful trick to have.

CategoryFeller of Trees/Workspaces

Inputs (4)

NameTypeDefaultDescription
workspaceoptWORKSPACE—
codenameoptCOMBOdefault1 options: default
codename_overrideoptSTRING—
workspace_hashoptSTRING—

Outputs (7)

NameTypeDescription
workspaceWORKSPACE—
codenameSTRING—
modelMODEL—
clipCLIP—
vaeVAE—
widthINT—
heightINT—