Nodes/HordeAI/AI Horde Textual Inversion
ComfyUI Node

AI Horde Textual Inversion

Using textual inversions on the AI Horde

By Malte0621·Created 12 months ago·Updated 12 months ago· 0
AI Horde Textual Inversion
  • tis_list
  • textual_inversions
ti_name72437
inject_tinegprompt
strength1.0

Textual inversions are the weird little survivors of the adapter world: a 10–80 KB embedding file that binds a trigger word to a direction in the text encoder's space, without ever touching the model's weights. On the AI Horde, you don't upload that file anywhere - the AI Horde Textual Inversion node packs a CivitAI ID into the job, and the remote worker fetches and applies the embedding itself. Same remote-reference pattern as the pack's LoRA node, just for embeddings.

Given how the Horde works, that's the only sane way to do it: your local embeddings folder doesn't exist on a stranger's GPU, so you point at a hosted ID instead.

The inputs that matter

  • ti_name - the CivitAI identifier (default 72437), same validation caveat as LoRAs: the node checks nothing, so a bad ID gets sent up and the worker quietly fails or ignores it.
  • inject_ti - prompt or negprompt, where the embedding gets injected. The default is negprompt, and that's the smart default.
  • strength (0.0–5.0) - how hard the embedding pushes. Note this range goes higher than the LoRA node's 2.0 cap.
  • tis_list (optional) - append to an existing list. Chain multiple nodes through this input to stack several inversions, then run the final output into the AI Horde Image Generate node's textual_inversions socket.

Output is a single textual_inversions socket of type TIS_LIST, which plugs only into that Generate node.

Why negprompt being the default is correct

The embedding ecosystem has collapsed since the technique's heyday - new textual inversions are running at roughly a twentieth of the 2024 publication rate, and what still ships is almost entirely negative embeddings and SD 1.5/SDXL-lineage anime work. In practice, on the Horde, that means the most useful thing you'll do with this node is stack a couple of quality-badger embeddings into the negative prompt path: bad anatomy, bad hands, low quality, that sort of thing. The default of negprompt matches reality better than the other option, which is rare for a default.

There's a subtler trap worth naming, straight from how embeddings behave: nothing ever warns you when one doesn't apply. An embedding trained against an old CLIP text encoder just... doesn't bind to a newer model, and its filename gets read as ordinary prompt text. The Horde won't tell you either - you'll get an image that merely contains the word. If your inversion seems to do nothing, that's probably it, and it's not the node's fault.

Installing

Same as the rest of the Malte0621/hordeai-comfy pack: ComfyUI Manager → search "HordeAI" → install → restart, or git clone https://github.com/Malte0621/hordeai-comfy into ComfyUI/custom_nodes plus pip install -r requirements.txt. The meaningful dependency is horde-sdk, and this node - like its packmates - raises a clear error at runtime if it's missing, rather than failing silently at import.

A thin node for a shrinking niche, but if you've got a favorite negative embedding you refuse to give up, this is the only way to keep using it on a Horde workflow.

CategoryAI Horde

Inputs (4)

NameTypeDefaultDescription
ti_nameSTRING72437Textual Inversion name or ID (e.g., 72437)
inject_tiCOMBOnegpromptWhere to inject the textual inversion (prompt or negprompt)
strengthFLOAT1.00–5Textual inversion strength (0.0-5.0)
tis_listoptTIS_LISTOptional existing Textual Inversion list to append to

Outputs (1)

NameTypeDescription
textual_inversionsTIS_LIST