comfyui_venice_api_v3
ComfyUI custom node for Venice.ai text generation with E2EE support (v3 schema). Includes ECDH secp256k1 + AES-256-GCM end-to-end encryption for e2ee- models.
comfyui_venice_api_v3

A ComfyUI custom node for text generation using the Venice.ai API, built on the ComfyUI v3 node schema.
Features
- LLM Venice chat V.3 node — simple, clean interface for Venice.ai text generation
- Full support for End-to-End Encryption (E2EE) via Venice TEE (Trusted Execution Environment)
- Automatically enabled for
e2ee-*models - ECDH secp256k1 + HKDF-SHA256 + AES-256-GCM with per-chunk ephemeral key derivation
- Automatically enabled for
- Reasoning model support —
reasoning_effortparameter +strip_thinkingto get clean output - Vision support — optional image input for vision-capable models
- Dynamic model list fetched from the Venice catalog (cached locally, refreshes every 15 min)
- Errors returned as text output instead of crashing the workflow
Node inputs
| Input | Type | Default | Description | |---|---|---|---| | model | Combo | llama-3.3-70b | Text model to use | | system_prompt | String | — | Optional system prompt | | prompt | String | — | User message | | temperature | Float | 0.20 | Sampling temperature | | top_p | Float | 1.00 | Nucleus sampling | | max_completion_tokens | Int | 6000 | Max tokens (includes reasoning) | | reasoning_effort | Combo | none | none / low / medium / high | | seed | Int | 1 | Seed (min 1, supports randomize) | | strip_thinking | Boolean | true | Strip reasoning blocks from output | | include_venice_system_prompt | Boolean | false | Include Venice's built-in system prompt | | enable_vision | Boolean | false | Send image to vision-capable model | | use_e2ee | Boolean | false | Force E2EE (auto for e2ee- models) | | vision_image | Image | — | Optional image input |
Installation
-
Clone this repo into your ComfyUI
custom_nodesfolder:cd ComfyUI/custom_nodes git clone https://github.com/ThinkingBells/comfyui_venice_api_v3.git -
Install dependencies:
pip install -r comfyui_venice_api_v3/requirements.txt -
Set your Venice API key:
- Open ComfyUI and go to Settings (⚙️ gear icon, top right)
- Find the VeniceAI → API Key section
- Paste your key — it is saved automatically
- Your API key can be obtained at venice.ai → Account → API Keys
-
Restart ComfyUI. The node appears under the venice.ai category as LLM Venice chat V.3.
Requirements
- ComfyUI with v3 node API support (
comfy_api.latest) - Python packages:
requests,Pillow,numpy,ecdsa>=0.18.0,cryptography>=41.0.0
E2EE usage
Select any model whose ID starts with e2ee- (e.g. e2ee-qwen-2-5-7b-p) — E2EE is enabled automatically. You can also force it on any model by toggling use_e2ee = true.
For each request the node:
- Generates a fresh secp256k1 keypair (never reused).
- Fetches the TEE attestation from Venice (
/tee/attestation) with a random nonce. - Verifies the nonce in the response matches and that
debug_modeis nottrue. - Encrypts all messages (system + user) with ECDH → HKDF-SHA256 → AES-256-GCM.
- Sends
X-Venice-TEE-Client-Pub-Key,X-Venice-TEE-Model-Pub-KeyandX-Venice-TEE-Signing-Algo: ecdsaheaders. - Decrypts the streaming response chunk by chunk using the per-chunk ephemeral server key.
Error messages:
[E2EE Error] Model '...' does not support E2EE/TEE attestation— the selected model has no TEE support; disableuse_e2eeor select ane2ee-*model.[E2EE Warning] The server did not encrypt the response— the model accepted the attestation but returned the reply in plaintext; E2EE is not fully supported by that specific model.[E2EE Error] E2EE attestation nonce mismatch— the attestation response may be replayed or tampered; the request was aborted.
Credits
Based on DraconicDragon/ComfyUI-Venice-API (dev-v3schema branch).