Skip to main content

comfy-runtime

Run any ComfyUI node as a Python function. No server, no UI, no workflow graph.

Install

pip install comfy-runtime

Usage

1. Configure & run built-in nodes

import comfy_runtime

comfy_runtime.configure(models_dir="/path/to/models", output_dir="./output")

# Text-to-image with SD 1.5
model, clip, vae = comfy_runtime.execute_node("CheckpointLoaderSimple", ckpt_name="v1-5-pruned-emaonly.safetensors")
positive = comfy_runtime.execute_node("CLIPTextEncode", clip=clip, text="a castle on a hill, fantasy art")[0]
negative = comfy_runtime.execute_node("CLIPTextEncode", clip=clip, text="blurry, low quality")[0]
latent = comfy_runtime.execute_node("EmptyLatentImage", width=512, height=512, batch_size=1)[0]
sampled = comfy_runtime.execute_node("KSampler", model=model, positive=positive, negative=negative, latent_image=latent, seed=42, steps=20, cfg=8.0, sampler_name="euler", scheduler="normal", denoise=1.0)[0]
images = comfy_runtime.execute_node("VAEDecode", samples=sampled, vae=vae)[0]
comfy_runtime.execute_node("SaveImage", images=images, filename_prefix="output")

2. Load any custom node

# Single file
comfy_runtime.load_nodes_from_path("/path/to/my_node.py")

# Directory (with or without __init__.py)
comfy_runtime.load_nodes_from_path("/path/to/ComfyUI-AnimateDiff-Evolved")

# Then use it
result = comfy_runtime.execute_node("ADE_AnimateDiffLoRALoader", ...)

Both V1 (NODE_CLASS_MAPPINGS) and V3 (comfy_entrypoint) node formats are supported.

3. Discover nodes

comfy_runtime.list_nodes()          # All registered node names
comfy_runtime.get_node_info("KSampler")  # Input/output types, category

API

Function Description
configure(models_dir, output_dir, ...) Set model paths and device config. Call before loading models.
execute_node(class_type, **kwargs) Run a node and return its output tuple.
load_nodes_from_path(path) Load nodes from a .py file or directory. Returns list of registered names.
list_nodes() All registered node names.
get_node_info(class_type) Node metadata (inputs, outputs, category).
register_node(class_type, cls) Register a node class manually.
unregister_node(class_type) Remove a node.
get_config() Current runtime config.

Custom node compatibility

Tested with popular third-party nodes:

Node Pack Nodes Status
WAS-Node-Suite (220 nodes) Image/text utilities Works
IPAdapter-Plus (37 nodes) Style transfer Works
KJNodes (232 nodes) Utility pack Works
Advanced-ControlNet (43 nodes) ControlNet Works
AnimateDiff-Evolved (145 nodes) Video animation Works

Custom nodes that import from comfy.*, comfy_api.*, comfy_extras.*, folder_paths, or nodes all resolve correctly.

Examples

See workflows/ for complete runnable examples:

  • sd15_text_to_image — basic text-to-image
  • flux2_klein_text_to_image — Flux.2 with custom sampler
  • img2img — image-to-image style transfer
  • inpainting — masked region replacement
  • hires_fix — 2-pass high-resolution generation
  • area_composition — spatial prompt composition
  • esrgan_upscale — 4x super-resolution

License

MIT

Metadata

Release files for comfy-runtime 0.3.1

For a detailed explanation of source distributions (sdists) and built distributions (wheels), please see the package formats documentation.

Source distribution (sdist)

Source distribution for comfy-runtime 0.3.1
File Size Uploaded
comfy_runtime-0.3.1.tar.gz 96.4 kB Details

Built distribution (wheel)

Table of built distributions (wheels) for comfy-runtime 0.3.1
File Interpreter ABI Platform
comfy_runtime-0.3.1-py3-none-any.whl Python 3 none any Details

Total release size: 218.0 kB

Release files / comfy_runtime-0.3.1.tar.gz

Download URL comfy_runtime-0.3.1.tar.gz
Size 96.4 kB
Tags Source
SHA-256 checksum
How to use checksums
0482b73d3ef80a2313a17c602f65a34bd94c80905db9025bf8492a0a7493980b
BLAKE2b-256 checksum
How to use checksums
fc7dabd5b314b0b0ad2e66f4bbff9da337943510aa21938ba2cdccabdd765542
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
Yes
Uploaded via twine/6.1.0 CPython/3.13.12

Provenance

Provenance describes where a file came from. On PyPI, provenance is shared via attestations, which provide a verifiable record of the build or publishing details. View details, limitations and caveats.

PyPI Publish Attestation

PyPI verified that this artifact, at this checksum, originated from the publisher listed below.

Signed by GitHub Actions, verified by PyPI on Apr 10, 2026.

Transparency log

Release files / comfy_runtime-0.3.1-py3-none-any.whl

Download URL comfy_runtime-0.3.1-py3-none-any.whl
Size 121.7 kB
Tags Python 3
SHA-256 checksum
How to use checksums
f76b6a15219ebdc50272977daf04f79e7a6e93908f1399f83a956ee166b01d04
BLAKE2b-256 checksum
How to use checksums
d4be82ee2e090c09a3d52fd5b1ebf5f0c75f14ae281c346b6436267b7f70b082
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
Yes
Uploaded via twine/6.1.0 CPython/3.13.12

Provenance

Provenance describes where a file came from. On PyPI, provenance is shared via attestations, which provide a verifiable record of the build or publishing details. View details, limitations and caveats.

PyPI Publish Attestation

PyPI verified that this artifact, at this checksum, originated from the publisher listed below.

Signed by GitHub Actions, verified by PyPI on Apr 10, 2026.

Transparency log

Release history Release notifications | RSS feed

This release

0.3.1 This release

2 release files

0.3.0

2 release files

0.2.0

2 release files

0.1.0

2 release files

Anthropic, PBC Visionary sponsor Bloomberg Visionary sponsor Hudson River Trading Visionary sponsor Meta Visionary sponsor NVIDIA Visionary sponsor Microsoft Sustainability sponsor Depot Continuous Integration AWS Cloud computing and Security Sponsor Datadog Monitoring Fastly CDN Google Download Analytics Sentry Error logging StatusPage Status page