Output Text (ShellAgent Plugin)
The node that hands your ComfyUI text back to the app
The name undersells it. Output Text (ShellAgent Plugin) doesn't print anything to your screen and it doesn't save a file - it's the terminal node that hands a string back to whatever app is driving your workflow. If you're building a ShellAgent app that calls ComfyUI as a tool, this is how the agent sees the answer your pipeline produced. Used standalone, it's still useful: it marks "this is the value that leaves the graph" in a way anyone reading your workflow can spot.
How it works
Mechanically it's boring on purpose. The node takes any string in through text, labels it with output_name (default output_text), and pushes it out over ComfyUI's UI result channel as {"ui": {"output": [...]}}. That's the payload the parent app reads when the queue finishes. There's also a validate() method that advertises the output's schema - {title: output_name, type: string} - so ShellAgent knows what kind of field to render and what key to expect.
The thing that trips people up: it has no output sockets at all. It's an output node, a terminal. Nothing wires out of it, and nothing shows up in ComfyUI's preview pane. If you're expecting to see your text somewhere on screen, you won't - that's the node working as designed. The result only materializes in the app that launched the workflow.
The inputs that matter
Only two, and you'll touch both:
- text - whatever you want to return. Wire in the output of a prompt builder, a caption model, an LLM node, a formatting node. This is the actual payload.
- output_name - the key ShellAgent uses for this value. Keep it unique across your workflow; the default
output_textis fine for a single output, but if you're returning several values, give each one a distinct name.
One subtlety: the input is strictly a STRING. If the thing you want to return is a number, you need to convert it - a format/text node or the pack's own Float/Integer output nodes are the intended path. Forcing a numeric wire into this node won't fly.
Installing it
It ships in the MyShell AI pack, so it's one install for all 18-ish nodes:
cd ComfyUI/custom_nodes
git clone https://github.com/myshell-ai/ComfyUI-ShellAgent-Plugin
then restart ComfyUI. Or just search ComfyUI-ShellAgent-Plugin in ComfyUI Manager and hit install. The pack's requirements.txt pulls in a handful of heavy-ish deps (opencv-python, pillow_heif, imageio-ffmpeg, pydantic, brotli, aiofiles, easydict), so the first launch after installing can take a minute. There are no model files to download - this pack is pure plumbing.
Common issues
- The value doesn't show up in your app. First check
output_nameisn't colliding with another output node. Then check the workflow actually ran to completion - an error upstream means the output node never fires. - "I don't see any output." Expected. Nothing renders in ComfyUI itself; the result goes to the parent app. Test with the built-in preview nodes if you need visual confirmation mid-pipeline.
- Wrong type. If the connection refuses, you're feeding it a FLOAT or INT. Convert to string first.
It's the most-searched node in this pack for a reason: once you understand that the "output" is a return value for an external caller rather than something you can see, the whole pack starts to make sense.
Inputs (2)
| Name | Type | Default | Description |
|---|---|---|---|
| text | STRING | The text to output. | |
| output_name | STRING | output_text | — |
Outputs (0)
No outputs