String Input
Your prompt-as-a-parameter node
- value
String Input is the workhorse of Comfy-Pack's input family, and the one you'll use first. It marks a string value - almost always a prompt - as an API parameter of a served workflow. If you're building a text-to-image endpoint, this is the node your "prompt" and "negative_prompt" JSON keys come from.
Context for the uninitiated: Comfy-Pack is BentoML's toolkit for packaging ComfyUI workflows into reproducible .cpack.zip artifacts and serving them as REST APIs. The ComfyPack input nodes define the request body of the served POST /generate endpoint, and the node's name becomes the parameter name. So a String Input node named prompt is exactly why your API call sends {"prompt": "rocks in a bottle"} - the README's own example is a string being fed in like this.
How it works
It's an identity function with a badge. It takes a value string, returns it unchanged as a STRING output, and carries the ComfyPack/input category tag that tells the pack "this is a request parameter." When the workflow is served, Comfy-Pack generates a string field in the API schema with the node's current value as the default. A caller who omits prompt gets your default; a caller who sends one overrides it. In a purely local workflow the node does nothing but pass text through - which is fine, because its job is annotation, not transformation.
The one input
- value - a string, default empty. Set your typical prompt here as the fallback, then wire the output into whatever expects text: a CLIP Text Encode node, a filename, a wildcard processor.
One output: value, typed STRING.
That's the entire surface. There's no multiline-vs-singleline toggle exposed and no length limit - if you need a bounded enum or a numeric string, that's Any Input's territory.
Install
Standard pack install:
- ComfyUI Manager: search
comfy-pack, Install, restart, refresh. - Manual:
cd ComfyUI/custom_nodes && git clone https://github.com/bentoml/comfy-pack, restart.
The pack pulls in BentoML and comfy-cli, so the first install is heavier than the typical node - budget a minute.
Gotchas worth knowing
Naming matters more than it looks like it should. Because the node title becomes the API key, two String Inputs both defaulting to "value" will collide when served - Comfy-Pack appends an index to disambiguate, but you'll get an ugly parameter name. Rename nodes the moment you place them. Also remember the direction: this node defines a request parameter, so a served workflow with a String Input named prompt expects the caller to supply prompt - if your workflow is meant to run unmodified locally too, that's fine, but anyone hitting the API without the field gets your default value, which may or may not be what they wanted.
Inputs (1)
| Name | Type | Default | Description |
|---|---|---|---|
| value | STRING | — |
Outputs (1)
| Name | Type | Description |
|---|---|---|
| value | STRING | — |