ComfyUI Node

Workspace

This node finally turns your ComfyUI output folder into actual projects

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

    Every ComfyUI regular knows the feeling: three months of generations in one output/ folder, a thousand PNGs with names like ComfyUI_00012_. Then you go looking for Tuesday's portrait and you might as well be spelunking. The fot_Workspace node from comfyui_user_workspaces is a small, honest attempt to fix that - it makes "the project I'm working on" a first-class thing in the graph, instead of a naming convention you have to remember.

    It's not a well-known pack. Four nodes, zero Google impressions, nobody on Reddit talking about it. If you found it, you're probably exploring ComfyUI Manager or rescuing a workflow that references it. So here's the straight story: it works, it's light, and for people who juggle multiple jobs or character sets it genuinely reduces the chaos. For everyone else, the built-in Load Checkpoint plus a filename prefix is fine.

    What it actually does

    fot_Workspace is a project-aware checkpoint loader, plus a little state that rides along one wire. You give it a codename (your project), a checkpoint, and a width/height. It does two things:

    1. It loads the checkpoint the normal way and hands you model, clip, and vae - same as the stock Load Checkpoint node.
    2. It creates a folder at ComfyUI/output/workspaces/<codename>/, writes a workspace.json inside it with your width, height, and checkpoint name, and passes that whole bundle out as a single WORKSPACE object.

    That WORKSPACE object is the clever part. It's the same "context bus" pattern you'll see in rgthree's Context and Efficiency Nodes' pipes: a dozen values traveling down one wire instead of forty. Here the bundle carries your project's codename, its output path, dimensions, and (in the model outputs) the actual loaded weights. Downstream nodes in this pack - fot_Folder and fot_WorkspaceReadOnly - know how to unpack it.

    The frontend is doing real work too. The codename dropdown is populated live by a small API the pack registers (/comfyui_user_workspaces/get_workspaces), and it auto-refreshes your width/height widgets from the last saved workspace.json. Pick "portraits" and the node remembers this project was 832×1216 last time.

    The inputs that matter

    • codename - your project name; a dropdown of folders that already exist under output/workspaces/. There's always a default.
    • ckpt_name - the checkpoint to load, straight from your models/checkpoints folder. Tooltip from the author: "The name of the checkpoint (model) to load."
    • width / height - saved into workspace.json and echoed out. Defaults are 640×480, so set them to something real.
    • codename_override (optional) - lets another node force a codename wire-in instead of the dropdown. Niche; you can ignore it.

    The outputs and where they go

    It returns eight values, but you'll use three of them. model, clip, vae feed your KSampler exactly like any other loader. full_path (a STRING) plugs straight into a save node's filename - or better, hand the workspace object to fot_Folder and let that build the path. width and height are handy for driving a Latent or Empty Latent Image without re-typing. The workspace object itself is what you wire into the Folder and Workspace Data nodes.

    Installing it

    The README's Manager instructions are still marked "TODO", and the author notes the pack can't be published to the ComfyUI registry because its internal name starts with an underscore. So the reliable path is a manual clone:

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

    Then restart ComfyUI. If you cloned manually without ComfyUI Manager, install its one dependency (python_path) - that's the entire requirements list. No models, no CUDA wheels, nothing heavy. Note the README still references the older underscore-prefixed repo name (_comfyui_user_workspaces); both URLs resolve, but use the current name above.

    Where people get burned

    A couple of honest warnings. First, fot_Workspace is an output node, which means it re-runs on every queue - it never skips like a cached loader would. You pay a checkpoint load per generation, and it rewrites workspace.json every run. On a big SDXL or Flux checkpoint that's real time. Second, if the checkpoint named in a saved workspace no longer exists in your checkpoints folder, the load fails loudly. Third, this is a young pack - the last commit is literally titled "debugging registration" - so treat it as a useful experiment, not infrastructure. It works, but there's not much of a community behind it if something breaks.

    CategoryFeller of Trees/Workspaces

    Inputs (6)

    NameTypeDefaultDescription
    codenameCOMBOdefault1 options: default
    ckpt_nameCOMBOThe name of the checkpoint (model) to load.
    widthINT640—
    heightINT480—
    codename_overrideoptSTRING—
    workspace_hashoptSTRING—

    Outputs (8)

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