OpenOutpainter Serving Checkpoint Switch
Route an outpaint job to the right checkpoint
- oop_request
- oop_request_if_true
- oop_request_if_false
- boolean
- selected_model
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_nameas a regex instead of an exact string. The tooltip shows the flags format:(?aiLmsux), so(?i)patternmakes it case-insensitive. - output_checkpoint_name_on_no_match (BOOLEAN) - when there's no match, keep emitting
selected_modelanyway (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.
Inputs (4)
| Name | Type | Default | Description |
|---|---|---|---|
| oop_request | OOP_REQUEST | — | |
| checkpoint_name | STRING | — | |
| use_regex | BOOLEAN | false | Use 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_match | BOOLEAN | true | Otherwise blocks execution on the model_name output. |
Outputs (4)
| Name | Type | Description |
|---|---|---|
| oop_request_if_true | OOP_REQUEST | — |
| oop_request_if_false | OOP_REQUEST | — |
| boolean | BOOLEAN | — |
| selected_model | STRING | — |