Skip to content
Closed
Show file tree
Hide file tree
Changes from all commits
Commits
Show all changes
48 commits
Select commit Hold shift + click to select a range
914fd85
refactor(workflows): remove ai-runner workflow trigger from docker.ya…
eliteprox Sep 23, 2025
4f48695
fix(nodes): add input timeout to LoadTensor and LoadAudioTensor nodes…
eliteprox Sep 23, 2025
bcebd51
cleanup(nodes): Improve input exception logging (#427)
eliteprox Sep 25, 2025
5c66950
Update documentation links to docs.comfystream.org (#431)
eliteprox Sep 26, 2025
e25d25a
launch.json: update capability name for byoc (#437)
eliteprox Sep 26, 2025
29a51d5
fix(docker): add missing development libraries for Cairo and Pango (#…
eliteprox Sep 26, 2025
70f924c
feat: GitHub workflow opencv-cuda compilation (#432)
JJassonn69 Sep 27, 2025
daf4fc5
chore: update opencv-cuda for Python 3.12, add FasterLivePortrait (#413)
JJassonn69 Sep 27, 2025
2909ea4
chore(deps): bump actions/setup-node from 4 to 5 (#377)
dependabot[bot] Sep 27, 2025
cc292f8
chore(deps-dev): bump brace-expansion from 1.1.11 to 1.1.12 in /ui (#…
dependabot[bot] Sep 27, 2025
50717e0
Feat/updated UI remove inline (#444)
JJassonn69 Sep 29, 2025
89c66bb
models: use taesd safetensors instead of pth for performance (#440)
eliteprox Sep 29, 2025
c2bf2e0
bump comfyui, add comfyui manager, blacklist loading for performance …
eliteprox Sep 29, 2025
95f90d8
chore(deps): bump pytrickle 0.1.4, replace deprecated pynvml with nvi…
eliteprox Sep 30, 2025
6ce5ef9
Chore/update workflow manual (#457)
JJassonn69 Sep 30, 2025
359593a
Bump version to 0.1.6 in pyproject.toml, package-lock.json, and packa…
JJassonn69 Sep 30, 2025
2516242
add workflow to publish to registry (#121)
eliteprox Sep 30, 2025
059d69c
fix(byoc): Use correct capability url for registration (#460)
eliteprox Oct 1, 2025
e51e7cb
ui: fix deprecated husky install command (#445)
eliteprox Oct 6, 2025
082d135
Fix text output panel visibility - hide by default, show on first tex…
Copilot Oct 6, 2025
b0f7476
chore(deps): bump actions/checkout from 4 to 5 (#355)
dependabot[bot] Oct 28, 2025
8ccf37f
chore(deps): bump actions/setup-node from 5 to 6 (#483)
dependabot[bot] Oct 28, 2025
5a1b2a5
feat: add support for custom nodes config in Docker build
eliteprox Oct 31, 2025
661ad42
feat(models): add support for HuggingFace directory downloads and new…
eliteprox Oct 31, 2025
8d0097a
refactor: replace nodes-minimal.yaml with nodes-streamdiffusion.yaml …
eliteprox Oct 31, 2025
e4203eb
add sd1.5 ipadapter models
eliteprox Oct 31, 2025
a9a0a8b
add workflow dispatch option for nodes config
eliteprox Oct 31, 2025
de428b4
fix model paths
eliteprox Nov 2, 2025
9ccf061
pin setuptools < 81 to resolve opentelemetry warning (#465)
eliteprox Nov 6, 2025
3014234
docker(byoc): add default entrypoint, set log level to INFO, fix cust…
eliteprox Nov 7, 2025
007033c
chore(docker): update cuDNN version in Dockerfile to match PyTorch re…
eliteprox Nov 7, 2025
350fc08
chore(deps): bump actions/upload-artifact from 4 to 5 (#485)
dependabot[bot] Nov 8, 2025
43a85d6
chore(deps): bump github/codeql-action from 3 to 4 (#463)
dependabot[bot] Nov 8, 2025
c54ef01
chore(deps): bump actions/setup-python from 5 to 6 (#375)
dependabot[bot] Nov 10, 2025
2a77dbd
chore(deps): bump softprops/action-gh-release from 1 to 2 (#456)
dependabot[bot] Nov 10, 2025
0f3c00c
chore(deps): bump actions/download-artifact from 4 to 6 (#482)
dependabot[bot] Nov 10, 2025
ff11b85
chore: add ruff config to precommit hooks (#507)
eliteprox Nov 11, 2025
01995da
Merge branch 'main' into feat/custom-nodes-config
eliteprox Nov 11, 2025
5aa6ece
chore(deps): bump actions/checkout from 5 to 6 (#515)
dependabot[bot] Nov 25, 2025
48fcca4
feat(pipeline): implement pause and resume functionality for prompt e…
eliteprox Nov 25, 2025
06bb2ed
chore(deps-dev): bump js-yaml from 4.1.0 to 4.1.1 in /ui (#511)
dependabot[bot] Nov 25, 2025
c45f1e2
Merge branch 'main' into feat/custom-nodes-config
eliteprox Nov 25, 2025
1a53b24
fix(devcontainer): update pip install command to include constraints …
eliteprox Nov 28, 2025
7cdde1f
Bump version to 0.1.7 (#536)
Copilot Nov 28, 2025
e4f4d03
Merge branch 'main' into feat/custom-nodes-config
eliteprox Dec 1, 2025
6f8f675
bump torch==2.8.0 (#369)
eliteprox Dec 4, 2025
08f424e
Merge branch 'main' into feat/custom-nodes-config
eliteprox Dec 5, 2025
6b37414
Remove huggingface_hub dependency from requirements.txt
eliteprox Dec 5, 2025
File filter

Filter by extension

Filter by extension


Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
2 changes: 1 addition & 1 deletion .devcontainer/post-create.sh
Original file line number Diff line number Diff line change
Expand Up @@ -5,7 +5,7 @@ cd /workspace/comfystream

# Install Comfystream in editable mode.
echo -e "\e[32mInstalling Comfystream in editable mode...\e[0m"
/workspace/miniconda3/envs/comfystream/bin/python3 -m pip install -e . --root-user-action=ignore > /dev/null
/workspace/miniconda3/envs/comfystream/bin/python3 -m pip install -e . -c src/comfystream/scripts/constraints.txt --root-user-action=ignore > /dev/null

# Install npm packages if needed
if [ ! -d "/workspace/comfystream/ui/node_modules" ]; then
Expand Down
2 changes: 2 additions & 0 deletions .editorconfig
Original file line number Diff line number Diff line change
Expand Up @@ -13,7 +13,9 @@ insert_final_newline = true
insert_final_newline = unset

[*.py]
indent_style = space
indent_size = 4
trim_trailing_whitespace = false

[workflows/comfy*/*.json]
insert_final_newline = unset
Expand Down
33 changes: 9 additions & 24 deletions .github/workflows/docker.yaml
Original file line number Diff line number Diff line change
Expand Up @@ -9,6 +9,12 @@ on:
- main
tags:
- "v*"
workflow_dispatch:
inputs:
nodes_config:
description: "Custom nodes config filename or path for base image build"
required: false
default: "nodes.yaml"

concurrency:
group: ${{ github.workflow }}-${{ github.head_ref || github.run_id }}
Expand All @@ -27,7 +33,7 @@ jobs:
runs-on: [self-hosted, linux, gpu]
steps:
- name: Check out code
uses: actions/checkout@v4
uses: actions/checkout@v6
with:
fetch-depth: 0
ref: ${{ github.event.pull_request.head.sha }}
Expand Down Expand Up @@ -78,33 +84,12 @@ jobs:
file: docker/Dockerfile.base
build-args: |
CACHEBUST=${{ github.run_id }}
NODES_CONFIG=${{ github.event_name == 'workflow_dispatch' && github.event.inputs.nodes_config || 'nodes.yaml' }}
labels: ${{ steps.meta.outputs.labels }}
annotations: ${{ steps.meta.outputs.annotations }}
cache-from: type=registry,ref=livepeer/comfyui-base:build-cache
cache-to: type=registry,mode=max,ref=livepeer/comfyui-base:build-cache

trigger:
name: Trigger ai-runner workflow
needs: base
if: ${{ github.repository == 'livepeer/comfystream' }}
runs-on: ubuntu-latest
steps:
- name: Send workflow dispatch event to ai-runner
uses: actions/github-script@v7
with:
github-token: ${{ secrets.CI_GITHUB_TOKEN }}
script: |
await github.rest.actions.createWorkflowDispatch({
owner: context.repo.owner,
repo: "ai-runner",
workflow_id: "comfyui-trigger.yaml",
ref: "main",
inputs: {
"comfyui-base-digest": "${{ needs.base.outputs.image-digest }}",
"triggering-branch": "${{ github.head_ref || github.ref_name }}",
},
});

comfystream:
name: comfystream image
needs: base
Expand All @@ -115,7 +100,7 @@ jobs:
runs-on: [self-hosted, linux, amd64]
steps:
- name: Check out code
uses: actions/checkout@v4
uses: actions/checkout@v6
with:
fetch-depth: 0
ref: ${{ github.event.pull_request.head.sha }}
Expand Down
184 changes: 184 additions & 0 deletions .github/workflows/opencv-cuda-artifact.yml
Original file line number Diff line number Diff line change
@@ -0,0 +1,184 @@
name: Build OpenCV CUDA Artifact

on:
workflow_dispatch:
inputs:
python_version:
description: 'Python version to build'
required: false
default: '3.12'
type: string
cuda_version:
description: 'CUDA version to build'
required: false
default: '12.8'
type: string

concurrency:
group: ${{ github.workflow }}-${{ github.head_ref || github.run_id }}
cancel-in-progress: true

env:
PYTHON_VERSION: ${{ github.event.inputs.python_version || '3.12' }}
CUDA_VERSION: ${{ github.event.inputs.cuda_version || '12.8' }}

jobs:
build-opencv-artifact:
name: Build OpenCV CUDA Artifact
runs-on: [self-hosted, linux, gpu]

steps:
- name: Checkout code
uses: actions/checkout@v6
with:
fetch-depth: 0
ref: ${{ github.event.pull_request.head.sha || github.sha }}

- name: Set up Docker Buildx
uses: docker/setup-buildx-action@v3

- name: Build OpenCV CUDA Docker image
uses: docker/build-push-action@v6
with:
context: .
file: docker/Dockerfile.opencv
build-args: |
BASE_IMAGE=nvidia/cuda:${{ env.CUDA_VERSION }}.1-cudnn-devel-ubuntu22.04
PYTHON_VERSION=${{ env.PYTHON_VERSION }}
CUDA_VERSION=${{ env.CUDA_VERSION }}
tags: opencv-cuda-artifact:latest
load: true
cache-from: type=gha
cache-to: type=gha,mode=max

- name: Extract OpenCV libraries from Docker container
run: |
echo "Creating temporary container..."
docker create --name opencv-extract opencv-cuda-artifact:latest

echo "Creating workspace directory..."
mkdir -p ./opencv-artifacts

# Try to copy from system installation
docker cp opencv-extract:/usr/local/lib/python${{ env.PYTHON_VERSION }}/site-packages/cv2 ./opencv-artifacts/cv2 || echo "cv2 not found in system site-packages"

echo "Copying OpenCV source directories..."
# Copy opencv and opencv_contrib source directories
docker cp opencv-extract:/workspace/opencv ./opencv-artifacts/ || echo "opencv source not found"
docker cp opencv-extract:/workspace/opencv_contrib ./opencv-artifacts/ || echo "opencv_contrib source not found"

echo "Cleaning up container..."
docker rm opencv-extract

echo "Contents of opencv-artifacts:"
ls -la ./opencv-artifacts/

- name: Create tarball artifact
run: |
echo "Creating opencv-cuda-release.tar.gz..."
cd ./opencv-artifacts
tar -czf ../opencv-cuda-release.tar.gz . || echo "Failed to create tarball"
cd ..

echo "Generating checksums..."
sha256sum opencv-cuda-release.tar.gz > opencv-cuda-release.tar.gz.sha256
md5sum opencv-cuda-release.tar.gz > opencv-cuda-release.tar.gz.md5

echo "Verifying archive contents..."
echo "Archive size: $(ls -lh opencv-cuda-release.tar.gz | awk '{print $5}')"
echo "First 20 files in archive:"
tar -tzf opencv-cuda-release.tar.gz | head -20

- name: Extract and verify tarball
run: |
echo "Testing tarball extraction..."
mkdir -p test-extract
cd test-extract
tar -xzf ../opencv-cuda-release.tar.gz
echo "Extracted contents:"
find . -maxdepth 2 -type d | sort
cd ..
rm -rf test-extract

- name: Upload OpenCV CUDA Release Artifact
uses: actions/upload-artifact@v5
with:
name: opencv-cuda-release-python${{ env.PYTHON_VERSION }}-cuda${{ env.CUDA_VERSION }}-${{ github.sha }}
path: |
opencv-cuda-release.tar.gz
opencv-cuda-release.tar.gz.sha256
opencv-cuda-release.tar.gz.md5
retention-days: 30

- name: Create Release Notes
run: |
cat > release-info.txt << EOF
OpenCV CUDA Release Artifact

Build Details:
- Python Version: ${{ env.PYTHON_VERSION }}
- CUDA Version: ${{ env.CUDA_VERSION }}
- OpenCV Version: 4.11.0
- Built on: $(date -u)
- Commit SHA: ${{ github.sha }}

Contents:
- cv2: Python OpenCV module with CUDA support
- opencv: OpenCV source code
- opencv_contrib: OpenCV contrib modules source
- lib: Compiled OpenCV libraries
- include: OpenCV header files

Installation:
1. Download opencv-cuda-release.tar.gz
2. Extract: tar -xzf opencv-cuda-release.tar.gz
3. Copy cv2 to your Python environment's site-packages
4. Ensure CUDA libraries are in your system PATH

Checksums:
SHA256: $(cat opencv-cuda-release.tar.gz.sha256)
MD5: $(cat opencv-cuda-release.tar.gz.md5)
EOF

- name: Upload Release Info
uses: actions/upload-artifact@v5
with:
name: release-info-python${{ env.PYTHON_VERSION }}-cuda${{ env.CUDA_VERSION }}-${{ github.sha }}
path: release-info.txt
retention-days: 30

create-release-draft:
name: Create Release Draft
needs: build-opencv-artifact
runs-on: ubuntu-latest
if: github.event_name == 'push' && github.ref == 'refs/heads/main'

steps:
- name: Checkout code
uses: actions/checkout@v6

- name: Download artifacts
uses: actions/download-artifact@v6
with:
name: opencv-cuda-release-python${{ env.PYTHON_VERSION }}-cuda${{ env.CUDA_VERSION }}-${{ github.sha }}
path: ./artifacts

- name: Download release info
uses: actions/download-artifact@v6
with:
name: release-info-python${{ env.PYTHON_VERSION }}-cuda${{ env.CUDA_VERSION }}-${{ github.sha }}
path: ./artifacts

- name: Create Release Draft
uses: softprops/action-gh-release@v2
with:
tag_name: opencv-cuda-v${{ env.PYTHON_VERSION }}-${{ env.CUDA_VERSION }}-${{ github.run_number }}
name: OpenCV CUDA Release - Python ${{ env.PYTHON_VERSION }} CUDA ${{ env.CUDA_VERSION }}
body_path: ./artifacts/release-info.txt
draft: true
files: |
./artifacts/opencv-cuda-release.tar.gz
./artifacts/opencv-cuda-release.tar.gz.sha256
./artifacts/opencv-cuda-release.tar.gz.md5
env:
GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }}
26 changes: 26 additions & 0 deletions .github/workflows/publish-comfyui-node.yaml
Original file line number Diff line number Diff line change
@@ -0,0 +1,26 @@
name: Publish ComfyUI Custom Node

on:
workflow_dispatch:

permissions:
contents: read
issues: write

jobs:
publish-comfyui-node:
name: Publish Custom Node to ComfyUI registry
runs-on: ubuntu-latest
# Ensure this only runs on main branch
if: ${{ github.ref == 'refs/heads/main' }}
steps:
- name: Check out code
uses: actions/checkout@v6
with:
submodules: true

- name: Publish Custom Node
uses: Comfy-Org/publish-node-action@v1
with:
## Add your own personal access token to your Github Repository secrets and reference it here.
personal_access_token: ${{ secrets.REGISTRY_ACCESS_TOKEN }}
6 changes: 3 additions & 3 deletions .github/workflows/release.yaml
Original file line number Diff line number Diff line change
Expand Up @@ -12,9 +12,9 @@ jobs:
runs-on: ubuntu-latest
steps:
- name: Checkout code
uses: actions/checkout@v4
uses: actions/checkout@v6

- uses: actions/setup-node@v4
- uses: actions/setup-node@v6
with:
node-version: 18
cache: npm
Expand All @@ -38,7 +38,7 @@ jobs:
cd -

- name: Upload artifacts
uses: actions/upload-artifact@v4
uses: actions/upload-artifact@v5
with:
name: release-artifacts
path: releases/
Expand Down
12 changes: 6 additions & 6 deletions .github/workflows/test.yaml
Original file line number Diff line number Diff line change
Expand Up @@ -19,28 +19,28 @@ jobs:
runs-on: ubuntu-latest
steps:
- name: Check out code
uses: actions/checkout@v4
uses: actions/checkout@v6
with:
fetch-depth: 0
ref: ${{ github.event.pull_request.head.sha }}

# Initializes the CodeQL tools for scanning.
- name: Initialize CodeQL
uses: github/codeql-action/init@v3
uses: github/codeql-action/init@v4
with:
languages: typescript,javascript,python
config-file: ./.github/codeql-config.yaml

- name: Perform CodeQL Analysis
uses: github/codeql-action/analyze@v3
uses: github/codeql-action/analyze@v4


editorconfig:
name: Run editorconfig checker
runs-on: ubuntu-latest
steps:
- name: Check out code
uses: actions/checkout@v4
uses: actions/checkout@v6
with:
# Check https://github.com/livepeer/go-livepeer/pull/1891
# for ref value discussion
Expand All @@ -59,14 +59,14 @@ jobs:
runs-on: ubuntu-latest
steps:
- name: Check out code
uses: actions/checkout@v4
uses: actions/checkout@v6
with:
# Check https://github.com/livepeer/go-livepeer/pull/1891
# for ref value discussion
ref: ${{ github.event.pull_request.head.sha }}

- name: Set up Python
uses: actions/setup-python@v5
uses: actions/setup-python@v6
with:
python-version: '3.12'
cache: pip
Expand Down
3 changes: 3 additions & 0 deletions .husky/pre-commit
Original file line number Diff line number Diff line change
@@ -0,0 +1,3 @@
#!/bin/sh
cd ui && npx lint-staged

2 changes: 1 addition & 1 deletion .vscode/launch.json
Original file line number Diff line number Diff line change
Expand Up @@ -56,7 +56,7 @@
"env": {
"ORCH_URL": "https://172.17.0.1:9995",
"ORCH_SECRET": "orch-secret",
"CAPABILITY_NAME": "comfystream-byoc-processor",
"CAPABILITY_NAME": "comfystream",
"CAPABILITY_DESCRIPTION": "ComfyUI streaming processor for BYOC mode",
"CAPABILITY_URL": "http://172.17.0.1:8000",
"CAPABILITY_PRICE_PER_UNIT": "0",
Expand Down
4 changes: 2 additions & 2 deletions README.md
Original file line number Diff line number Diff line change
Expand Up @@ -27,15 +27,15 @@ This repo also includes a WebRTC server and UI that uses comfystream to support

Refer to [.devcontainer/README.md](.devcontainer/README.md) to setup ComfyStream in a devcontainer using a pre-configured ComfyUI docker environment.

For other installation options, refer to [Install ComfyUI and ComfyStream](https://pipelines.livepeer.org/docs/technical/install/local-testing) in the Livepeer pipelines documentation.
For other installation options, refer to [Install ComfyUI and ComfyStream](https://docs.comfystream.org/technical/get-started/install) in the ComfyStream documentation.

For additional information, refer to the remaining sections below.

### Docker Image

You can quickly deploy ComfyStream using the docker image `livepeer/comfystream`

Refer to the documentation at [https://pipelines.livepeer.org/docs/technical/getting-started/install-comfystream](https://pipelines.livepeer.org/docs/technical/getting-started/install-comfystream) for instructions to run locally or on a remote server.
Refer to the documentation at [https://docs.comfystream.org/technical/get-started/install](https://docs.comfystream.org/technical/get-started/install) for instructions to run locally or on a remote server.

#### RunPod

Expand Down
Loading
Loading