Add your description here
Project description
Comfy Nodekit
Utilities for working with ComfyUI node graphs from Python. The project provides typed wrappers around ComfyUI nodes, lightweight graph primitives, and helpers for exporting a workflow back to the JSON format that the ComfyUI API expects.
- Typed
NodeandEdgemodels (Pydantic) for tracking dependencies and serialising graphs. - A generated
nodes.pymodule that mirrors the ComfyUI node catalogue with Python callables. - Tooling (
nodes_to_py.py) to regenerate those bindings directly from a running ComfyUI server. - Example workflow builder scaffolding that shows how to stitch nodes into higher-level pipelines.
Requirements
- Python 3.12+
requestsandpydantic(installed automatically when the package is installed)- Access to a running ComfyUI server when regenerating node bindings
Installation
uv add comfy_nodekit
# pip install comfy_nodekit
Generate node bindings (required before usage)
Before using the factory functions, generate nodes.py from your running ComfyUI:
uv run python -m comfy_nodekit.nodes_to_py http://127.0.0.1:8188/
# or: just run
If you omit the URL, it defaults to http://127.0.0.1:8188/. This writes nodes.py based on the server's /object_info. Re-run whenever your ComfyUI nodes change.
You can also generate from a local JSON schema (previously fetched from /object_info):
# From default server (same as before)
uv run python -m comfy_nodekit.nodes_to_py
# From a specific server and write to a custom path
uv run python -m comfy_nodekit.nodes_to_py http://127.0.0.1:8188/ ./nodes.py
# From a local JSON file and write to a custom path
uv run python -m comfy_nodekit.nodes_to_py ./object_info.json ./nodes.py
Usage
Create nodes the same way you would wire a ComfyUI graph. Each factory function from nodes.py returns a typed Edge that keeps track of its originating node. When you are ready to export the workflow, grab the source_node of your terminal edge and call build_json_workflow().
from comfy_nodekit.models import Edge
from comfy_nodekit.nodes import (
CheckpointLoaderSimple,
CLIPTextEncode,
EmptyLatentImage,
KSampler,
VAEDecode,
)
# Load base models
model, clip, vae = CheckpointLoaderSimple("juggernautXL_v9Rdphoto2Lightning.safetensors")
# Encode prompts
positive = CLIPTextEncode(text="a cinematic portrait of an astronaut", clip=clip)
negative = CLIPTextEncode(text="", clip=clip)
# Create latents and sample
latent = EmptyLatentImage(width=1024, height=1024, batch_size=1)
sampled = KSampler(
model=model,
seed=42,
steps=20,
cfg=7.5,
sampler_name="euler",
scheduler="normal",
positive=positive,
negative=negative,
latent_image=latent,
denoise=1.0,
)
decoded = VAEDecode(samples=sampled, vae=vae)
# Export to ComfyUI JSON format
workflow = decoded.source_node.build_json_workflow()
# Optionally: print or send to a ComfyUI server
import json
print(json.dumps(workflow, indent=2))
Notes
- The generator downloads the node schema, sanitises type names, and rewrites
nodes.pywith updated classes and helper functions. - The
justrecipejust runwraps the generation command if you prefer using just.
Acknowledgments
Thanks to ComfyScript for inspiration and prior art.
Project details
Download files
Download the file for your platform. If you're not sure which to choose, learn more about installing packages.
Source Distribution
Built Distribution
Filter files by name, interpreter, ABI, and platform.
If you're not sure about the file name format, learn more about wheel file names.
Copy a direct link to the current filters
File details
Details for the file comfy_nodekit-0.2.0.tar.gz.
File metadata
- Download URL: comfy_nodekit-0.2.0.tar.gz
- Upload date:
- Size: 6.0 kB
- Tags: Source
- Uploaded using Trusted Publishing? No
- Uploaded via: uv/0.9.4
File hashes
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
5b75d27b9b1883372a578929e875978a4148e940d5a0fdd26a2984a7018f385b
|
|
| MD5 |
41f77c910365400a0eb48e86069fc0b0
|
|
| BLAKE2b-256 |
ae63df8537788461d0d5ed24b5d4e493ecfb3f882c4fa3589468bf40c641ebec
|
File details
Details for the file comfy_nodekit-0.2.0-py3-none-any.whl.
File metadata
- Download URL: comfy_nodekit-0.2.0-py3-none-any.whl
- Upload date:
- Size: 7.3 kB
- Tags: Python 3
- Uploaded using Trusted Publishing? No
- Uploaded via: uv/0.9.4
File hashes
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
13cfba3d021306a11aaf44e43a24b0e903e5f30b298745180781468c9c97536b
|
|
| MD5 |
c7e013594258e3f8364ff028ad3057b6
|
|
| BLAKE2b-256 |
e9003ce9b00f501d13b45ff1b4d819c8a88414b1e78f34d899ef1045f02e6210
|