Symbiotica Agent Settings
The Loader That Gives Your LLM Node a Personality
- skills
- agent_settings
Symbiotica Agent Settings never talks to an API by itself. It's the definition-loading half of the agent pair: it reads an agent from disk - personality, instructions, model, key, skills - and hands the whole bundle down one agent_settings wire to the Symbiotica Agent node, which does the actual LLM call. If the Agent node is the engine, this is the key-in-the-ignition, and the point of splitting them is that the definition is a file, not a node you edit per workflow.
The idea comes straight from how production LLM projects are actually structured. The pack reads agents from disk in the same shape an agent repo uses: a SOUL.md for personality and values, a CLAUDE.md for identity and operating instructions, and a USER.md describing who the agent serves. That's a pattern people already know from coding agents, and here it's applied to the prompt-author and captioning jobs an LLM does inside ComfyUI. Edit the markdown file, and every workflow that loads that agent changes behavior without touching the graph.
How it works
The node scans a configured agents directory for agent definitions, and its agent dropdown pre-fills the fields from a found agent - or you pick (custom) and define everything inline. When you run it, it packages the resolved personality + instructions + model + key into a single AGENT_SETTINGS value that the Agent node consumes. The loader and the runner are deliberately separate: settings only assemble, the Agent node is the one that spends your money.
There are two ways to point it at your agents: a config.ini in the package root (agents_dir = ..., skills_dir = ...), or the SYMBIOTICA_AGENTS_DIR / SYMBIOTICA_SKILLS_DIR environment variables. The agents_path widget on the node overrides both at the node level. The pack even ships companion repos (symbiotica-ai/agents, symbiotica-ai/skills) with starter definitions.
The inputs that matter
agent- the dropdown of found agents, or(custom). This is the "load my saved agent" lever.soul- personality, values, boundaries. Loaded from the shared + agent SOUL.md.instructions- identity and operating instructions, from the agent's CLAUDE.md. This is the system prompt in disguise.user_context- optional; who the agent serves, from a shared USER.md.model- the provider model, and it's a real list:claude-fable-5,claude-opus-5,claude-sonnet-5(default),claude-haiku-4-5, severalgemini-*,gpt-5.5,gpt-5.5-pro,gpt-5.4-mini,grok-4.5. Pick once here and every consumer inherits it.api_key- per-agent key. Empty falls back to the environment variable for that provider.skills- an optional AGENT_SKILLS wire (from the pack's Symbiotica Skills node) toggling which skills the agent may use.
The output is one thing: agent_settings (AGENT_SETTINGS), wired straight into Symbiotica Agent. You don't read it; you connect it.
Install
ComfyUI Manager → search Symbiotica → install, or:
cd ComfyUI/custom_nodes
git clone https://github.com/symbiotica-ai/comfyui-nodes.git symbiotica
pip install -r symbiotica/requirements.txt
Restart ComfyUI. No model files download - the model is a cloud API. You'll need a key for whichever provider the agent's model picks (ANTHROPIC_API_KEY, GEMINI_API_KEY, OPENAI_API_KEY, XAI_API_KEY), set as an env var or in the pack's Settings UI. The package loads fine with no key; you only hit the paywall at call time.
Common issues
- The
agentdropdown shows only(custom). Your agents directory isn't configured or isn't being found. SetSYMBIOTICA_AGENTS_DIR(orconfig.ini), or just use(custom)and type the personality directly - the node works fine that way. - "No such agent" / empty soul and instructions. You picked a named agent that no longer exists on disk, or the directory moved. Re-pick
(custom)or fix the path. - The agent calls the wrong provider. Check
modelhere; it's the authority unless the Agent node'smodel_overrideis wired in.
The trap worth knowing: this node is conveniences plus files. If you never use the file-based agents, the Settings node is just a structured way to type a system prompt, model and key - which is honestly still the nicest way to do it, because it keeps the prompt out of the workflow JSON entirely.
Inputs (8)
| Name | Type | Default | Description |
|---|---|---|---|
| agent | COMBO | (custom) | Select an agent to pre-fill fields, or (custom) to define manually. |
| soul | STRING | Personality, values, boundaries. Loaded from shared + agent SOUL.md. | |
| instructions | STRING | Identity and operating instructions. Loaded from agent CLAUDE.md. | |
| agents_pathopt | STRING | Path to agents directory. Overrides env var and config.ini. | |
| user_contextopt | STRING | Who the agent serves. Loaded from shared USER.md. | |
| modelopt | COMBO | claude-sonnet-5 | LLM model for this agent. |
| api_keyopt | STRING | API key. Falls back to environment variable if empty. | |
| skillsopt | AGENT_SKILLS | — |
Outputs (1)
| Name | Type | Description |
|---|---|---|
| agent_settings | AGENT_SETTINGS | — |