ComfyUI Node

FormSubmitNode

One place to park every LLM API key

By pictorialink·Created about a year ago·Updated about a year ago· 1
FormSubmitNode
    • string
    type
    api_key
    api_version
    api_base
    api_model

    The name is a lie in the best way: FormSubmitNode doesn't submit anything to any server, and it never calls an LLM API. It's a credential-parking spot. You pick a provider, paste your key, hit run, and the node stuffs those values into environment variables inside the ComfyUI process and into a shell file on disk. That's the whole job - and for a narrow slice of workflows, it's exactly what you want.

    Why you'd install it

    Here's the honest framing: this pack contains exactly one node, and that node only writes config. Nothing in the pack reads it back. So its usefulness depends entirely on you having something else that consumes api_key, api_base, and friends from the environment - a custom node that calls an LLM for prompt rewriting, captioning, or image-to-prompt, or your own script.

    If you do have that consumer, the appeal is obvious: instead of hardcoding your key into every node or pasting it into each workflow you share, you run this once and downstream code finds it via os.getenv("api_key"). The provider list tells you who the author had in mind - Doubao, Kimi, DeepSeek, and Qwen sit alongside OpenAI and Claude. That's a China-market-friendly lineup (the README is Chinese-first), which is a niche but real convenience if you juggle several of those APIs.

    The inputs that matter

    All five inputs are required, and four of them are plain text boxes:

    • type - pick your provider from the dropdown: Doubao, Qwen, OpenAI, Kimi, DeepSeek, or Claude. This becomes llm_type in the environment.
    • api_key - your key. The field that matters most, and the one you should be careful about (more below).
    • api_base - the endpoint URL. Leave it blank if you're hitting a provider's default; set it only for proxies, gateways, or self-hosted deployments.
    • api_version - mostly Azure-style version strings or gateway junk. For most people this stays empty.
    • api_model - the model name string (think deepseek-chat, gpt-4o) that downstream code will actually call with.

    The single output, a STRING named string, is vestigial: the node always returns an empty string. Don't wire it into anything expecting text.

    How it actually works

    Running the node does three things, and the source is worth checking because the README gets one bit wrong. It sets five environment variables in the ComfyUI server process (llm_type, api_key, api_version, api_base, api_model), then writes them out as export lines to custom_nodes/ComfyUI-Custom-Node-Config/files/config.sh. Note the mismatch: the README claims it saves a config.json, but the code writes a shell script full of export statements. README rot, classic. The file also isn't JSON, so don't go parsing it with a JSON reader.

    The node is flagged as an output node, so it terminates a branch and runs when you queue the graph. You'll also spot dead imports (aiohttp.web, PromptServer, json) and a README FAQ about missing HTML forms - the author clearly wanted a real form UI, discovered ComfyUI only renders standard INPUT_TYPES widgets, and shipped this instead. Fine. It works.

    How to install it

    cd ComfyUI/custom_nodes
    git clone https://github.com/pictorialink/ComfyUI-Custom-Node-Config
    

    Then restart ComfyUI. It's also findable through ComfyUI Manager if you search the pack title. Good news: there's no requirements.txt and no model downloads - this pack has zero dependencies beyond Python's stdlib.

    Where people get burned

    • Env vars don't escape the process. They only exist inside the running ComfyUI server, and only after the node has executed. Downstream Python nodes in the same workflow see them; a separately-launched script does not, unless you source files/config.sh first. And nothing survives a ComfyUI restart.
    • Your key is plaintext everywhere. It's a widget value, so it's embedded in your workflow JSON, and it's written in the clear to config.sh on disk. Share that workflow and you've shared the key.
    • Trust matters. Custom nodes execute arbitrary Python with your user-level permissions, and the community has a documented horror story (the ComfyUI LLMVISION malware that ended in a federal prosecution). This node is only a config dumper so the risk surface is small, but install it from the real repo, not some repackaged copy.

    Honest bottom line: it's a ~10-line node that a competent Python user could write in five minutes. But if you're not that user and you want one visible, clickable place to enter LLM credentials, FormSubmitNode does it without fuss. Treat it as a personal convenience, not infrastructure.

    CategoryForm Submit

    Inputs (5)

    NameTypeDefaultDescription
    typeCOMBO6 options: Doubao, Qwen, OpenAI, Kimi, DeepSeek, Claude
    api_keySTRING
    api_versionSTRING
    api_baseSTRING
    api_modelSTRING

    Outputs (1)

    NameTypeDescription
    stringSTRING