# ComfyUI-KJNodes: What the Node Pack Actually Adds, and Where It Gets Thin

> KJNodes is a grab-bag of ComfyUI utility nodes whose documentation lives in tooltips, not in the README. The Set/Get rewrite is the part with real substance; the rest is a mixed bag you install and inspect node by node.

**kijai/ComfyUI-KJNodes** — Various custom nodes for ComfyUI

- Repository: https://github.com/kijai/ComfyUI-KJNodes
- Stars: 3,343 · Forks: 358
- Language: Python
- License: GPL-3.0
- Published: 2026-09-24 · Updated: 2026-09-24 · Language: en
- Canonical page: https://hysenlabs.com/projects/kijai-comfyui-kjnodes

## The Problem KJNodes Solves Is Graph Clutter, Not Missing Capability

ComfyUI graphs get messy. Long links cross the canvas, reroutes multiply, and a value produced once at the top of a workflow has to be dragged to three places at the bottom. KJNodes exists to reduce that friction. The README describes it as a "pretty random collection of utility, model optimization and QoL nodes, while keeping dependencies at minimum." That self-description is accurate and worth taking at face value: this is not a coherent framework with a single purpose. It is a pack that grew by accretion.

The audience is people who already run ComfyUI and have hit the point where graph maintenance costs more than the generation itself. The Set/Get node pair is the clearest example. Instead of drawing a link across the canvas, you place a Set node at the producer and a Get node at each consumer. The connection becomes a name rather than a line. Everything else in the pack, from image resizing to color matching, is a separate utility that happens to ship in the same repository.

That bundling is a trade-off. You get one install for many small tools. You also get a pack where the README cannot describe every node, which the project acknowledges directly.

## How Set/Get Works After the March 19th 2026 Rewrite

The README calls the March 19th 2026 Set/Get release a "complete (backwards compatible as far as I'm aware currently) rewrite." The hedge in that sentence is the author's own, and it is the right thing to flag: backwards compatibility is asserted, not guaranteed.

The mechanism is name-based indirection. A Set node stores a value under a name; a Get node retrieves it. The rewrite adds subgraph awareness. According to the changelog, a Set in a parent graph is visible to all child subgraphs, and Get nodes search upward through ancestors, with cross-graph connections resolved during prompt execution. That is a genuine architectural change, not a cosmetic one, because it means the lookup is no longer scoped to a single graph.

Type handling has a fallback path worth knowing about. If a Set node's input is unconnected but its output feeds a typed input, the Set adopts that type and recolors. This is inference, not declaration, so a graph that relies on it will change color and type when you rewire the downstream end.

Naming has its own rules. The changelog states that validateName no longer strips intentional `_N` suffixes from user-typed names and only strips during paste, to avoid `FOO_0_1_2` accumulation. If you name nodes with numeric suffixes deliberately, that fix is the reason they survive now.

## Installing ComfyUI-KJNodes and Wiring Your First Set/Get Pair

The README gives two install paths. The first is the standard one: clone the repository into the `custom_nodes` folder of your ComfyUI install, then install dependencies.

```bash
pip install -r requirements.txt
```

The README notes that the portable Windows build needs a different invocation, run from the `ComfyUI_windows_portable` folder, so that pip targets the bundled interpreter rather than a system Python.

```bash
python_embeded\python.exe -m pip install -r ComfyUI\custom_nodes\ComfyUI-KJNodes\requirements.txt
```

The declared dependencies are short. requirements.txt lists `pillow>=10.3.0`, `color-matcher`, `matplotlib`, `mss` and `opencv-python-headless`. Note that pyproject.toml declares only three of those (`pillow>=10.3.0`, `color-matcher`, `matplotlib`), so the two files disagree. If you install through the Comfy Registry path rather than requirements.txt, you may end up without `mss` or `opencv-python-headless`.

For a first real use, the README documents the manual route: right-click any link midpoint to convert it into a Set/Get pair. The keyboard shortcuts are listed as Ctrl+Shift+S to add a Set to the selection or at the cursor, Ctrl+Shift+G to add a Get at the cursor, and Ctrl+Shift+L to force-show all connections. Shift+middle-click on an output slot creates a connected SetNode; on an input slot it creates a connected GetNode. Double-clicking a GetNode centers and selects its paired SetNode, which is the fastest way to confirm the pairing survived a paste.

## Documentation Lives in Tooltips, and That Is a Real Cost

The README states plainly that "Documentation is mostly in the node descriptions and tooltips." There is no per-node reference in the README, and no retrieved release notes to fall back on. The repository does contain a `docs/` directory and `example_workflows/`, so some material exists beyond the tooltips, but the README does not describe what is in either.

For a pack this size, that is a meaningful limitation. You cannot evaluate whether a given node does what you need without loading ComfyUI and hovering over it. There is no way to check, from the repository alone, what a node named in a search result actually does. The README does not document rollback for the Set/Get rewrite either, so if the backwards-compatibility hedge turns out to be wrong for your graph, the README gives you no stated path back.

The dependency split between requirements.txt and pyproject.toml compounds this. Two files in the same repository declare different dependency sets, and neither the README nor the changelog explains which is authoritative for which install method.

## When KJNodes Is the Wrong Tool

If your ComfyUI graphs are small, the Set/Get indirection adds a layer you do not need. A direct link is visible on the canvas; a Set/Get pair is visible only when you enable link drawing, and the README describes a combo setting with never, selected and always modes precisely because the links are hidden by default. Debugging a value that flows through a name instead of a line is harder, not easier, until the graph is large enough that the lines were the problem.

If you need a stable, documented API surface, this is the wrong pack. The README does not commit to node stability, and the Set/Get rewrite itself is evidence that nodes can change substantially between versions. Anything you build that depends on specific node behavior should be pinned.

The pack is also the wrong choice if you want a focused tool. It bundles image utilities, model optimization nodes and graph ergonomics into one install. You cannot take only the parts you want without reading through the rest.

## Alternatives and the Difference in Approach

The honest alternative is ComfyUI's built-in reroute nodes. A reroute does not name a value; it extends a link. The difference matters at scale. Reroutes keep the data flow visible as a continuous line, which is easier to trace but harder to reorganize, because moving a producer means redrawing every reroute downstream. Set/Get trades visibility for decoupling: the producer and consumer no longer need to be near each other or connected by a path. If your graph is wide rather than deep, reroutes are usually the simpler answer.

A second comparison point is ComfyUI-VideoHelperSuite, which appears in the related searches alongside KJNodes. It is a different kind of pack: video-focused rather than general utility. The two are not substitutes. If your problem is video loading and frame handling, KJNodes is not the tool for it, and the README makes no claim otherwise.

The related searches also surface ComfyUI-KJNodes alongside SageAttention, but the README and the dependency files make no mention of SageAttention at all. Do not assume the pack installs or configures it. Nothing in the repository supports that.

## Licence and Upgrade Cost

The repository is GPL-3.0, declared in pyproject.toml as `license = {file = "LICENSE"}` and confirmed by the LICENSE file at the repository root. GPL-3.0 is a copyleft licence. If you distribute a modified version of this pack, or distribute a larger work that incorporates it, the licence's terms apply to that distribution. That is a statement about what the licence says, not legal advice; if you ship anything built on this, read the LICENSE file and get your own counsel.

Upgrade cost is the more practical concern. The version in pyproject.toml is 1.5.2. The Set/Get rewrite landed with a changelog entry dated March 19th 2026, and the last push to the repository was on 2026-09-13, so the pack has seen changes since. The README does not describe a deprecation policy or a migration guide for node behavior changes. The changelog for the Set/Get rewrite lists fixes for paste rename coordination, type and color reset on disconnect, and suffix stripping, all of which are behavioral details that could affect an existing graph.

There is no retrieved release history, so you cannot see how often breaking changes ship. Pin a commit if you depend on specific behavior.

## Conclusion

Adopt ComfyUI-KJNodes if you already run ComfyUI and want the Set/Get workflow improvements, particularly the subgraph support and link conversion shortcuts, since those are the parts with a documented design. Skip it if you need a documented API surface or a node pack with per-node reference pages, because the README states documentation is mostly in node descriptions and tooltips. Before installing, check that your ComfyUI supports the Nodes 2.0 interface that the March 19th 2026 Set/Get rewrite targets, and verify the GPL-3.0 licence against how you distribute anything built on top of it. The dependency list is short, so the real cost is not installation but the time spent reading tooltips to learn what each node does.

## FAQ

### How do I install ComfyUI-KJNodes?

Clone the repository into your ComfyUI `custom_nodes` folder, then run `pip install -r requirements.txt`. The README gives a separate command for the portable Windows build, run from the `ComfyUI_windows_portable` folder using `python_embeded\python.exe -m pip install -r ComfyUI\custom_nodes\ComfyUI-KJNodes\requirements.txt`.

### How do I add a GetNode and a SetNode in ComfyUI?

The README lists several routes: right-click any link midpoint to convert it into a Set/Get pair, press Ctrl+Shift+S to add a Set to the selection or at the cursor, or Ctrl+Shift+G to add a Get at the cursor. Shift+middle-click on an output slot creates a connected SetNode, and on an input slot creates a connected GetNode.

### Is ComfyUI-KJNodes safe to install?

The repository is licensed GPL-3.0 and its declared dependencies are pillow, color-matcher, matplotlib, mss and opencv-python-headless. The README contains no security review, so this cannot be answered from the repository beyond noting the licence and the dependency list.

## Sources

- [Issues](https://github.com/kijai/ComfyUI-KJNodes/issues)
- [kijai/ComfyUI-KJNodes on GitHub](https://github.com/kijai/ComfyUI-KJNodes)
- [License: GPL-3.0](https://github.com/kijai/ComfyUI-KJNodes/blob/main/LICENSE)
- [README](https://github.com/kijai/ComfyUI-KJNodes/blob/main/README.md)

---

Hysen Labs editorial analysis, written from the project's own repository and release notes. Cite the canonical page: https://hysenlabs.com/projects/kijai-comfyui-kjnodes
