Orel's Nodes
Custom ComfyUI nodes by Orel for downloading Hugging Face models, managing HF tokens, and uploading LoRAs.
Nodes (20)
The percent-stripping converter nobody expects
Any to Int refuses to guess — and that's the feature
The node you add when a socket turns red
Find out what's missing before the error wall
One button that fires every model node you've wired to it
One node that provisions a whole FLUX.2 Klein rig
One comparison, two verdicts, zero AI involved
Stop naming 400 outputs ComfyUI_00042
Prompts and reports from a template, without eval()
The node with no wires, and that's deliberate
The loader that tells you which file it used
Dragging a .safetensors past the 413 wall
A download button that lives inside the graph
Did your 6GB download actually finish?
A QC metric, not a lie detector
Routing yes, saving you GPU time, no
Swap {TRIGGER} without retyping your prompt
Set up the bot from inside the graph
Trigger Word is a label, not a feature — and that's fine
The run log you never bothered to write
Orel's Nodes
Utility, workflow, LoRA, setup, and quality-control nodes for ComfyUI.
A small toolkit that reduces the need for extra custom-node packs for trivial string, filename, and setup operations. Heavy features such as InsightFace face analysis and Hugging Face downloads stay optional.
Version: 0.6.1
License: see LICENSE
Package ID: orels-nodes
Publisher: darkorel
Features
- Models — Hugging Face model download, Download All, shared HF token UI, chunked LoRA upload
- Primitive converters — Any → String / Int / Float (
IO.ANY) - Text utilities — Format Text, Trigger Word, Prompt Template
- LoRA tools — LoRA Loader + Name (native apply + filename/basename outputs)
- File / workflow tools — Filename Builder, Model File Checker, Workflow Status
- Setup / dependency tools — Environment Setup, Telegram Config Writer, Dependency Checker
- Face / QC tools — Multi Reference Face Similarity, Face QC, Pass / Fail Route
Installation
ComfyUI Manager / Registry
- Open ComfyUI Manager (or the built-in Extensions / Registry UI).
- Search for Orel's Nodes (
orels-nodes). - Install and restart ComfyUI.
- Hard-refresh the browser.
On first install, also install download dependencies if you use model download / LoRA upload:
python -m pip install -r custom_nodes/orels-nodes/requirements.txt
(Use the Python environment that runs ComfyUI.)
Manual Git install
cd ComfyUI/custom_nodes
git clone https://github.com/DarkOrel/Orels-Nodes.git orels-nodes
python -m pip install -r orels-nodes/requirements.txt
Restart ComfyUI and hard-refresh the browser.
Updating
- Manager / Registry: use Update on Orel's Nodes, then restart and hard-refresh.
- Git:
git pullinsidecustom_nodes/orels-nodes, reinstall requirements if they changed, restart, hard-refresh.
Nodes
Internal IDs (workflow JSON type) are stable. Display names are shown in the UI.
Orel's Nodes/Primitive
| Display name | ID | Summary |
|---|---|---|
| Any to String | OrelsAnyToString | Convert any connected value to STRING |
| Any to Int | OrelsAnyToInt | Convert compatible values to INT with clear errors |
| Any to Float | OrelsAnyToFloat | Convert compatible values to FLOAT with clear errors |
Orel's Nodes/Text
| Display name | ID | Summary |
|---|---|---|
| Format Text | OrelsFormatText | Multiline template with {a}…{f} (no eval(), no brace escaping) |
| Trigger Word | OrelsTriggerWord | Pass-through STRING labeled as a LoRA trigger word |
| Prompt Template | OrelsPromptTemplate | Replace {TRIGGER} (or a custom placeholder) in a prompt |
Orel's Nodes/LoRA
| Display name | ID | Summary |
|---|---|---|
| LoRA Loader + Name | OrelsLoraLoaderName | Load a LoRA like core ComfyUI; also output filename and basename |
Orel's Nodes/File
| Display name | ID | Summary |
|---|---|---|
| Filename Builder | OrelsFilenameBuilder | Build a safe cross-platform filename stem |
| Model File Checker | OrelsModelFileChecker | Check whether a model file exists in ComfyUI folders |
Orel's Nodes/Debug
| Display name | ID | Summary |
|---|---|---|
| Workflow Status | OrelsWorkflowStatus | Readable multi-line workflow metadata summary |
Orel's Nodes/Setup
| Display name | ID | Summary |
|---|---|---|
| Environment Setup | OrelsEnvironmentSetup | Verify or download the known FLUX.2 Klein model set |
| Telegram Config Writer | OrelsTelegramConfigWriter | Merge Telegram Suite bot/chat config without exposing tokens |
| Dependency Checker | OrelsDependencyChecker | Report READY / MISSING — does not install packages |
Orel's Nodes/Face
| Display name | ID | Summary |
|---|---|---|
| Multi Reference Face Similarity | OrelsMultiReferenceFaceSimilarity | InsightFace cosine similarity vs up to 3 references (QC metric) |
| Face QC | OrelsFaceQC | Pass/fail gate from score and threshold |
| Pass / Fail Route | OrelsPassFailRoute | Copy image to PASS or FAIL outputs (not true lazy execution) |
Orel's Nodes/Models
| Display name | ID | Summary |
|---|---|---|
| Model Download | OrelsModelDownload | Download one Hugging Face file into a ComfyUI model folder |
| Download All | OrelsDownloadAll | Start every connected model download |
| Hugging Face Token | OrelsHFToken | Configure the shared server Hugging Face token |
| LoRA Upload | OrelsLoraUpload | Upload .safetensors LoRAs into ComfyUI |
Optional dependencies
| Feature | Install |
|---|---|
| Model download / LoRA upload | requirements.txt (huggingface_hub, filelock) |
| Multi Reference Face Similarity | requirements-face.txt (insightface, onnxruntime, OpenCV, NumPy) |
| Telegram Config Writer | ComfyUI Telegram Suite custom node pack installed separately |
Core utility nodes (primitives, text, filename, status, Face QC gate, etc.) still load when optional packages are missing. Only the dependent feature fails when you run it, with a clear error.
Environment Setup
Checks (and optionally downloads) the known FLUX.2 Klein models used by this toolkit:
| Model | Category |
|---|---|
| FLUX.2 Klein Base 9B FP8 | diffusion_models |
| Qwen text encoder | text_encoders |
| FLUX.2 VAE | vae |
Token precedence: HF_TOKEN → HUGGINGFACE_TOKEN → Hugging Face Token node (server store).
There is no workflow-serialized token field — ComfyUI would save STRING widgets into workflow JSON. Use env vars or the Hugging Face Token node instead.
Tokens are never written into workflows or status outputs.
Telegram Config Writer
Merges a bot name/token and chat name/id into ComfyUI Telegram Suite’s config.json (typically {cwd}/user/default/telegram-suite/config.json). Unrelated bots/chats are preserved. The bot token is never returned in node outputs. Restart ComfyUI if Telegram Suite already cached an older config.
Face Similarity
Multi Reference Face Similarity is a workflow quality-control metric, not proof of real-world identity. It uses the largest detected face per image, optional InsightFace models, and a user-configurable threshold. Install requirements-face.txt before use.
Pass / Fail Route
Copies the input image to PASS_IMAGE or FAIL_IMAGE based on score >= threshold.
This is not true lazy / conditional execution. Nodes wired to the unused output can still run. For real branch-skipping, drive a ComfyUI or KJNodes lazy switch from the passed boolean.
Security
- Never commit tokens, bot secrets, or private chat IDs
- Prefer environment variables for HF tokens on shared hosts
- Model paths and filenames reject
../ absolute escapes - Upload/download destinations stay inside ComfyUI model folders
Registry / Manager notes
- Package id:
orels-nodes(immutable) - Display name: Orel's Nodes
- Publisher id:
darkorel - Icon:
assets/icon.png node_list.jsonlists every public backend node for Manager discovery
Development / testing
See TESTING.md and CHANGELOG.md.
python -m unittest discover -s tests -p 'test_*.py' -v
node tests/test_ui.mjs
License
See LICENSE.