EmAySee Advanced Oobabooga Connector
Point ComfyUI at a local LLM — the kitchen-sink Oobabooga chat connector
- answer
- thinking
- full_raw
ComfyUI runs diffusion models locally, and it can run a text model too - you just need a bridge. EmAySee Advanced Oobabooga Connector is that bridge: it sends your prompt to a text-generation-webui (Oobabooga) instance running an OpenAI-compatible API and returns the model's answer as a string you can feed anywhere in the graph.
The promise is real: one node, a prompt in, an answer out, and suddenly you have an LLM inside ComfyUI doing prompt rewriting, tag generation, workflow scripting, whatever you can get a local model to do. And "local" is the operative word - no API key from a cloud vendor, no per-token billing, the same spirit as running your own Stable Diffusion. The author, who posts about these nodes on Reddit, is upfront that this family of connectors is not a one-and-done: "you need to craft a good prompt to have it convert though," they wrote, "you need to give the LLM a set of instructions." Treat it as a raw API client, not a magic prompt-improver.
How it works
The node posts a JSON payload to your api_url using the OpenAI /v1/chat/completions schema, with system_prompt and prompt as the message pair. Around fifty sampler settings - temperature, top_p, top_k, min_p, repetition penalty, DRY, mirostat, and more - are forwarded if you've changed them from defaults, so it behaves like the full text-generation-webui API exposed as a node.
Two behaviors stand out. First, auto_continue: if the model stops because it hit max_tokens, the node re-calls the API up to max_continues times, appending the output until the model finishes naturally - a genuine convenience for long generations. Second, thinking parsing: it scans the response for <think>...</think> blocks (the format reasoning models like DeepSeek R1 use) and splits the output into answer and thinking. If a <think> tag is opened but never closed, the answer becomes the literal string [REASONING TRUNCATED] and the thinking gets the rest - a design choice worth knowing about, because that exact string is a sentinel some of the pack's other nodes watch for.
The inputs that matter
There are a lot of them, but a beginner sets these:
- api_url - defaults to
http://10.0.0.71:5000/v1/chat/completions. That's the author's LAN address; you must change it to your own Oobabooga server. It must be running with its API enabled (--apiflag) at the matching port. - api_key - defaults to
supersecretkey. If your server isn't enforcing auth, any value works; if it is, use the real one. - prompt and system_prompt - the actual conversation. This is where you invest your effort.
- seed (-1 = random), max_tokens, temperature, top_p, min_p - the core generation controls.
Outputs are answer (clean text), thinking (the extracted reasoning), and full_raw (the entire JSON response, pretty-printed - your debugging friend).
Install
Part of the EmAySee pack:
cd ComfyUI/custom_nodes
git clone https://github.com/EmAySee/ComfyUI_EmAySee_CustomNodes
Restart ComfyUI (or Manager → "ComfyUI_EmAySee_CustomNodes"). No requirements.txt - it needs only requests, which ComfyUI already ships. You do need a running Oobabooga text-generation-webui with the API enabled.
Gotchas
The default api_url pointing at 10.0.0.71 is the #1 gotcha - every new user hits a connection error until they change it. Next, stop_on_error defaults to True, meaning a backend error crashes the workflow; flip it to False if you'd rather get an error string and keep going. Timeout is 600 seconds, so a slow model won't bail early - but it also means a hung server stalls your workflow for ten minutes. And remember: this is hobbyware with an explicit no-support disclaimer, and the "OpenAI-compatible" label means it should work with other compatible servers (vLLM, LM Studio) but is only tested against Oobabooga. Start with reasoning_effort: medium and a well-crafted system prompt, and you're most of the way there.
Inputs (65)
| Name | Type | Default | Description |
|---|---|---|---|
| api_url | STRING | http://10.0.0.71:5000/v1/chat/completions | — |
| api_key | STRING | supersecretkey | — |
| prompt | STRING | Enter prompt here | — |
| system_prompt | STRING | You are a helpful assistant. | — |
| seed | INT | -1-1–18446744073709550000 | — |
| max_tokens | INT | 5121–32768 | — |
| temperature | FLOAT | 1.000–2 | — |
| top_p | FLOAT | 1.000–1 | — |
| min_p | FLOAT | 0.000–1 | — |
| top_k | INT | 00–200 | — |
| repetition_penalty | FLOAT | 1.001–2 | — |
| reasoning_effort | COMBO | medium | 3 options: low, medium, high |
| auto_continue | BOOLEAN | false | — |
| max_continues | INT | 31–10 | — |
| stop_on_error | BOOLEAN | true | — |
| best_ofopt | INT | 11–10 | — |
| echoopt | BOOLEAN | false | — |
| frequency_penaltyopt | FLOAT | 0.00-2–2 | — |
| presence_penaltyopt | FLOAT | 0.00-2–2 | — |
| nopt | INT | 11–10 | — |
| suffixopt | STRING | — | |
| useropt | STRING | — | |
| presetopt | STRING | — | |
| dynatemp_lowopt | FLOAT | 1.000–2 | — |
| dynatemp_highopt | FLOAT | 1.000–2 | — |
| dynatemp_exponentopt | FLOAT | 1.000–10 | — |
| smoothing_factoropt | FLOAT | 0.000–10 | — |
| smoothing_curveopt | FLOAT | 1.00.1–10 | — |
| typical_popt | FLOAT | 1.000–1 | — |
| xtc_thresholdopt | FLOAT | 0.100–1 | — |
| xtc_probabilityopt | FLOAT | 0.000–1 | — |
| epsilon_cutoffopt | FLOAT | 0.000–1 | — |
| eta_cutoffopt | FLOAT | 0.000–1 | — |
| tfsopt | FLOAT | 1.000–1 | — |
| top_aopt | FLOAT | 0.000–1 | — |
| top_n_sigmaopt | FLOAT | 0.000–10 | — |
| dry_multiplieropt | FLOAT | 0.000–2 | — |
| dry_allowed_lengthopt | INT | 20–20 | — |
| dry_baseopt | FLOAT | 1.751–5 | — |
| encoder_repetition_penaltyopt | FLOAT | 1.001–2 | — |
| no_repeat_ngram_sizeopt | INT | 00–20 | — |
| repetition_penalty_rangeopt | INT | 10240–8192 | — |
| penalty_alphaopt | FLOAT | 0.000–10 | — |
| guidance_scaleopt | FLOAT | 1.00–20 | — |
| mirostat_modeopt | INT | 00–2 | — |
| mirostat_tauopt | FLOAT | 5.00–20 | — |
| mirostat_etaopt | FLOAT | 0.100–1 | — |
| prompt_lookup_num_tokensopt | INT | 00–20 | — |
| max_tokens_secondopt | INT | 00–32768 | — |
| do_sampleopt | BOOLEAN | true | — |
| dynamic_temperatureopt | BOOLEAN | false | — |
| temperature_lastopt | BOOLEAN | false | — |
| auto_max_new_tokensopt | BOOLEAN | false | — |
| ban_eos_tokenopt | BOOLEAN | false | — |
| add_bos_tokenopt | BOOLEAN | true | — |
| enable_thinkingopt | BOOLEAN | true | — |
| skip_special_tokensopt | BOOLEAN | true | — |
| static_cacheopt | BOOLEAN | false | — |
| truncation_lengthopt | INT | 00–131072 | — |
| custom_token_bansopt | STRING | — | |
| negative_promptopt | STRING | — | |
| dry_sequence_breakersopt | STRING | "\n", ":", "\"", "*" | — |
| grammar_stringopt | STRING | — | |
| sampler_priorityopt | STRING | — | |
| stop_sequencesopt | STRING | — |
Outputs (3)
| Name | Type | Description |
|---|---|---|
| answer | STRING | — |
| thinking | STRING | — |
| full_raw | STRING | — |