KoO Apes Prompter 1.1
Point This Node at a Local LLM and It Rewrites Your Rough Idea Properly
- image
- image_2
- prompt
KoO Apes Prompter 1.1 is a prompt director: you type a rough idea, it asks a language model to expand that idea into a finished prompt, and it hands the result back as one STRING you wire into a text encoder. No magic, no account, no key - unless you deliberately point it at a paid API.
It's worth caring about because prompting changed under everyone's feet. In 2026 your prompt is wrapped in a chat template and fed to a general-purpose LLM - Z-Image and Flux 2 Klein run a Qwen3 encoder, not CLIP. Having an LLM write the instruction the LLM will read went from hack to default.
What the node is actually doing
No clever inference trick here. The node assembles a big system prompt out of stacked sections and ships it to an OpenAI-style chat endpoint or an Ollama one. In core.py the stack is: a "you are a visual director" instruction, a conflict-resolution contract, the mode adapter, the target model adapter, creativity and length settings, your preserve locks, a director preset, custom instructions, and an output contract demanding one prompt and no commentary.
That layering is why the target_model dropdown exists at all. Pick FLUX.2 Klein and the adapter wants concise natural language with an explicit change-versus-protect split; pick LTX 2.5 under Video and it's told to describe a shot with chronological motion and a defined end framing.
Connect an image and a vision model first writes an evidence digest of what's visible - subject, materials, lighting, composition - then the prompt is compiled against that instead of invented. That's Image Edit, Style Transfer and Dataset Caption earning their keep.
The fields a beginner actually sets
Forty-odd widgets show up when you drop the node. Ignore most of them.
- idea - your rough thought, in plain words.
- mode - the job.
Enhanceis the safe default;Video,Image EditandDataset Captionchange the task, not just the tone. - target_model - which encoder you're feeding. Get this wrong and you get tag soup for an instruction-following encoder, or flowery sentences for a tag-based model.
- provider_preset, base_url, engine_model - where the LLM lives. Default is Ollama Native at
127.0.0.1:11434; the others are llama.cpp, LM Studio, vLLM, LocalAI, OpenRouter and a generic OpenAI-compatible endpoint.
temperature, top_p and top_k default to -1, which means "don't send this, use the server's default" - not a temperature of minus one. sampling_nonce is just the seed under another name. token_field exists because newer OpenAI-compatible servers reject max_tokens. The preserve_* toggles are literal instructions not to touch those things; subject is on by default, which is why your character doesn't get quietly redesigned.
Output is one socket: prompt (STRING). Drop a CLIPTextEncode after it - or whatever encoder node your model family uses - and you're done.
Installing it
Registry publication is still pending on this pack, so don't count on ComfyUI Manager finding it. Clone it, or unzip the release so __init__.py sits directly inside the folder:
cd ComfyUI/custom_nodes
git clone https://github.com/kevintronchin-blip/koo-apes-prompter
Install dependencies with ComfyUI's own Python, then restart. On the Windows portable build:
python_embeded\python.exe -m pip install -r ComfyUI\custom_nodes\koo-apes-prompter\requirements.txt
requirements.txt is two lines - aiohttp and Pillow, both already present in a normal ComfyUI. There's deliberately no llama-cpp-python, no Ollama SDK, no OpenAI SDK: it talks HTTP, manages a llama-server process if you ask it to, and never pip-installs at runtime.
You still need a model of your own. It scans ComfyUI/models/LLM for GGUFs (plus matching mmproj files for vision) or browses to any file on disk. No llama.cpp yet? The managed installer pulls a pinned official build (b10516, SHA256-verified) in CPU, CUDA 12.4 or Vulkan flavours - Windows x64 only. Mac and Linux point it at their own llama-server or use Ollama.
Keep exactly one copy installed. Two copies register the same workflow ID and both break.
Where people get burned
Nodes 2.0. The custom canvas UI needs the Legacy/LiteGraph renderer; on frontend 1.51.10 the new renderer skips the node-level drawing and mouse hooks it depends on. Blank rectangle with no buttons? Not a broken install - switch renderers.
The cached prompt. If generated_prompt already has text and no images are connected, the node returns that text verbatim without calling the LLM. Good for repeatable batches, maddening when you've rewritten the idea and nothing changes. Clear the box or hit Generate.
Vision mismatches. An image into a text-only GGUF, or a model paired with the wrong mmproj, fails at generation time. Use a vision model with a matching mmproj, or turn model_supports_images off.
Runtime plumbing. A missing DLL usually means someone moved llama-server.exe out of its distribution folder - keep the whole thing together, or use "repair" on a managed variant. A startup timeout is almost always RAM/VRAM, so read the server's own stderr before blaming the node.
Last thing: this pack is obscure - zero mentions of "Apes Prompter" in our Reddit corpus - so the README and source beat any tutorial.
Inputs (56)
| Name | Type | Default | Description |
|---|---|---|---|
| provider_preset | COMBO | Ollama Native | 7 options: Ollama Native, llama.cpp, LM Studio, vLLM, LocalAI, OpenRouter, +1 |
| engine_model | STRING | — | |
| base_url | STRING | http://127.0.0.1:11434 | — |
| timeout | FLOAT | 600.000.25–3600 | — |
| max_output_tokens | INT | 81921–1048576 | — |
| temperature | FLOAT | -1.00-1–2 | — |
| top_p | FLOAT | -1.00-1–1 | — |
| top_k | INT | -1-1–1000 | — |
| sampling_nonce | INT | -1-1–2147483647 | — |
| send_sampling | BOOLEAN | true | — |
| model_supports_images | BOOLEAN | true | — |
| token_field | COMBO | max_tokens | 2 options: max_tokens, max_completion_tokens |
| idea | STRING | — | |
| mode | COMBO | Enhance | 10 options: Enhance, Archviz, Photography, Character, Product, Image Edit, +4 |
| target_model | COMBO | Generic | 7 options: Generic, Krea 2, FLUX.2 Klein, Z-Image, Qwen Image, MiniMax, +1 |
| creativity | COMBO | Balanced | 4 options: Strict, Balanced, Creative, Dice |
| preserve_subject | BOOLEAN | true | — |
| preserve_composition | BOOLEAN | false | — |
| preserve_camera | BOOLEAN | false | — |
| preserve_materials | BOOLEAN | false | — |
| preserve_lighting | BOOLEAN | false | — |
| preserve_colors | BOOLEAN | false | — |
| prompt_length | COMBO | Medium | 5 options: Short, Medium, Detailed, Maximum Detail, Maximum |
| custom_instructions | STRING | — | |
| system_prompt_override | STRING | — | |
| generated_prompt | STRING | — | |
| prompt_model | COMBO | Qwen 3.5 9B | 5 options: Qwen 3.5 9B, Qwen 3.5 9B — Uncensored, Qwen 3.5 9B — HauhauCS Aggressive, Gemma 3 12B, Custom |
| director_profile | STRING | — | |
| director_model_path | STRING | — | |
| director_mmproj_path | STRING | — | |
| director_llama_server | STRING | — | |
| director_context_size | INT | 8192512–1048576 | — |
| director_image_min_tokens | INT | 10241–1048576 | — |
| director_max_tokens | INT | 7681–1048576 | — |
| director_gpu_layers | STRING | auto | — |
| director_keep_model_loaded | BOOLEAN | false | — |
| director_preset | STRING | General Director | — |
| image_1_role | COMBO | Auto | 7 options: Auto, Subject, Scene, Style, Pose, Composition, +1 |
| image_2_role | COMBO | Auto | 7 options: Auto, Subject, Scene, Style, Pose, Composition, +1 |
| lock_generated_prompt | BOOLEAN | false | — |
| reference_subject_source | COMBO | Auto | 4 options: Auto, Image 1, Image 2, Blend |
| reference_face_source | COMBO | Auto | 4 options: Auto, Image 1, Image 2, Blend |
| reference_outfit_source | COMBO | Auto | 4 options: Auto, Image 1, Image 2, Blend |
| reference_pose_source | COMBO | Auto | 4 options: Auto, Image 1, Image 2, Blend |
| reference_composition_source | COMBO | Auto | 4 options: Auto, Image 1, Image 2, Blend |
| reference_camera_source | COMBO | Auto | 4 options: Auto, Image 1, Image 2, Blend |
| reference_scene_source | COMBO | Auto | 4 options: Auto, Image 1, Image 2, Blend |
| reference_lighting_source | COMBO | Auto | 4 options: Auto, Image 1, Image 2, Blend |
| reference_colors_source | COMBO | Auto | 4 options: Auto, Image 1, Image 2, Blend |
| reference_mood_source | COMBO | Auto | 4 options: Auto, Image 1, Image 2, Blend |
| reference_materials_source | COMBO | Auto | 4 options: Auto, Image 1, Image 2, Blend |
| runtime | COMBO | LLAMA.CPP | 2 options: LLAMA.CPP, OLLAMA |
| ollama_model | STRING | qwen3.8 | — |
| ollama_endpoint | STRING | http://127.0.0.1:11434/v1 | — |
| imageopt | IMAGE | — | |
| image_2opt | IMAGE | — |
Outputs (1)
| Name | Type | Description |
|---|---|---|
| prompt | STRING | — |