Extensions/ComfyUI Web Viewer
ComfyUI Extension

ComfyUI Web Viewer

The ComfyUI Web Viewer by a/vrch.ai is a custom node collection offering a real-time AI-generated interactive art framework. This utility integrates realtime streaming into ComfyUI workflows, supporting keyboard control nodes, OSC control nodes, sound input nodes, and more. Accessible from any device with a web browser, it enables real time interaction with AI-generated content, making it ideal for interactive visual projects and enhancing ComfyUI workflows with efficient content management and display.

By VrchStudio·Created 2 years ago·Updated 22 days ago· 356
VrchStudio/comfyui-web-viewer
Nodes63
On cloudLocal install
Categoryvrch.ai/control/osc, vrch.ai/viewer
Stars356
Updated22 days ago

Nodes (63)

ANY Value OSC Control @ vrch.ai

Control ComfyUI from a phone, a mixer, or any OSC sender

vrch.ai/control/osc
AUDIO Web Viewer Channel Loader @ vrch.ai

Grab an audio channel streaming through the web viewer

vrch.ai/viewer
AUDIO Concat @ vrch.ai

Stitch two audio clips together, crossfade optional

vrch.ai/audio
AUDIO Emotion Visualizer @ vrch.ai

Turn music moods into radar charts and word clouds

vrch.ai/audio
AUDIO Frequency Band Analyzer @ vrch.ai

Slice mic input down to the frequency band you actually want

vrch.ai/audio
AUDIO Get Genres @ vrch.ai

Ask ComfyUI what genre a track actually is

vrch.ai/audio
AUDIO Music to Emotion Detector @ vrch.ai

Turn a song into valence and arousal floats

vrch.ai/audio
AUDIO Recorder @ vrch.ai

Record your voice in the browser and hand ComfyUI real audio

vrch.ai/audio
AUDIO Saver @ vrch.ai

Save the audio your workflow made, your way

vrch.ai/audio
AUDIO Visualizer @ vrch.ai

Draw a live waveform and spectrum from your mic

vrch.ai/audio
AUDIO WebSocket Channel Loader @ vrch.ai

Low-latency audio over WebSocket

vrch.ai/viewer/websocket
AUDIO Web Viewer @ vrch.ai

Stream audio to a browser tab with a visualizer attached

vrch.ai/viewer
BOOLEAN Key Control @ vrch.ai

A hotkey that flips a boolean mid-workflow

vrch.ai/control/keyboard
AUDIO BPM Detector (Experimental) @ vrch.ai

Let the music set the pace of your generation

vrch.ai/audio
CHANNEL OSC Control @ vrch.ai

On/off a channel from an OSC message

vrch.ai/control/osc
CHANNEL x4 OSC Control @ vrch.ai

Four OSC channels, four switches, one node

vrch.ai/control/osc
DELAY @ vrch.ai

The DELAY node that keeps a realtime graph honest

vrch.ai/logic
DELAY OSC Control @ vrch.ai

Steer the DELAY node with a physical fader over OSC

vrch.ai/control/osc
FLOAT Key Control @ vrch.ai

Scrub a float with your keyboard, zero hardware required

vrch.ai/control/keyboard
FLOAT OSC Control @ vrch.ai

A phone fader that becomes any float in your workflow

vrch.ai/control/osc
FLOAT Remap @ vrch.ai

Stretch any control value into any range — pure math, no servers

vrch.ai/logic
Gamepad Loader @ vrch.ai

Plug in a gamepad, drive a live portrait — the pack's showstopper

vrch.ai/control/gamepad
IMAGE Web Viewer Channel Loader @ vrch.ai

Grab the image that's on screen and feed it back into the graph

vrch.ai/viewer
IMAGE Fallback @ vrch.ai

Never let a dead frame blank out your realtime pipeline

vrch.ai/image
IMAGE Flipbook Web Viewer @ vrch.ai

A browser slideshow of your latest frames, fades included

vrch.ai/viewer
IMAGE Preview in Background @ vrch.ai

Turn your desktop into the canvas — preview images as a background

vrch.ai/image
IMAGE Preview in Background (Legacy) @ vrch.ai

The channel-aware background preview — the legacy one, and fine

vrch.ai/image
IMAGE Saver @ vrch.ai

Save your frames with your own filename — the archivist's node

vrch.ai/image
IMAGE Switch OSC Control @ vrch.ai

A phone's radio buttons choose which image is live

vrch.ai/control/osc
IMAGE WebSocket Channel Loader @ vrch.ai

Read the image a WebSocket viewer is showing, placeholder included

vrch.ai/viewer/websocket
IMAGE Filter Settings @ vrch.ai

Apply CSS-style filters to a WebSocket display without re-rendering

vrch.ai/viewer/websocket
IMAGE WebSocket Settings @ vrch.ai

The config node that controls how the WebSocket viewer behaves

vrch.ai/viewer/websocket
IMAGE WebSocket Web Viewer @ vrch.ai

The lean WebSocket viewer — display images, let a settings node do the rest

vrch.ai/viewer/websocket
IMAGE WebSocket Web Viewer (Legacy) @ vrch.ai

The all-in-one WebSocket viewer — legacy, and how you'll know it

vrch.ai/viewer/websocket
IMAGE Web Viewer @ vrch.ai

The IMAGE Web Viewer — the node that gives the pack its name

vrch.ai/viewer
Instant Queue Key Control @ vrch.ai

Press a key, kick off a generation — the performance trigger

vrch.ai/control/keyboard
INT Key Control @ vrch.ai

Change an integer from the keyboard, mid-generation

vrch.ai/control/keyboard
INT OSC Control @ vrch.ai

A fader on your phone, driving any integer in your graph

vrch.ai/control/osc
INT Remap @ vrch.ai

The boring node that makes every live control usable

vrch.ai/logic
JSON URL Loader @ vrch.ai

Pulling live JSON into your ComfyUI graph

vrch.ai/text
JSON WebSocket Channel Loader @ vrch.ai

Receiving JSON from another machine, live

vrch.ai/viewer/websocket
JSON WebSocket Sender @ vrch.ai

Pushing JSON over a WebSocket channel

vrch.ai/viewer/websocket
LATENT WebSocket Channel Loader @ vrch.ai

Receiving latents from another machine, ready to sample

vrch.ai/viewer/websocket
LATENT WebSocket Sender @ vrch.ai

Streaming your latents to another machine

vrch.ai/viewer/websocket
AUDIO Microphone Loader @ vrch.ai

Feed your microphone into ComfyUI as live numbers

vrch.ai/audio
MIDI Device Loader @ vrch.ai

Tame your MIDI controller and map it to your workflow

vrch.ai/control/midi
3D MODEL Web Viewer @ vrch.ai

Pop out a 3D model in a browser window from your workflow

vrch.ai/viewer
OSC Control Settings @ vrch.ai

One place to set your OSC server, so the rest stay sane

vrch.ai/control/osc
QR Code Generator @ vrch.ai

Point a phone at the screen, get your viewer URL

vrch.ai/logic
SWITCH OSC Control @ vrch.ai

Eight OSC toggles, one node, zero mouse

vrch.ai/control/osc
TEXT Concat OSC Control @ vrch.ai

Build a prompt by flipping tags on a tablet

vrch.ai/control/osc
TEXT Key Control @ vrch.ai

Cycle up to eight prompts with a single key

vrch.ai/control/keyboard
TEXT SRT Player @ vrch.ai

A teleprompter for your prompts

vrch.ai/text
TEXT Switch OSC Control @ vrch.ai

Radio buttons for your prompts

vrch.ai/control/osc
Trigger Toggle @ vrch.ai

The latch that turns a pulse into a state

vrch.ai/logic
Trigger Toggle x4 @ vrch.ai

Four latched switches in one node

vrch.ai/logic
Trigger Toggle x8 @ vrch.ai

Eight latched switches for the full control deck

vrch.ai/logic
VIDEO Web Viewer @ vrch.ai

Play your generated video in a popped-out browser window

vrch.ai/viewer
WebSocket Server @ vrch.ai

The quiet engine behind ComfyUI Web Viewer's real-time browser streaming

vrch.ai/viewer/websocket
Web Viewer @ vrch.ai

Put your generations in any browser tab, live

vrch.ai/viewer
Xbox Controller Mapper @ vrch.ai

Drive ComfyUI with an Xbox pad instead of a mouse

vrch.ai/control/gamepad
XY OSC Control @ vrch.ai

XY OSC Control explained

vrch.ai/control/osc
XYZ OSC Control @ vrch.ai

XYZ OSC Control for when XY isn't enough

vrch.ai/control/osc
Readme

ComfyUI Web Viewer

Ask DeepWiki

The ComfyUI Web Viewer by vrch.ai is a custom node collection offering a real-time AI-generated interactive art framework. This utility integrates realtime streaming into ComfyUI workflows, supporting keyboard control nodes, OSC control nodes, sound input nodes, and more. Accessible from any device with a web browser, it enables real time interaction with AI-generated content, making it ideal for interactive visual projects and enhancing ComfyUI workflows with efficient content management and display.

✨ Features:

  • Real-Time AI Generation & Interaction: Immediate response for interactive creativity.
  • Multi-Input Support: Easily integrates keyboard, OSC, and audio input for versatile interactivity.
  • Universal Web Accessibility: Compatible with any device equipped with a web browser.

🔗 Related Projects:

  • Comfyputer: 3D Printable & Portable DIY AI Computer for running ComfyUI - Coming Soon on Github
  • Agentic VJ: Real-time Visual Generation with Multi-modal Agents for Live Performances - Integrated with ComfyUI Web Viewer nodes. Releasing Soon on vrch.ai/vj and CES 2026!

🚀 Support Us:

If you find the ComfyUI Web Viewer useful or inspiring, consider supporting us:

  • 💖 Sponsor: Help us maintain and enhance the project through GitHub Sponsors.
  • Star the Project: A star on GitHub greatly motivates us and helps increase visibility!
  • 📩 Business Inquiries: For commercial collaborations, reach us at [email protected].
<video src="https://github.com/user-attachments/assets/cdac0293-64ce-4b74-95a8-d4dcce2300d2" controls="controls" style="max-width: 100%;"> </video>

Changelog

see CHANGELOG

Installation

Install ComfyUI Web Viewer Custom Node

Method 1: Auto Installation (Recommended)

Simply search for ComfyUI Web Viewer in ComfyUI Manager and install it directly.

Method 2: Manual Installation

  1. Clone this repo into the custom_nodes directory of ComfyUI
    git clone [email protected]:VrchStudio/comfyui-web-viewer.git
    
  2. Install dependencies:
    pip install -r requirements.txt
    
    or if you use the windows portable install, run this in ComfyUI_windows_portable folder:
    python_embeded\python.exe -m pip install -r ComfyUI\custom_nodes\comfyui-web-viewer\requirements.txt
    
  3. Restart ComfyUI

Install Music2Emotion Plugin (Optional)

To use the AUDIO Music to Emotion Detector @ vrch.ai node, you'll need to install the Music2Emotion third-party module:

  1. Navigate to the ComfyUI Web Viewer directory:

    cd path/to/ComfyUI/custom_nodes/comfyui-web-viewer
    
  2. Initialize and download the Music2Emotion submodule:

    git submodule update --init --recursive
    

    Alternatively, you may maunally install it as follows:

    cd path/to/ComfyUI/custom_nodes/comfyui-web-viewer/third_party
    git clone https://github.com/VrchStudio/Music2Emotion.git music2emotion
    
  3. Install dependencies using the main project's requirements.txt:

    pip install -r requirements.txt
    

    or for Windows portable install:

    python_embeded\python.exe -m pip install -r ComfyUI\custom_nodes\comfyui-web-viewer\requirements.txt
    

    ⚠️ Important: Always use the main project's requirements.txt instead of the third-party module's requirements file to avoid dependency conflicts. The ComfyUI Web Viewer's requirements.txt already includes all necessary Music2Emotion dependencies with compatible versions.

  4. Restart ComfyUI

Note: If the Music2Emotion module is not installed, the emotion detection node will show a warning message but remain functional for workflow compilation. Other audio nodes will work normally without this optional dependency.

How to Use

Web Viewer Nodes

WebSocket Web Viewer Nodes

OSC Control Nodes

Key Control Nodes

Gamepad Nodes

Midi Device Nodes

MIDI Control Nodes

Audio Nodes

Image Nodes

Logic Nodes

Model Nodes

  • TensorRT Auto Loader with lazy PyTorch fallback and residual ControlNet qualification
  • Checkpoint CLIP-only Loader for prompt changes without an unused checkpoint UNet
  • ControlNet Loader with CPU construction/offload safety for high-VRAM TensorRT workflows
  • TAESD Memory Profile for bounded encode/decode scheduling estimates
  • Documentation: Usage of Model nodes

Text Nodes

Other Example Workflows

Troubleshootings

1. Image Not Displayed in Popped-Up Image Viewer Window

For Chrome, you may need to add the ComfyUI server's IP address manually in chrome://flags/#unsafely-treat-insecure-origin-as-secure to enable access to the content. For other browsers, an http-to-http setup should allow for seamless access without additional configuration.


2. How can I resolve the CORS policy error when trying to display images?

If you’re encountering a CORS policy error with a message like this:

"origin 'https://vrch.ai' has been blocked by CORS policy: No 'Access-Control-Allow-Origin' header is present on the requested resource"

or

"WARNING: request with non matching host and origin 127.0.0.1 !=vrch.ai, returning 403"

you can resolve this by launching the ComfyUI service with the --enable-cors-header flag appended. For example:

python main.py --enable-cors-header

For additional details, refer to this discussion on GitHub.


3. How can I fix FFmpeg errors in audio nodes?

The audio recorder and WebSocket audio nodes need both:

  • the FFmpeg command line tool installed and available on PATH;
  • the Python package ffmpeg-python, which provides the ffmpeg.input(...) API.

If you see [Errno 2] No such file or directory: 'ffmpeg', install FFmpeg for your operating system and make sure the ffmpeg command works in the same terminal or Python environment used to start ComfyUI.

If you see AttributeError: module 'ffmpeg' has no attribute 'input', the wrong Python package may be installed. Remove the ffmpeg package and install the project requirements again so that ffmpeg-python is used:

pip uninstall ffmpeg
pip install -r requirements.txt

For Windows portable installs, run the same commands with the embedded Python from your ComfyUI_windows_portable folder:

python_embeded\python.exe -m pip uninstall ffmpeg
python_embeded\python.exe -m pip install -r ComfyUI\custom_nodes\comfyui-web-viewer\requirements.txt

4. Why can’t the ComfyUI service run at HTTPS/TLS/SSL on port 8189?

ComfyUI Web Viewer provides a build-in, self-signed certificate (intended for development only, not production use). To launch the ComfyUI service with HTTPS enabled on port 8189, use the following command:

# Start ComfyUI with HTTPS using the built-in certificate and key
python main.py --tls-keyfile ./custom_nodes/comfyui-web-viewer/https/key.pem --tls-certfile ./custom_nodes/comfyui-web-viewer/https/cert.pem --port 8189 --listen

For more details, refer to the ComfyUI official instructions.

Version Update

This project uses bump2version for version management. To update the version:

  1. Ensure you have bump2version installed:
    pip install bump2version
    
  2. To update the version, run:
    python update_version.py [major|minor|patch]
    
    Replace [major|minor|patch] with the part of the version you want to increment.
  3. This will automatically:
    • Update the version number in __init__.py
    • Update the CHANGELOG.md file
    • Create a new git commit and tag (if you're using git)
  4. After running the script, review and update the CHANGELOG.md file with details about the new version's changes.
    • Note: make sure you've put changes in Unreleased section manually

Contributing

Created and maintained by the vrch.io team.

Contributions are welcome! Please feel free to submit a Pull Request.

Acknowledgements

Thanks to these community contributors:

Contact Us

For any inquiries, you can contact us at [email protected].

Star History

Star History Chart

License

MIT License