ComfyUI Extension: BV Node Pack
A ComfyUI node pack with utility and workflow nodes: a flexible config-driven Pipe system plus Subgraph-friendly UI nodes (Heading, Spacer, Divider) with dynamic JavaScript rendering.
Custom Nodes (0)
README
BV Node Pack (ComfyUI)
A curated collection of quality-of-life, UI, and prompting nodes for ComfyUI, with a strong focus on:
- clean graph layouts
- Subgraph/Subflow compatibility
- metadata-driven pipelines
- AST-based prompt tooling (no fragile string parsing)
ā ļø Important This pack includes JavaScript UI extensions for dynamic node behavior. These extensions fully support Subgraphs / Subflows.
š Table of Contents
- Installation
- Update & Uninstall
- Node Overview
- Prompt AST Syntax & Markup Guide
- Example application for AST
- Quick Start (BV Pipe)
- Notes & Design Principles
- Changelog
Installation
Clone into your ComfyUI custom_nodes folder:
cd ComfyUI/custom_nodes
git clone https://github.com/BlackVortexAI/bv_nodepack.git
Restart ComfyUI and hard-refresh the browser:
Ctrl + F5
Update & Uninstall
Update
cd ComfyUI/custom_nodes/bv_nodepack
git pull
Restart ComfyUI (recommended).
Uninstall
- Delete the folder in
custom_nodes - Restart ComfyUI
- Hard refresh the browser (Ctrl + F5)
Node Overview
Nodes are grouped by functional category. Each section below can be read independently.
Pipe Nodes
<details> <summary><strong>BV Pipe Config</strong></summary>Defines the slot layout (names) for a BV Pipe.
Screenshot
Shows the BV Pipe Config node with a multiline list of slot names.
What it does
- Define slot names (1 per line, max 100)
- Outputs a single
BV_PIPEobject (the "pipe")
How to use
- Add BV Pipe Config
- Enter slot names (one per line)
- Connect its
pipeoutput to BV Pipe
A config-driven carrier node that forwards one pipe connection while exposing named slots.
Screenshots
Connected state (slots visible)
Slot override example
Subgraph usage
What it does
- Shows only the slots defined by the connected BV Pipe Config
- Allows overriding individual slots
- Passes through all untouched slots
UI / Layout Nodes
<details> <summary><strong>BV Subgraph Heading</strong></summary>A UI node that renders a bold header text inside the node.
Designed specifically for Subgraphs/Subflows: When exposed, the heading is also rendered on the Subgraph node itself.
Screenshots
Heading inside normal graph
Heading inside Subgraph
Heading rendered on Subgraph node
Editing the heading text (click on header text to edit)
Inputs
value(STRING) ā header textfont_size(INT) ā font sizeshow_divider(BOOLEAN) ā optional divider
A UI-only spacer node used to add vertical whitespace.
Screenshots
Normal graph
Inside Subgraph
Subgraph node view
Editing the spacer height (click on spacer to edit)
Inputs
height(INT) ā spacer height in pixelsscale(FLOAT, optional) ā multiplier
A UI-only divider node that draws a horizontal separator line.
Screenshots
Divider in graph
Divider inside Subgraph
Divider rendered on Subgraph node
Inputs
thickness(INT)padding(INT)alpha(FLOAT)
Prompt / AST Nodes
<details> <summary><strong>BV Prompt Encode</strong></summary>These nodes operate on a structured AST (Abstract Syntax Tree), not on raw strings. This allows safe filtering, switching, inspection, and refactoring of prompts.
Purpose
- Parses a tagged prompt into an AST
Input
prompt(STRING, multiline)
Output
ast(BV_AST)cleaned_prompt(plain text, no markup, no comments)
Screenshot
</details> <details> <summary><strong>BV Prompt Decode</strong></summary>Example output
Purpose
- Extracts plain text from the AST by category
Key Features
- Multi-category filtering
any/allmatching- Inheritance (parent categories)
- Optional prettify pass
- If no filter is set, all categories are displayed.
Screenshot
</details> <details> <summary><strong>BV Prompt AST Debug</strong></summary>Example output
Purpose
- Visual inspection of the AST
Features
- JSON pretty-print
- Readonly, scrollable output field
- Safe for large ASTs
Screenshot
</details> <details> <summary><strong>BV Prompt Category Switch</strong></summary>Example output
Purpose
- Enable / disable categories directly on the AST
- No string parsing
Features
- Enable categories
- Disable categories (wins over enable)
inheritandany/allmatching
Screenshot
</details>Example output
Prompt AST Syntax & Markup Guide
This section explains the exact prompt syntax that is parsed into the AST.
Default (no markup)
A beautiful landscape, sunset lighting
Block categories
@@style
cinematic lighting
@@subject
a woman in rain
Inline categories
a portrait with @<eye> green eyes @@ and @<hair> black hair @@
Nested inline categories
@<subject> a @<face> smiling woman @@ in rain @@
Comments
a portrait ## this is a comment
ā ļø Common Syntax Pitfalls (Important)
Category names must not contain spaces.
Inline categories are only recognized if the category name matches this pattern:
[a-zA-Z0-9_-]+
ā Invalid
@<clothing color> white dress @@
ā Valid
@<clothing_color> white dress @@
Closing inline categories (@@)
@@ closes one currently open inline category
Extra @@ without an open category are treated as literal text and will appear in the output
ā Invalid (too many closings)
@<clothing> long dress,@@@@
ā Valid
@<clothing> long dress,@@
Example application for AST
Beta Nodes
<details> <summary><strong>BV Control Center</strong> ā ļø BETA</summary>Centralized runtime control for mute / bypass states of node groups.
Key Features
- Group-based control
- Subgraph-compatible
- Dynamic UI reconfiguration
Screenshot
Configuration
Selected group
Define status
Columns are automatically expanded
After saving the configuration, the
BV Control CenterNode updates itself.
![]()
</details>Here is an example if, for example, Only Preview is active
Quick Start (BV Pipe)
- Add BV Pipe Config and enter slot names:
model
clip
vae
seed
prompt
- Connect:
BV Pipe Config (pipe) ā BV Pipe (pipe)
- Optionally override individual slots.
Notes & Design Principles
- Slot IDs are stable internally (
v_001ā¦v_100) - Labels are user-defined and dynamic
- UI nodes are rendered via JavaScript
- All UI nodes support Subgraphs / Subflows
- Prompt nodes operate on AST, not raw strings
Changelog
2026-01-02
- v0.0.19 ā Update README: add AST example image with embedded workflow
- v0.0.18 ā Add AST Prompting system
- v0.0.17 ā Changed toggle label system (
BV Control Center) - v0.0.16 ā Renamed inputs to avoid collisions
2026-01-01
- v0.0.15 ā Fix subgraph renaming bug
- v0.0.14 ā Widget fixes for subgraph usage
2025-12-31
- v0.0.13 ā Fix label inversion error
- v0.0.12 ā Fix input error
- v0.0.11 ā Reworked renaming logic
2025-12-30
- v0.0.10 ā Fix widget create event
2025-12-29
- v0.0.9 ā Fix subgraph issues
- v0.0.8 ā Major refactor to TypeScript
























