Co-authored-by: Cursor <cursoragent@cursor.com>
Swarm Assistent
SwarmUI extension for collaborative Krea 2 prompting via Ollama: chat + multi-window board (live Generate + refs), LoRA/trigger awareness, applyable patches, img2img / inpaint, slash commands, aspect/seed chips, auto Generate, and Civitai search with Confirm.
Version 0.5.0 — denser Krea 2 knowledge in prompt packs, new patch fields, /help slash commands, composer chips.
Layout
- Left — Board: live Generate window + Ref windows (drop / paste / Send to Assistent / Snapshot gen). Per-window vision checkbox attaches that image to the next chat.
- Splitter: drag to resize panes
- Right (wider): chat — first visit shows a short how-to. Only the latest JSON proposal keeps action buttons; Apply + Generate spins/disables while a generation is running.
- Chips above the composer: aspect ratios, Seed lock / random, Vary.
- Top-right: prompt pack + settings (Ollama URL, model, auto-apply / auto-generate)
UX
- Send to Assistent under the current Generate image (and History) — adds a Ref window and opens the Assistent tab
- Drag / paste onto a Ref (drop on Generate snapshots into a new Ref)
- Snapshot gen copies the live Generate window into a Ref
- As Init / As Mask / Clear Init — selected window → Swarm
Init Image/Mask Image - Enter sends; Shift+Enter newline
- Auto-apply + Auto-generate (default on): patch from the LLM is applied and Generate runs when the patch changes prompt/params or includes
actions: ["generate"] - Pure Q&A without a patch does not start Generate
- Interrupt stops Swarm generation / clears busy state
- Civitai search cards require Confirm download (uses Swarm
DoModelDownloadWS+ storedcivitai_apikey). Auto-download is off by default. - Pack auto-selects from the user message (critique / inpaint / params / compose / describe / write) unless you changed the dropdown yourself.
Slash commands (client-side, no LLM)
| Command | Effect |
|---|---|
/help |
List commands |
/gen |
Generate now |
/look generate|refN |
Attach that board window + ask the LLM to look |
/init /mask /clear |
Same as board buttons |
/interrupt |
Stop generation |
/aspect 16:9 |
Set size from the official 1K table |
/seed lock|random |
Lock or randomize seed |
/vary |
New seed, same prompt (+ generate if auto) |
/pack write|critique|compose|params|inpaint|describe |
Switch pack |
/civitai <query> |
Ask LLM to search Civitai (Confirm still required) |
Requirements
- SwarmUI with a Krea 2 checkpoint selected
- Ollama on
http://127.0.0.1:11434on the GPU VM (gpu-rentLLM_RUNTIME=ollama). The browser talks to SwarmUI; SwarmUI proxies/api/tagsand/api/chat. URL in settings must stay127.0.0.1:11434, not the laptop tunnel port 17811. - At least one pulled model (
ollama pull/ollama-models.yaml). Empty/api/tags→ empty Model dropdown. - Optional: Civitai API key in SwarmUI User Settings for search/download.
Install
Clone into SwarmUI src/Extensions/swarm-assistent (or let gpu-rent seed it from extensions.yaml with requires: ollama):
swarmui:
- url: https://gitea.hsrv.site/mrleo1nid/swarm-assistent.git
ref: main
dir: swarm-assistent
requires: ollama
Restart / rebuild SwarmUI after clone.
Prompt packs
| Pack | Role |
|---|---|
base_krea2 |
Always injected: Krea 2 rules + JSON patch / actions contract |
write_prompt |
Craft / improve prompts (prose structure) |
critique_image |
Vision critique → fixes |
compose_scene |
Scene / moodboard via board refs → text |
fix_params |
Aspect / steps / CFG / seed / batch |
inpaint_edit |
Init Image img2img + Mask inpaint |
describe_ref |
Vision → Krea prompt (no generate by default) |
catalog_card |
Recommendation card JSON for a checkpoint/LoRA |
Persona (tone) is a separate dropdown from pack — base_krea2 → persona → pack. Overlay: /mnt/swarm_data/Assistent/personas.json (seeded from gpu-rent assistent-personas.yaml).
Cards subtab: edit/save {stem}.assistent.json next to weights; live chat gets cards for the current checkpoint + enabled LoRAs only. Uninstalled models can enqueue .gpu-rent-wanted-models.yaml for the next up.
Live context (checkpoint, server inventory LoRAs + triggers, model_cards, wildcards, current params, persona) is injected every request.
Cloud-only Krea.ai features (moodboards UI, Generative Sliders, Creativity Raw/Low/Medium/High) are not in Swarm. The assistant emulates them with prompt language + board refs. Optional patch fields creativity / intensity / complexity / movement guide the LLM only.
Patch actions
{
"prompt": "...",
"loras": [{"name": "exact", "weight": 0.8, "triggers": ["..."]}],
"aspect": "16:9",
"width": 1376, "height": 768,
"steps": 8, "cfg": 1,
"seed": -1, "images": 1,
"sigma_shift": 1.15,
"creativity": "medium",
"intensity": 0, "complexity": 0, "movement": 0,
"vary": false, "lock_seed": false,
"use_init_image": true,
"init_creativity": 0.45,
"use_mask_image": false,
"clear_prompt_images": false,
"look_at": ["generate"],
"slot_to_init": "generate",
"snapshot_generate": false,
"pack": "critique_image",
"actions": ["generate"],
"search_query": null
}
aspect— maps to official 1K sizes (1:1,4:5,2:3,16:9,9:16,4:3,3:2,2.35:1)vary/lock_seed/images|batch— seed and batch helpersclear_prompt_images— strip<image…>embeds from the prompt boxpack— switch the active prompt pack for a follow-upgenerate— auto-generate after apply (when enabled)look_at— hop vision from named board windows (generate,ref1, …)slot_to_init/slot_to_mask— copy that window into Swarm Init / Masksnapshot_generate— copy live Generate into a Refsearch_civitai+search_query— server searches Civitai, second LLM hop, Confirm cards in UIinterrupt— stop current generation
Mask convention: white = edit, black = keep. Creativity ≈ denoise (0–1).
Turbo defaults: steps 8, CFG 1 (never 0), sigma shift 1.15.
API routes
| Route | Role |
|---|---|
AssistentListModels |
Ollama /api/tags |
AssistentListInventory |
LoRA / checkpoint / wildcard inventory from Swarm |
AssistentSearchCivitai |
Civitai LoRA search |
AssistentGetPacks |
Prompt pack texts |
AssistentChat |
HTTP chat (+ Civitai hop) |
AssistentChatWS |
Streaming chat WebSocket |
License
MIT