Nodes/Frog Node Pack/🐸 Toggle Pack
ComfyUI Node

🐸 Toggle Pack

Gate your prompt sources without rewiring

By RabbitThatIsPinkΒ·Created 3 months agoΒ·Updated 24 days agoΒ· 1
🐸 Toggle Pack
    • toggle_pack
    β—„taggerfalseβ–Ί
    β—„rafflefalseβ–Ί
    β—„florence2falseβ–Ί
    β—„scenefalseβ–Ί

    This is a node about workflow ergonomics, not pixels. 🐸 Toggle Pack exists for the person who has multiple annotation sources in their pipeline - a tagger, a raffle picker, a Florence2 captioner, a scene node - and is sick of muting and unmuting nodes by hand every time they want a different combination in the final prompt.

    It's four boolean widgets - tagger, raffle, florence2, scene - packed into a single ANIMA_TOGGLES wire. That's the entire node. You flip the switches on the canvas, and the wire carries the four on/off states to whichever Frog prompt node is consuming it. 🐸 Prompt Merge reads those flags to decide which of its optional inputs actually get included; 🐸 Prompt Processor does the same for its raffle, scene, and tagger inputs.

    Why bother with a dedicated node instead of just muting nodes? Two reasons. First, mute is all-or-nothing per node and doesn't survive reorganizing a graph well - you end up with bypassed nodes scattered across the canvas and no single place to see "what am I using right now?" Second, the toggle pack turns the decision into a value you can control from one spot. The README's framing is exactly right: when you have multiple captioning or annotation nodes and want to switch them on and off without rewiring, this bundles the switches.

    The mechanism is dead simple in the source: pack() returns a plain dict like {"tagger": True, "raffle": False, ...}. There's no magic, no state - the flags are read at execution time by the downstream node. And because it's just a dict on a typed wire, you can't wire it into the wrong socket without ComfyUI complaining.

    Here's the behavior to understand before you use it: no toggle pack wired = everything excluded. In Prompt Merge, if the toggle_pack input is unwired, all optional merge inputs default to off and only the base string_input flows through. So this node isn't optional garnish - in the Merge workflow it's the switch that decides whether your Florence2 caption or your scene description ever reaches the prompt at all. Wire it, flip what you want on, done.

    The one thing that catches people: this gates which string inputs get merged, it doesn't mute the annotation nodes themselves. Your Florence2 node still runs and still burns its VRAM; the toggle just decides whether its text gets included downstream. If you're trying to save compute, this isn't the tool - mute or bypass the source node for that. If you're trying to save your sanity during experimentation, it's perfect.

    Installing it

    Ships in Frog Node Pack with everything else:

    • ComfyUI Manager: search Frog Node Pack, install, restart.
    • Manual: cd ComfyUI/custom_nodes && git clone https://github.com/RabbitThatIsPink/FrogNodePack, restart, hard-refresh (Ctrl+Shift+R).

    No pip dependencies - the pack's requirements.txt is empty, and Pillow (its only library) ships with ComfyUI. Find 🐸 Toggle Pack under 🐸 Node Pack/Utility.

    Common issues

    The typical "it's not working" report is a wiring one: you flipped the toggle on but forgot to connect the toggle_pack output to Prompt Merge's toggle_pack input, so the flag never reaches the merge. The node itself is trivial and stable - not on the README's WIP list - so when something's off, it's almost always the connection, not the node.

    Category🐸 Node Pack/Utility

    Inputs (4)

    NameTypeDefaultDescription
    taggerBOOLEANfalseβ€”
    raffleBOOLEANfalseβ€”
    florence2BOOLEANfalseβ€”
    sceneBOOLEANfalseβ€”

    Outputs (1)

    NameTypeDescription
    toggle_packANIMA_TOGGLESβ€”