ComfyUI Node

Embeddr Action

The Embeddr Action node is a Swiss-army knife for your library — if your library serves Lotus actions

By embeddr-net·Created 9 months ago·Updated 5 months ago· 0
Embeddr Action
  • artifact_id
  • artifact_ids
  • result_json
  • status
  • output_artifact_ids
  • text
  • error
action_id
payload_json{}

Embeddr Action is the "do anything the backend knows how to do" node of this pack. Where the other Embeddr nodes are fixed shapes - load, upload, search - this one is a dispatcher. You pick a Lotus action from a dropdown and it runs that action against your Embeddr instance, whatever that action happens to be. It exists because Embeddr's backend (the embeddr-cli server) exposes an open-ended capability system, and one fixed node can't anticipate every capability.

Here's the part that matters before you get excited: this node is only as useful as the actions your Embeddr instance actually exposes. If your backend has no Lotus actions configured, the dropdown is empty and the node will just report "No action selected." Check the backend's action list first - this is a power-user node, not a starter one.

How it works

The magic (and the complexity) is split between the frontend and the backend. When you add the node, the extension's UI fetches the list of Lotus actions from GET /api/v1/lotus/list?kind=action on your Embeddr server and populates the action_id dropdown. Select an action and the frontend reads that action's JSON schema and builds input widgets automatically - the node's shape literally changes based on what you picked.

At execution time, the node takes your payload_json (default {}), merges in whatever the auto-created widgets produced (widget values win over the raw JSON - the tooltip says so, trust it), sends it to the backend, and unpacks the response into five outputs: result_json (the full response), status ('ok', 'error', or 'pending'), output_artifact_ids (any artifact IDs the action returned), text (the primary content - caption, message, value), and error (empty on success).

Two inputs worth knowing: artifact_id and artifact_ids (both the custom EMBEDDR_ARTIFACT_ID type) are passed through into the payload as artifact_id / artifact_ids respectively, so you can wire a loaded artifact straight into an action. The capability schemas are cached for about 30 seconds, so the dropdown refresh isn't hammering the server every run.

Install & gotchas

This is part of the embeddr-comfyui pack, so the install story is the pack's: install embeddr-cli, run embeddr serve, then get the pack via ComfyUI Manager (search "embeddr") or a release download into custom_nodes, and restart ComfyUI. The declared Python dependency is only requests - everything else comes from your ComfyUI host.

The realistic failure modes are all "the backend isn't where I think it is." If nothing populates in the dropdown, your Embeddr server isn't running or isn't reachable at the default http://localhost:8003 - set embeddr_url in the pack's config.json or EMBEDDR_BACKEND_URL in the environment. And if your action expects certain fields, wire them via the generated widgets rather than hand-editing payload_json; the merge order guarantees your widgets override the JSON, which is the behavior you want once you've connected real graph values.

It's a genuinely neat node if you're running Embeddr with custom actions - one node where you'd otherwise need a custom HTTP-call node per action. But for most people this is a niche tool. If you just want to load, save, and search artifacts, start with Load Artifact and Upload instead.

CategoryEmbeddr/Lotus

Inputs (4)

NameTypeDefaultDescription
action_idSTRINGSelect a Lotus action to execute (populated by frontend)
payload_jsonSTRING{}Additional JSON payload merged with widget inputs. Widget values take precedence.
artifact_idoptEMBEDDR_ARTIFACT_IDArtifact ID input (passed as 'artifact_id' in payload)
artifact_idsoptEMBEDDR_ARTIFACT_IDMultiple artifact IDs (passed as 'artifact_ids' in payload)

Outputs (5)

NameTypeDescription
result_jsonSTRINGFull JSON response from the action
statusSTRING'ok', 'error', or 'pending'
output_artifact_idsEMBEDDR_ARTIFACT_IDArtifact IDs extracted from the result (if any)
textSTRINGPrimary text content (caption, message, value, etc.)
errorSTRINGError message (empty on success)