Comfy-Pack: Package and Deploy ComfyUI Workflows
⚠️ WARNING: This project is under active development.
A comprehensive toolkit for reliably packing and unpacking environments for ComfyUI workflows.
- 📦 Pack workflow environments as artifacts: Saves the workflow environment in a
.cpack.zipartifact with Python package versions, ComfyUI and custom node revisions, and model hashes. - ✨ Unpack artifacts to recreate workflow environments: Unpacks the
.cpack.zipartifact to recreate the same environment with the exact Python package versions, ComfyUI and custom node revisions, and model weights. - 🚀 Deploy workflows as APIs: Deploys the workflow as a RESTful API with customizable input and output parameters.
Motivations
When sharing ComfyUI workflows to others, your audiences or team member, you've likely heard these responses:
- "Custom Node not found"
- "Cannot find the model file"
- "Missing Python dependencies"
These are fundamental challenges in workflow sharing – every component must match exactly: custom nodes, model files, and Python dependencies.
We learned it from our communit, and developed Comfy-Pack to address this directly. With a single click, it captures and locks your entire workflow environment into a .cpack.zip file, including Python packages, custom nodes, model hashes, and required assets.
Users can recreate the exact environment with one command:
comfy-pack unpack workflow.cpack.zip
Focus on creating. Let Comfy-Pack handle the rest.
Quick Start
Installation
Search comfy-pack in ComfyUI Manager (Recommended)
or install from Git:
git clone https://github.com/bentoml/comfy-pack.git
Pack a ComfyUI workflow
- Click "Package" button to create
.cpack.zip - (Optional) select the models that you want to include (only model hash will be recorded, so you wont get a 100GB zip file)
Unpack a ComfyUI workflow
# Restore the full ComfyUI directory from cpack files.
comfy-pack unpack workflow.cpack.zip
Deploy a workflow as an API
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
Custom Node List
ComfyPack provides custom nodes for standardizing inputs:
- ImageInput: provides
imagetype input, similar to officialLoadImagenode - StringInput: provides
stringtype input, nice for prompts - IntInput: provides
inttype input, suitable for size or seeds - AnyInput: provides
combotype and more input, suitable for custom nodes - ImageOutput: takes
imagetype inputs, similar to officialSaveImagenode, take an image of a bunch of images - FileOutput: takes file path as
stringtype, save and output the file under that path - ...
These nodes help define clear interfaces for your workflow.
🚀 Roadmap
- Docker Support
- local cpack manager and Version Control
- Enhanced service capabilities
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