2024-12-18 00:55:28 -08:00
2024-12-18 14:52:28 +08:00
2024-12-18 13:17:30 +08:00
2024-12-18 14:51:17 +08:00
2024-12-17 19:00:13 +08:00
2024-11-21 11:12:15 +08:00
2024-11-13 18:18:47 +08:00
2024-11-05 17:56:00 +08:00
2024-12-18 00:55:28 -08:00
2024-12-18 14:51:17 +08:00
2024-11-21 11:12:15 +08:00

Comfy-Pack: Package and Deploy ComfyUI Workflow

A comprehensive toolkit for reliably packing and unpacking environments for ComfyUI workflows.

  • 📦 Pack workflow environments as an artifact: Saves the workflow environment in a .cpack.zip artifact with Python package versions, ComfyUI and custom node revisions, and model hashes.
  • ✨ Unpack artifact to recreate workflow environments Unpacks the .cpack.zip artifact to recreate the same environment with the exact Python package versions, ComfyUI and custom node revisions, and model weights.
  • 🚀 Deploy workflow as an API: Deploys the workflow as a RESTful API with customizable input and output parameters.

Motivations

We learned from our community that packaging and sharing a ComfyUI workflow is currently difficult due to challenges in reliably replicating the workflow environment. To reliably replicate a workflow elsewhere, one must recreate the environment with the exact python packages, custom nodes revisions, and the identical models. This process can be tedious, error-prone, and time-consuming.

To address this, we built comfy-pack – a tool designed to simplify this process. As a ComfyUI Manager plugin, comfy-pack lets you package an entire workflow with just one click in the UI. Behind the scenes, it automatically locks and records everything you need: Python package versions, custom node revisions, model hashes, and any static assets required for the workflow. All of this is saved into a single .cpack.zip artifact.

The same environment can be recreated by unpacking the .cpack.zip artifact with a simple command:

comfy-pack unpack workflow.cpack.zip

Once this command completes, the environment is fully set up to reliably reproduce the original workflow.

Quick Start

Installation

Search comfy-pack in ComfyUI Manager (Recommended)

install_node

or install from Git:

git clone https://github.com/bentoml/comfy-pack.git

Pack a ComfyUI workflow

  1. Click "Package" button to create .cpack.zip
  2. (Optional) select the models that you want to include (only model hash will be recorded)

Unpack a ComfyUI workflow

# Restore a ComfyUI project from cpack files.
comfy-pack unpack workflow.cpack.zip --dir ./

Deploy a workflow as an API

1. annotate input & output

input

output

2. serve and test locally

serve

3. (Optional) pack & run anywhere
# Get the workflow input spec
comfy-pack run workflow.cpack.zip --help

# Run
comfy-pack run workflow.cpack.zip --src-image image.png --video video.mp4
4. (Optional) deploy to cloud *

image

Parameter Nodes

ComfyPack provides custom nodes for standardizing inputs:

  • ImageInput: provides image type input, similar to official LoadImage node
  • StringInput: provides string type input, nice for prompts
  • IntInput: provides int type input, suitable for size or seeds
  • AnyInput: provides combo type and more input, suitable for custom nodes
  • ImageOutput: takes image type inputs, similar to official SaveImage node, take an image of a bunch of images
  • FileOutput: takes file path as string type, save and output the file under that path
  • ...

These nodes help define clear interfaces for your workflow.

Docker Support

Under development

Examples

Check our examples folder for:

  • Basic workflow packaging
  • Parameter configuration
  • API integration
  • Docker deployment

License

MIT License

Community

  • Issues & Feature Requests: GitHub Issues
  • Questions & Discussion: Discord Server

Detailed documentation: under development

S
Description
No description provided
Readme Apache-2.0
757 KiB
Languages
Python 69.7%
JavaScript 30%
Shell 0.3%