Nodes/Comfyui-JSON-Manager/Project Resolution
ComfyUI Node

Project Resolution

Drive Multi-Resolution Passes From One JSON List

By ethanfel·Created 8 months ago·Updated 5 months ago· 3
Project Resolution
    • width
    • height
    • seed
    source_label
    key_nameresolutions
    index0
    manager_urlhttp://localhost:8080
    project_name
    file_name
    sequence_number1

    ProjectResolution is the node that turns a list of resolution choices in your JSON into concrete width, height, and seed outputs for a generation pass. If you've ever set up a workflow that renders a low-res preview first and a full-res final later, this is the piece that stops you from hardcoding dimensions in five different places.

    Why you'd reach for it

    In the Comfyui-JSON-Manager world, each sequence in your project file can carry its own resolutions list - an array of [width, height] or [width, height, seed] entries. ProjectResolution picks one entry by index and hands you the parts. Drive that index from a loop or an iterator and one workflow serves a whole shot list: preview pass at 512, final pass at 1280, each with its own seed, all driven by data instead of hardcoded widget values. That's the workflow pattern that made ComfyUI the standard for video work - data driving the graph rather than the graph being re-edited per shot.

    How it works

    It's a small client to the manager, same as the other project nodes. It fetches the sequence data from GET /api/projects/{project}/files/{file}/data?seq={sequence}, reads the list at key_name (default "resolutions"), clamps your index into the list's bounds, and unpacks the entry: entry[0] becomes width, entry[1] becomes height, and entry[2] (if present) becomes seed. Like ProjectKey, it's marked to re-fetch every run, so updating the JSON in the dashboard flows through immediately.

    Two details from the source are worth knowing. The index is clamped, not error-checked - ask for index 5 on a 2-item list and you silently get the last entry, not an error. And if anything goes wrong (key missing, list malformed, manager unreachable) it falls back to 512, 512, 0. Useful for keeping a workflow alive, potentially infuriating when you're trying to figure out why everything is 512.

    Inputs and outputs

    • source_label - ties the node to its ProjectSource (settings sync over automatically when connected).
    • key_name - the JSON key holding the resolution series. Defaults to "resolutions".
    • index - which entry to use; wire this to a loop counter for multi-pass work.

    Outputs are three INTs: width, height, and seed - straight into an Empty Latent Image (or your video model's resolution inputs) and the sampler's seed.

    How to install

    Part of Comfyui-JSON-Manager:

    cd ComfyUI/custom_nodes/
    git clone https://github.com/ethanfel/Comfyui-JSON-Manager ComfyUI-JSON-Manager
    

    Restart ComfyUI, or find "ComfyUI JSON Manager" in ComfyUI Manager. No model downloads, no node-side dependency install - the ComfyUI nodes only need Python's standard library plus the aiohttp that ships with ComfyUI. The heavy deps (nicegui, graphviz, requests) belong to the separate web manager, which this node requires to be running.

    Common issues

    The trap is the silent 512×512×0 fallback. It triggers in three scenarios: the manager is unreachable, key_name doesn't exist in the sequence, or the entry at your index isn't a [w, h]-style list. The failure mode is invisible - your workflow runs fine, just at the wrong resolution. If your outputs are suspiciously always 512, check that the key name matches the JSON exactly and that the value is a list of lists, not a single resolution.

    Second, remember the index clamps. If your loop goes one past the end of the list, you get the last entry again, not a stop. That's usually fine for a final pass but it means your "preview only" iteration might silently re-render the final. Plan the loop bounds in the data.

    CategoryJSON Manager/project

    Inputs (7)

    NameTypeDefaultDescription
    source_labelSTRING
    key_nameSTRINGresolutions
    indexINT00–9999
    manager_urloptSTRINGhttp://localhost:8080
    project_nameoptSTRING
    file_nameoptSTRING
    sequence_numberoptINT11–9999

    Outputs (3)

    NameTypeDescription
    widthINT
    heightINT
    seedINT