Tile Job Director: Exact Local Tiles
The node that cuts the exact tiles and hands each one its context
- upscaled_tiles
- prompt_system
- tile_images
- tile_instructions
- tile_references
- tile_seeds
- caption_images
The Tile Planner makes the plan; the Tile Job Director executes it. This node takes the enlarged tile batch plus the whole-image context from SmartCachedTextGenerate, cuts the exact local tiles, and assembles every per-tile job - the tile image, its instruction, its reference ID, and its seed. Think of it as the foreman between "here's the picture and the plan" and "here's a queue of ninety self-contained tile jobs."
What it does
It matches each planned tile with the prompt contract from the Prompt Director (prompt_system) and the scene brief (global_context), then emits the complete job sets that the rest of the pipeline consumes. It also has a selection_mode that switches the whole pack between one tile and all tiles - the mechanism behind the one-tile test that the README pushes as the fastest way to iterate.
The seeds it hands out are worth a moment. base_seed plus seed_mode decides how every tile gets a reproducible seed:
- increment - each tile steps the base seed by one.
- fixed - every tile uses the same seed (good for debugging, bad for identical tiles).
- hashed - a stable hash of the tile reference, so a tile keeps its seed across reruns even if the order changes.
Same seed for a tile = same result, which is why the pack's caching story works: change the scale and rerun, and the tiles you didn't want to move come out the same.
Inputs that matter
Mostly wired for you:
- upscaled_tiles, tile_metadata_json - from the Tile Planner.
global_context- the scene brief fromSmartCachedTextGenerate. prompt_system - the contract from the Prompt Director. - selection_mode -
single_tileorall_tiles. The README's advice is to review withsingle_tilebefore switching toall_tiles. - tile_number - the human tile number (T001…), used in single-tile mode to pick which one.
- base_seed and seed_mode - described above.
Outputs, all lists in the same order so the downstream nodes can zip them together: tile_images, tile_instructions, tile_references, tile_seeds, and caption_images (the bare local crops the captioner should actually look at - unpadded, no diagnostics painted on them, per the pack's honesty contract that literal models would otherwise reproduce the overlay in the output).
Where it sits
tile_images + tile_instructions feed the per-tile prompt generator (SmartCachedTilePromptGenerator), and the four sampler-facing sets flow into SmartSamplerTileSelector, which decides what actually reaches the sampler. Because the Job Director only ever exchanges standard IMAGE and STRING values, the generator block is externally replaceable - the pack's promise is that anything taking a picture and a prompt and returning a picture can sit in that slot.
Install
Same pack install as every node here - ComfyUI Manager (search "ComfyUI-Smart-Upscaler") or:
cd ComfyUI/custom_nodes
git clone https://github.com/HallettVisual/ComfyUI-Smart-Upscaler
then restart, plus ComfyUI-KJNodes and rgthree-comfy for the shipped workflow. No Python deps; models in docs/MODELS.md total ~13 GB (the captioner and the Z-Image Turbo stack are the load-bearing ones).
Gotchas
- Seeds and reproducibility. If a tile keeps changing between runs, check
seed_mode-hashedis the one that pins a tile's seed to its reference across reruns. - single_tile leaves the rest blank. That's expected; the finalizer fills unrendered positions from the enlarged baseline so you can see the whole picture. Switch back to
all_tilesfor the real run. - Confusing tile IDs. References display as T001, T002…; the inspector and the sampler selector both use the same numbering, so a bad tile's number in the log is the same number you type into
tile_number. That consistency is the pack's whole debugging story.
Inputs (8)
| Name | Type | Default | Description |
|---|---|---|---|
| upscaled_tiles | IMAGE | — | |
| tile_metadata_json | STRING | — | |
| global_context | STRING | — | |
| prompt_system | SMART_PROMPT_SYSTEM | — | |
| selection_mode | COMBO | single_tile | 2 options: single_tile, all_tiles |
| tile_number | INT | 11–4096 | — |
| base_seed | INT | 00–18446744073709550000 | — |
| seed_mode | COMBO | increment | 3 options: increment, fixed, hashed |
Outputs (5)
| Name | Type | Description |
|---|---|---|
| tile_images | IMAGE | — |
| tile_instructions | STRING | — |
| tile_references | STRING | — |
| tile_seeds | INT | — |
| caption_images | IMAGE | — |