WorkflowUI Plugin

A ComfyUI custom node that adds HTTP API endpoints for media (output/input/temp) so the WorkflowUI application can delete files on the ComfyUI server, browse media, and serve images with optional previews—without adding any graph nodes to the ComfyUI UI.

⚠️ This custom node is a plugin for: WorkflowUI


Features

  • Delete media — Remove output/input/temp files by filename and subfolder (used when deleting remote run images from WorkflowUI).
  • View media — Serve image, video, and audio files with caching; optional compressed image previews (WebP/JPEG or custom size).
  • List & browse — Flat file list or one-level folder tree (JSON metadata only, no binary data) for building file-manager UIs.
  • Capabilities & version info — Endpoints to detect the plugin and report installed custom node modules/versions for run metadata.

Installation

  1. Copy the WorkflowUIPlugin folder into your ComfyUI custom_nodes directory:

    ComfyUI/custom_nodes/WorkflowUIPlugin/
    ├── __init__.py
    ├── routes.py
    ├── version_info.py
    └── README.md
    
  2. Restart ComfyUI. A startup banner confirms the plugin loaded.


API Reference

Method Path Description
POST /delete Delete a file by filename / subfolder / type. Same as namespaced path below.
POST /workflowui/media/delete Delete a file (JSON body: filename, optional subfolder, type).
GET /workflowui/media/view Serve file bytes (images, video, audio). Query: filename, subfolder, type; optional preview=webp | jpeg | 256 for image previews.
GET /workflowui/media/list Flat list of files in a folder (JSON: filename, size, mtime). Query: type, subfolder.
GET /workflowui/media/tree One-level tree: folders and files for browsing. Query: type, subfolder.
GET /workflowui/media/capabilities Returns supported features (e.g. workflowui_plugin, delete, list, tree, view, view_preview).
GET /workflowui/version_info Plugin version and list of installed custom node modules/versions for run metadata.

Delete (POST)

Request body (JSON):

  • filename (required) — e.g. ComfyUI_00001_.png
  • subfolder (optional) — e.g. "" or "audio"
  • type (optional) — "output" (default), "input", or "temp"

Response: 200 with {"ok": true} on success; 400 / 404 / 500 with {"ok": false, "error": "..."} on failure.

View & preview

  • View — Serves the file from disk with Cache-Control: public, max-age=3600.
  • Preview (images only) — Add &preview=webp, &preview=jpeg, or &preview=256 (or any size 64–2048) for a resized/compressed image. Non-image files ignore preview and return the original.

List & tree

  • List — Flat list of files with filename, size, mtime (newest first).
  • Tree — One level: folders (subfolder names) and files (with filename, size, mtime). Use for file-manager style browsing.

Security

  • Paths are restricted to ComfyUI’s output/input/temp roots via folder_paths.get_directory_by_type().
  • subfolder and filename are validated to prevent directory traversal (.., path separators in filename).

Compatibility

  • ComfyUI — Uses folder_paths.get_directory_by_type() and PromptServer.instance.routes.
  • WorkflowUI — Works with the existing backend that calls POST /delete with the same JSON shape; no backend change required when the plugin is installed.

License

See repository license.

S
Description
No description provided
Readme AGPL-3.0
186 KiB
Languages
Python 100%