π± Artha Gemini Form
Tick the muscles you want and get a fitness description
- image
- form
Artha Gemini Form is the fitness tracker of the Artha character pipeline. Where its sibling nodes give you dropdowns, this one gives you seventeen boolean toggles - chest, shoulders, arms, biceps, triceps, forearms, abs, core, obliques, back, lats, traps, legs, quadriceps, hamstrings, calves, glutes - and each one you flip on adds a canned, professionally-written descriptor to the form object that Artha Gemini Portrait folds into your character prompt. Flip on abs, and "abs" becomes something like "well-defined abdominal muscles" in the final description without you having to write a word of anatomy prose.
It's the simplest node in the character set to understand, which is exactly what makes it the easiest one to underestimate. It's also the one most people forget to use - because a fitness description isn't an obvious prompt ingredient until you see the output.
How it works
There's no combo-box vocabulary here, just the seventeen toggles. Under the hood, each toggle maps to a pre-written descriptor stored in the pack's profile.json - so CHEST becomes a full phrase about chest development, LATS becomes one about a defined back, and so on. Flip several and you get a form dict of muscle-group descriptors, which Portrait renders into prose with a "FORM" prefix per attribute. If use_image is on and an image is connected, it skips the toggles entirely and asks Gemini to assess the subject's fitness from the photo instead - that's the only mode that requires an API key; the toggle path is purely local.
The output is a single form output (type ARTHAFORM), wired into Portrait's form input. You'll normally use Form in combination with Face, Body, Cloth, and Makeup, but there's no rule against using it alone.
The honest take
The canned descriptors are the feature and the limitation at once. They're consistent - no random flab about "muscle tone" depending on the model's mood that day - which is great for reproducible characters. But they're generic fitness language, not bespoke. You're not going to describe an unusual physique with these toggles; you're going to describe "the fit person archetype" with more or fewer boxes ticked. If you need something specific like "sinewy climber's build with developed forearms and a lean torso," tick forearms and core, accept the approximation, and add your own clause in Portrait's text_prompt.
The bigger gotcha is the same one that hits the whole pack: the use_image path costs an API call per execution, and failures are swallowed - an empty form output with the error printed to the ComfyUI console is the signature. And remember that flipping use_image on without an image just falls back to the toggle path silently, which is forgiving but can confuse you into thinking vision mode ran when it didn't.
Install
Shared with every node in the π± pack:
cd ComfyUI/custom_nodes
git clone https://github.com/Cyrostar/ComfyUI-Artha-Nodes
cd ComfyUI-Artha-Nodes
pip install -r requirements.txt
Restart ComfyUI, or install via ComfyUI Manager (search "Artha"). Toggle mode needs no key at all. If you want vision mode, grab a Gemini key from Google AI Studio and drop it in the pack's api.json so it doesn't sit in plaintext on the node.
Inputs (23)
| Name | Type | Default | Description |
|---|---|---|---|
| chest | BOOLEAN | false | β |
| shoulders | BOOLEAN | false | β |
| arms | BOOLEAN | false | β |
| biceps | BOOLEAN | false | β |
| triceps | BOOLEAN | false | β |
| forearms | BOOLEAN | false | β |
| abs | BOOLEAN | false | β |
| core | BOOLEAN | false | β |
| obliques | BOOLEAN | false | β |
| back | BOOLEAN | false | β |
| lats | BOOLEAN | false | β |
| traps | BOOLEAN | false | β |
| legs | BOOLEAN | false | β |
| quadriceps | BOOLEAN | false | β |
| hamstrings | BOOLEAN | false | β |
| calves | BOOLEAN | false | β |
| glutes | BOOLEAN | false | β |
| use_image | BOOLEAN | false | β |
| api_key | STRING | API key will be visible in plain text. Consider adding your api to the api.json located inside this custom node folder. | |
| model | COMBO | gemini-2.5-flash | 5 options: gemini-2.5-pro, gemini-2.5-flash, gemini-2.5-flash-lite, gemini-2.0-flash, gemini-2.0-flash-lite |
| max_tokens | INT | 50001β8192 | For Gemini models, a token is equivalent to about 4 characters. 100 tokens is equal to about 60β80 English words. |
| temperature | FLOAT | 0.70β2 | A temperature of 0 means only the most likely tokens are selected. Higher values increase randomness. |
| imageopt | IMAGE | β |
Outputs (1)
| Name | Type | Description |
|---|---|---|
| form | ARTHAFORM | β |