Nodes/OpenOutpaint ComfyUI Interface/OpenOutpainter Serving Checkpoint Switch
ComfyUI Node

OpenOutpainter Serving Checkpoint Switch

Route an outpaint job to the right checkpoint

By without-ordinary·Created about a year ago·Updated 9 months ago· 5
OpenOutpainter Serving Checkpoint Switch
  • oop_request
  • oop_request_if_true
  • oop_request_if_false
  • boolean
  • selected_model
checkpoint_name
use_regexfalse
output_checkpoint_name_on_no_matchtrue

The Checkpoints List node fills openOutpaint's dropdown with model names, but it never loads a thing. This is the node that turns a dropdown selection into an actual graph decision: it reads which checkpoint the canvas user picked, compares it to what you're looking for, and passes the request down one of two branches.

It's a conditional router in the same spirit as a classic boolean-switch node, except the input it tests isn't a number or a flag - it's the checkpoint field inside the incoming request.

  • oop_request - the request, threaded from the Serving node.
  • checkpoint_name (STRING) - the name to match against the user's selection.
  • use_regex (BOOLEAN) - treat checkpoint_name as a regex instead of an exact string. The tooltip shows the flags format: (?aiLmsux), so (?i)pattern makes it case-insensitive.
  • output_checkpoint_name_on_no_match (BOOLEAN) - when there's no match, keep emitting selected_model anyway (default true) or block it.

Outputs: oop_request_if_true and oop_request_if_false (the same request routed down whichever branch matched), boolean (the match result), and selected_model (STRING, the checkpoint name that was actually in the request).

How it works

Under the hood it's a one-liner - checkpoint_name == selected_checkpoint - or a re.search if use_regex is on, with a bad regex failing safe to "no match." On a match, oop_request_if_true carries the request forward and the false branch gets an ExecutionBlocker, so the unselected branch of your graph simply doesn't run. That's the routing mechanism: build one loader branch per checkpoint, wire each branch to one of the two request outputs, and only the matching branch's CheckpointLoaderSimple ever executes.

Worth knowing: the selected_model output always reflects what the request actually contained, not your checkpoint_name pattern. So you can match loosely (regex, case-insensitive) while still seeing the user's exact pick - handy if you want to display it or feed it into a filename.

Install and the real-world snags

Pack install is the family standard: ComfyUI Manager (search "OpenOutpaint ComfyUI Interface") or git clone https://github.com/without-ordinary/openoutpaint_comfyui_interface into ComfyUI/custom_nodes, restart. opencv-python is the only dependency of note; no model downloads.

The snag people hit first: they define a checkpoint in the Checkpoints List node, but the request's checkpoint field comes through empty or differently-named, and nothing ever matches. Remember the canvas dropdown only contains what the List node fed it - keep those names in lockstep, or lean on (?i) regex so casing doesn't bite you. And as with everything in this pack, one serving workflow at a time; a second Serving node competing for requests is unsupported and will make your routing look broken when it's really the architecture.

CategoryOpenOutpaint-Serving

Inputs (4)

NameTypeDefaultDescription
oop_requestOOP_REQUEST
checkpoint_nameSTRING
use_regexBOOLEANfalseUse model_name input as regex pattern instead of exact string match. Use (?aiLmsux) format for flags, eg. (?i)pattern for ignore case.
output_checkpoint_name_on_no_matchBOOLEANtrueOtherwise blocks execution on the model_name output.

Outputs (4)

NameTypeDescription
oop_request_if_trueOOP_REQUEST
oop_request_if_falseOOP_REQUEST
booleanBOOLEAN
selected_modelSTRING