Allma Connectivity
Where the LLM backend lives and how it thinks
- connectivity
Most ComfyUI LLM setups make you bolt the settings onto every prompt node, so three Generate nodes means three copies of the same host, port and sampling dials - and three chances to forget you changed one. AllmaNodes does it differently. Allma Connectivity is a single node that holds everything about the conversation with the model: where the server lives, which model, and how to sample from it. Wire one of these into every Allma Generate on the same backend and they all share a single set of settings. You can't forget to sync them, because there's nothing to sync.
The settings that matter
host/port/timeout- the backend, defaulting to127.0.0.1:9000. Thetimeoutis per read, not per answer, so a long but steadily progressing generation won't trip it. Bump it for slow first-time model loads.model- a dropdown filled fromGET /v1/models, so it lists what the backend actually has. Nice touch: the last model you actually ran becomes the default for every new Connectivity node, in any workflow, so you stop re-picking it.thinking- OFF sendschat_template_kwargs.enable_thinking = false, which Qwen-style templates respect, so the model skips the<think>block and answers directly. ON lets it reason first, and the reasoning lands on Generate's dedicatedthinkingoutput instead of leaking into the answer. The trap: thinking and the answer share the samemax_tokensbudget, so with a tight budget a model can spend the whole thing reasoning and return an empty answer. Allma Generate reports that on itsstatusoutput rather than failing silently.effort-low/medium/xhigh, sent asreasoning_effort. It's not a token budget and not a quality dial - it changes how much the model narrates its way to the answer. Three levels because three is all the model actually distinguishes; wilder names (minimal,max,ultra) fold onto them, and anything unrecognized silently becomesmedium.temperature/top_p/top_k/max_tokens/seed- standard sampling, nothing exotic.show_sampling- flips off the five sampling widgets so you can't nudge them by mistake while dragging the node. Values survive either way.
Output is a single connectivity link of type ALLMA_CONNECTIVITY, which is what Generate consumes. There's nothing to unpack manually - it's a token that says "talk to this backend, this way."
What you need running
This is the LLM side of the pack, so it needs a backend: the author's own Allma server (default 127.0.0.1:9000) or any OpenAI-compatible endpoint. The node itself does nothing without one - the model dropdown will just read "(allma offline - check host/port)". The utilities in the same pack don't need any of this; Connectivity and its LLM siblings are a self-contained group.
Install
cd ComfyUI/custom_nodes
git clone https://github.com/OliveiraNickolas/AllmaNodes
Restart ComfyUI. No pip install - stdlib plus torch/PIL only. Getting a model loaded is on the backend, not on this node: start Allma, load a model, then let Connectivity discover it.
One honest caveat: the whole pack is days old and completely untested in the community - no reddit threads, no shared workflows to crib from. The mechanism here is plain HTTP plus chat_template_kwargs, so it's readable and the failure modes are documented in the README (shared token budget, effort aliases folding, backends that ignore the thinking flag - run the same prompt with thinking ON and OFF; identical output means the flag was dropped). Those are the things to watch, not exotic bugs.
Inputs (12)
| Name | Type | Default | Description |
|---|---|---|---|
| host | STRING | 127.0.0.1 | — |
| port | INT | 90001–65535 | — |
| timeout | INT | 1205–3600 | Max seconds per request. Bump for slow first-time loads. |
| model | COMBO | 1 options: (allma offline — check host/port) | |
| thinking | BOOLEAN | false | OFF: the model skips the <think> block and answers directly. ON: it reasons first, and the reasoning comes back on Allma Generate's 'thinking' output instead of leaking into 'output_prompt'. Note the reasoning spends the SAME max_tokens budget as the answer. |
| effort | COMBO | medium | How long the model reasons when 'thinking' is ON. Not a token budget and it does not lower answer quality — it changes how much the model narrates its way to the answer. A .allm profile declaring @reasoning-effort overrides this. |
| temperature | FLOAT | 1.000–2 | — |
| top_p | FLOAT | 0.950–1 | — |
| top_k | INT | 200–500 | 0 disables top_k. |
| max_tokens | INT | 204816–131072 | — |
| seed | INT | -1-1–2147483647 | -1 lets the backend choose (or is ignored). |
| show_sampling | BOOLEAN | false | When OFF, hides the 5 sampling widgets (temperature, top_p, top_k, max_tokens, seed) so you don't nudge them by mistake while dragging the node. Their values are preserved either way. |
Outputs (1)
| Name | Type | Description |
|---|---|---|
| connectivity | ALLMA_CONNECTIVITY | — |