⚓ Bada Terminal Hub
A shell inside ComfyUI, for better and for worse
The node that exists so you stop tabbing to a terminal
Dependency hell is the defining chore of running ComfyUI. A post called "Feels like I am downloading models and installing missing nodes 90% of the time" hit +103 with 78 comments, and it isn't an exaggeration - custom nodes are directories under ComfyUI/custom_nodes/, each with its own requirements.txt, all into one shared Python environment. Updating a pack means knowing which of your forty-odd folders it lives in, opening a terminal, landing in the right path, and running git pull. Every single time.
Bada Terminal Hub is the author's answer to that one annoyance: a console docked at the bottom of ComfyUI's left sidebar, plus a searchable list of every installed custom-node folder. Type a few letters, get the folder, run the command.
What the node itself is (surprisingly little)
The interesting thing is how thin the node is: no required inputs, two optional ones, and - unusually - no outputs at all, while being flagged as an output node. That's correct, not a bug. There's nothing to wire it to. It isn't a data node, it's a control surface beside the graph, and being an output node is just how it takes part in execution.
The two widgets are defaults for that surface:
initial_directory(defaultcustom_nodes) - which folder the console drops you into, relative to your ComfyUI root unless you give an absolute path.initial_command(defaultgit status) - the command it pre-loads.
Point initial_directory at the pack you're fighting with and git status tells you, before you queue anything, whether local edits are about to make your next git pull messy.
What the sidebar actually gives you
Four things, per the README, and they're why you'd install it instead of pinning a terminal window:
- A searchable path combobox. Fuzzy-filters all 37+ installed custom-node folders (plus the ComfyUI root) with arrow-key navigation, which beats squinting at a folder list trying to remember whether it's
ComfyUI_essentialsorcomfyui-essentials. - One-click quick actions:
Git Status,Git Pull Origin Main,Pip Install Requirements,ComfyUI Restart. - Real-time streaming of stdout and stderr over WebSocket, with ANSI colour parsing, so
git pulland pip render live. - A
[ 💻 CMD ]button that opens a nativecmd.exewindow already sitting in the selected directory. Windows-only - on Linux or macOS you get the browser console plus your own terminal.
That last one exists because a web console can't do everything: it streams output but gives you no stdin, so anything that stops to ask a question - a login prompt, a proceed? [y/N], a merge conflict - is a job for the CMD button or a real terminal.
Installing it
You install the pack, not the node. Search ComfyUI-Bada-Utils in ComfyUI Manager, or:
cd ComfyUI/custom_nodes
git clone https://github.com/bada-ya/ComfyUI-Bada-Utils.git
Restart ComfyUI, then Ctrl + F5 in the browser - the sidebar console is frontend code and won't render on a soft refresh. No model downloads, no heavy dependencies; it's a utility pack.
One compatibility note: the README asks for Classic Canvas rendering and for Nodes 2.0 to be off. ComfyUI's Vue-based node rewrite broke custom widgets across the ecosystem - rgthree shipped a startup warning about it - and small packs don't get ported for free.
Where people get burned
git pull says "not a git repository". Manager telling you the truth: if the pack was installed as a zip rather than a clone, there's no .git folder. Clone it yourself instead - the console can't pull a repo that isn't one.
pip install "works" but nothing changes. The usual cause is the wrong interpreter: pip has to be the same Python ComfyUI runs under (a portable install or venv has its own), or you installed into a Python that never touches your workflow. The other is no restart - fresh dependencies load at process start, so use the restart action rather than expecting a hot reload. Editing a pack's code has the same rule: Python loads once per process, and JavaScript changes need a hard refresh on top.
A long command looks frozen. Streaming stdout means silence and a hang have the same fingerprint - a slow git pull and a stuck process look identical in a browser console. When in doubt, open the CMD window.
And the one that actually matters: this node runs shell commands on your machine, inside a tool whose API is unauthenticated by default. The community's standing advice is not to expose ComfyUI to the internet without auth, and this node is the strongest argument for it - anything that can reach your /prompt endpoint, and any workflow you download and hit Queue on, becomes a command execution path. ComfyUI's own Manager gates install and restart behind a risk level for exactly this reason; a terminal node is that risk level, permanently open. Keep it on localhost. Treat it like a shell, because that's what it is.
Inputs (2)
| Name | Type | Default | Description |
|---|---|---|---|
| initial_directoryopt | STRING | custom_nodes | — |
| initial_commandopt | STRING | git status | — |
Outputs (0)
No outputs