GitHub: https://github.com/GenorTG/Genor-Opencaw-Comfyui-Gate Install: bash install.sh | Update: bash autobuild.sh
THE authoritative reference for ALL ComfyUI operations through our gateway. Multi-modal: audio, images, video (future). Read this before any generation. Updated as we learn.
All user-specific workflows, custom instructions, and generated outputs MUST be stored inside a dedicated workspace folder:
text
~/projects/genor-comfyui/
├── workflows/ # Custom/user-specific ComfyUI workflow JSONs
│ ├── lustify-sdxl.json
│ ├── my-custom-workflow.json
│ └── ...
├── custom_instructions/ # User-specific prompting notes, style guides, presets
│ ├── prompt_templates/ # Per-model prompt generation system prompts
│ │ ├── illustrious_xl_prompt_gen.md
│ │ ├── animagine_xl_40_prompt_gen.md
│ │ ├── sdxl_base_prompt_gen.md
│ │ ├── z_image_turbo_prompt_gen.md
│ │ └── base_sd_prompt_gen.md
│ └── ...
├── generations/ # Generated images, audio, and their metadata
│ ├── images/
│ ├── audio/
│ └── ...
└── exports/ # Exported/shareable workflow packages
└── ...
Rules:
~/projects/genor-comfyui/workflows/~/projects/genor-comfyui/custom_instructions/~/media/comfy/ (gateway default), but reference/custom outputs go to ~/projects/genor-comfyui/generations/genor-comfy-gate__upload_workflowTypeStatusWorkflowModel🎵 Audio✅ Activeacestep-rapcoreACE-Step 1.5 SFT merge🎬 Video🔜 Planned——
The gateway is modality-agnostic — it submits any workflow JSON to ComfyUI, polls, waits, downloads, and saves. Adding a new modality means adding a workflow file + WORKFLOW_INFO entry. The type field determines output dir ( audio/ or images/).
PropertyValueEndpointhttp://127.0.0.1:8188Authx-api-key header (localhost exempt)Managed bypm2 ( genor-comfy-gate)Location./ (installed dir)Configenv / COMFY_SERVERS var
Configure your ComfyUI backends via the COMFY_SERVERS environment variable:
json
[
{"url": "http://127.0.0.1:8188", "id": "local", "priority": true, "weight": 1}
]
Default: single local server at http://127.0.0.1:8188
IDURLPrioritylocalhttp://127.0.0.1:8188★ (default)
pickServer())#server.url)acestep-aio — ACE-Step 1.5 Audio Generation#Model: aceStep15Music_sft17BAIO.safetensors (ACE-Step 1.5 SFT merge)
text
Workflow Pipeline:
CheckpointLoader(160) → AnySwitch(model/clip/vae) → TextEncode(94) → KSampler(35 steps, dpmpp_3m_sde, beta, cfg=1) → VAEDecodeTiled → SaveAudioMP3(104)
Lyrics: String(252) → TextEncode.lyrics
Duration: mxSlider(274) → TextEncode + EmptyLatent
Negative: ConditioningZeroOut(47) → zeroes the positive conditioning
NodeClassRoleInjections94TextEncodeAceStepAudio1.5Main text encoderprompt → tags, lyrics ← 252, bpm, keyscale, duration ← 274, language252StringLyrics feed into node 94lyrics → String3KSamplerDenoising (35 steps, dpmpp_3m_sde, beta, cfg=1)seed ← 30798EmptyAceStep1.5LatentAudioCreates latent audio spaceseconds ← 274104SaveAudioMP3Output V0 MP3—128VAEDecodeAudioTiledVAE decode (tile=512, overlap=64)—160CheckpointLoaderSimpleLoads model—274mxSliderSong duration (seconds)duration → Xi and Xf307Seed (rgthree)Global seedseed → seed257Text ConcatenateBuilds output filenameartist+title+path47ConditioningZeroOutNegative prompt (zeroed)—78ModelSamplingAuraFlowShift=13Bypassed by default — use model_sampling: true to enable
NodeContent317Genre description table (38 genres with tags)318Keyscale/BPM reference table (38 genres × scale + key + BPM)320Structure example (metalcore duet with timeline)321Preset example (detailed scene-by-scene prompt)319LLM input example (NSFW lyrics prompt format)400Disconnected tags node (original rapcore tags, kept for reference)
json
{
"workflow": "acestep-rapcore",
"prompt": "comma-separated tags (under 512 chars)",
"lyrics": "structured lyrics with [section] tags",
"duration": 180,
"bpm": 150,
"keyscale": "E minor",
"language": "en",
"seed": -1
}
All parameters EXCEPT prompt and lyrics are optional. Omitted parameters keep their workflow defaults.
model_sampling (optional, boolean): Enables ModelSamplingAuraFlow (shift=13) for acestep-aio. Bypassed by default — it's 50/50 whether it improves quality, so safer to leave off. Set model_sampling: true if you want to experiment with it on.
Every caption should cover as many as possible, in 5-8 comma-separated tags:
text
pop, piano+strings+guitar, female warm vocal, melancholic intimate, bedroom pop
text
rock, metal, heavy distorted guitar, powerful drums, melodic vocals, aggressive, epic, dramatic, guitar solo
text
heavy distorted guitar, fast thrash drums, pounding bass, aggressive, dark
text
rapcore metal fusion, nu-metal, punchy bass, warm distorted guitar, crisp drums, melodic chorus, heavy grooves, atmospheric, polished production, angsty female vocal, emotional
raw, gritty, distorted (without balancing warmth) → metallic scraping, flat bassheavy bass → boomy/muddy; prefer punchy bass, deep sub-bass, defined bassaggressive on instruments → harsh overtones; use on emotion/vocal insteadWordEffectwarmAnalog-style saturation, smooth high endcrispClean transients, defined attackspunchyTight, compressed low-mids, good for bass/kickbrightBoosted highs, airy presencelushWide stereo, rich harmonics, reverb-heavydryClose-mic sound, minimal reverbairySpacious high end, breathypolishedStudio-quality, balanced EQrawUSE WITH CAUTION — unprocessed, potentially harshgrittyUSE WITH CAUTION — distortion artifacts
ACE-Step REQUIRES section markers to align music with lyrics:
text
[Intro], [Verse], [Pre-Chorus], [Chorus], [Bridge], [Build], [Drop],
[Breakdown], [Guitar Solo], [Piano Interlude], [Outro]
text
[whispered], [raspy vocal], [powerful belting], [spoken word],
[falsetto], [harmonies], [clean vocal]
text
[high energy], [low energy], [building energy], [euphoric],
[melancholic], [dreamy], [aggressive]
(bass rumbles in), (drums fade to silence)Zanim wyślesz jakikolwiek tekst do ACE-Step — musisz odpowiedzieć sobie na każde z tych pytań i nie wysłać dopóki wszystkie nie są "TAK":
Dopiero gdy na każde pytanie odpowiedź brzmi TAK — możesz wysłać do generacji.
text
Intro → [low energy] — sparse, building
Verse 1 → [low energy] — verse, storytelling, restrained
Pre-Chorus → [building energy] — tension rising
Chorus → [high energy] — maximum impact, full instrumentation
Verse 2 → [low energy] — second verse, slightly more energy
Pre-Chorus → [building energy]
Chorus → [high energy] — second chorus often bigger (harmonies)
Bridge → [low energy] — stripped back, different perspective
Breakdown → [high energy] — instrumental intensity (optional)
Final Chorus→ [high energy] — biggest version
Outro → [low energy] — fade out
Electronic
four-on-the-floor, bright synths, uplifting, dance-driven, glossy production, rhythmic, energeticmechanical, hypnotic rhythms, minimalistic, pulsing bass, industrial textures, dark, repetitiveeuphoric, soaring leads, emotional pads, rolling basslines, uplifting, spacious, melodic, anthemicrapid breakbeats, deep sub-bass, high-energy, sharp percussion, rolling rhythms, crisp, drivingheavy bass drops, wobbling synths, aggressive textures, syncopated rhythms, dark, cinematic, grittyshimmering chords, side-chained synths, emotional, bright leads, bouncy rhythms, glossy, melodicbooming 808s, sharp hi-hats, atmospheric pads, swaggering, dark, punchy, spaciousRock/Metal
crunchy guitars, steady drums, warm analog tone, energetic, melodic, vintage, riff-drivenheavy riffs, powerful drums, gritty vocals, aggressive, energetic, distorted, bold, drivingdistorted guitars, fast drums, dark atmosphere, aggressive, heavy, intense, powerful, tightcomplex structures, technical riffs, atmospheric layers, dramatic, epic, polished, dynamicUrban
dusty drums, soulful samples, rhythmic, warm textures, punchy kicks, nostalgic, organicmellow beats, vinyl crackle, soft keys, relaxed, dreamy, warm, minimal, hazysliding 808s, haunting melodies, gritty textures, cold atmosphere, syncopated, tense, urbanPop
catchy hooks, bright synths, polished production, upbeat, melodic, modern, radio-ready, cleanretro synths, bright pads, melodic, nostalgic, electronic, polished, dreamy, airyglossy production, bright synths, genre-blending, catchy hooks, polished, theatrical, vibrantSoft/Ambient
soft pads, atmospheric textures, spacious, minimal, calm, evolving, dreamy, subtle, meditativesweeping strings, dramatic percussion, epic, emotional, grand, polished, powerfulGenreScaleKey RangeBPM RangeEDM/HouseMinor, DorianD#m–Am120–128TechnoPhrygian, MinorFm–A#m125–135TranceMajor, MixolydianA–D130–142Drum & BassMinor, DorianEm–Gm170–178DubstepMinor, PhrygianFm–G#m138–150Future BassMajor, MinorC–F140–160TrapHarmonic MinorFm–Am130–150Hip-HopMinor, DorianDm–Gm85–95Lo-FiDorian, LydianCm–Fm60–85PopMajor, MixolydianC–G90–130Classic RockMinor PentatonicEm–Am100–140Hard RockMinor, PhrygianEm–Gm120–160MetalPhrygian, Harmonic MinorDm–F#m140–200Prog MetalDorian, Melodic MinorC#m–F#m120–180BluesBlues Scale, Minor PentatonicEm–Am70–120FunkMixolydian, DorianE–A100–120DiscoMixolydian, MajorF–Bb110–130R&BDorian, MinorDm–Gm60–100AmbientLydian, DorianC–F60–90CinematicMinor, Harmonic MinorCm–Fm60–120ReggaeMajor, MixolydianA–D70–90K-PopMajor, MinorC–F#100–140Anime OSTLydian, MajorC–E80–160
The workflow includes an example of how to structure a caption WITH a song structure plan:
text
metalcore, symphonic elements, theatrical, duet, heavy distorted guitar,
bright piano, studio-polished, dramatic, melodic, epic, intense.
Structure:
- Intro: brief intro dramatically builds to first verse
- Verse 1: atmospheric piano, sets scene, raspy male vocal only
- Verse 2: guitar power chords, groovy, young female vocal only
- Chorus: anthemic, layered, male+female duet harmonies
- Bridge: atmospheric, dreamy, calm, female vocal only
- Build-up: builds to epic instrumental solo
- Instrumental: fast guitar solo, lead licks, virtuoso shred
- End: powerful ending
This can go in the caption to give the model a temporal roadmap.
For maximum control, describe each section's instrumentation and mood in prose:
text
Intro: A metalcore-tinged, symphonic swell opens the track, with bright piano glimmering
over theatrical strings. Tension rises—studio-polished, dramatic—until it snaps into verse.
Verse 1: Drops to atmospheric piano, soft but charged. Raspy male vocal, intimate, whispered.
No guitars—just piano, subtle pads, suspended breath.
Verse 2: Guitar power chords crash in, groovy pulse. Young female vocal, bright and soaring.
Symphonic elements widen the space, cinematic lift.
Chorus: Erupts into anthemic, epic chorus. Male+female duet harmonies. Distorted guitars,
sweeping strings, pounding drums—polished, intense.
Bridge: Everything falls away. Dreamy, atmospheric, weightless. Soft pads, distant piano,
female vocal airy and ethereal. Suspended.
Build-up: Rhythmic pulses return. Low strings, tom rolls, rising synths. Guitars re-enter
in bursts. Energy coils toward instrumental break.
Instrumental: Fast guitar solo, virtuoso shred, rapid licks, melodic flourishes.
Symphonic backing, metalcore precision drums. Flashy, intense, climactic.
MethodPathDescriptionGET/Health check + server statusesGET/workflowsList available workflows with typesPOST/generate-and-waitPRIMARY — submit, wait, download, save. Use this for all generation.POST/promptSubmit workflow, return prompt_idGET/history/:prompt_idGet single prompt resultGET/historyAggregated history from all serversGET/queueAggregated queue (running + pending)GET/viewProxy media file downloadGET/system_statsFirst alive server system infoGET/object_infoProxy to ComfyUI object_infoGET/extensionsProxy to ComfyUI extensions
MethodPathDescriptionGET/generateGet generation options formPOST/generateSubmit image generationPOST/upload/imageUpload image to ComfyUI input dir
MethodPathDescriptionGET/media-listList generated files (name, size, date, preview URLs)POST/media-link-onceCreate one-time access token for a fileGET/media-once/:tokenAccess file via one-time token (no API key needed)
MethodPathDescriptionPOST/workflow/:name/promptQuick prompt submit for named workflow (auto-injects)
POST /generate-and-wait — Full Reference#bash
curl -s -X POST http://127.0.0.1:8188/generate-and-wait \
-H "Content-Type: application/json" \
-d '{
"workflow": "acestep-rapcore",
"prompt": "...",
"lyrics": "...",
"duration": 200,
"bpm": 150,
"keyscale": "E minor",
"language": "en",
"seed": -1
}'
Audio params: prompt (required), lyrics, duration, bpm, keyscale, language, seed
Image params: prompt (required), aspect_ratio, seed, steps, cfg
Common: workflow (default: acestep-rapcore), client_id
Success response:
json
{
"status": "ok",
"file": "/var/data/comfy-media/audio/example-output.mp3",
"filename": "example-output.mp3",
"type": "audio",
"server": "sec",
"workflow": "acestep-rapcore",
"file_size": 5882890
}
Output saved with metadata sidecar ( .json) in ~/media/comfy/<audio|images>/.
bash
pm2 restart genor-comfy-gate
pm2 logs genor-comfy-gate --lines 20
bash
curl -s http://127.0.0.1:8188/ | python3 -m json.tool
curl -s http://127.0.0.1:8188/queue | python3 -m json.tool
text
~/media/comfy/audio/ — generated MP3 files + .json sidecars
~/media/comfy/images/ — generated PNG files + .json sidecars
/history/:prompt_id every 2s until complete/fail/timeoutWhen we discover new caption patterns, texture word effects, or workflow tricks:
CHANGELOG.md (next to this skill)Baseline reference for ALL image generation models. Use this when constructing prompts for any image workflow. Each model has its own syntax — using the wrong format produces garbage.
ModelPrompt StyleQuality Tags (end)Negatives?NotesIllustrious XLBooru tags, underscores, commasmasterpiece, best quality, absurdresYesMost important tags FIRST. CFG 3-6. ~248 token limit.Animagine XL 4.0Tags + score tagsmasterpiece, high score, great score, absurdresYesScore tags have stronger impact. CFG 4-7. Euler a, 28 steps.SDXL BaseNatural language + photography termsN/A (built into description)YesCamera/lens specs, DOF, lighting. CFG 7. DPM++ 2M Karras.Z-Image TurboFull English sentences ONLYN/ANO (CFG=0)No tag soup. Photography vocab required. ~512 token cap.Base SD / 1.5Hybrid: NL description + quality tagsmasterpiece, best quality, highresYesMost flexible. CFG 7-9. 75 token chunks.
Format: Booru-style tags, comma-separated, underscores for multi-word.
Structure (order matters — first = most influence):
text
subject, physical attributes, clothing, pose, environment, lighting, camera angle, quality tags
Quality tags (ALWAYS at end): masterpiece, best quality, absurdres
Negative prompt:
text
worst quality, low quality, bad anatomy, bad hands, extra fingers, blurry, lowres, signature, watermark, username
For mature content add: loli, shota, child, aged_down
Weighting: (tag:1.2) = 20% stronger, (tag:0.8) = 20% weaker
Settings: CFG 3-6, Steps 25-32, Sampler Euler a
Rules:
mature, mature_female to positive to counter loli biasExample:
text
1girl, teenage, slavic, high cheekbones, fair skin, light blue eyes, long blonde hair, ponytail, school uniform, white button-up shirt, red ribbon, pleated miniskirt, cheerleader, pom-poms, thighhigh_socks, loafers, standing, leaning against locker, looking at viewer, confident smile, school hallway, afternoon sunlight, soft shadows, masterpiece, best quality, absurdres
Format: Tags with specific ordering. Score tags work here (unlike Illustrious).
Structure:
text
1girl/1boy/1other, character name, series, rating, everything else, quality tags
Quality tags (ALWAYS at end): masterpiece, high score, great score, absurdres
Score tags (stronger impact than quality tags): high score, great score, good score, average score, bad score, low score
Rating tags: rating:safe, rating:questionable, rating:explicit
Negative prompt:
text
lowres, bad anatomy, bad hands, text, error, missing finger, extra digits, fewer digits, cropped, worst quality, low quality, low score, bad score, average score, signature, watermark, username, blurry
Settings: CFG 5, Steps 28, Sampler Euler a
Rules:
Example:
text
1girl, teenage, slavic, high cheekbones, fair skin, light blue eyes, long blonde hair, ponytail, school uniform, white shirt, red ribbon, pleated skirt, cheerleader, pom-poms, thighhighs, loafers, standing, leaning against locker, looking at viewer, smile, school hallway, afternoon, masterpiece, high score, great score, absurdres
Format: Natural language with photography terminology. Full descriptive sentences.
Structure:
text
[Persona]: Age, Gender, Facial Features, Hair & Eyes, Expression, Pose
[Clothing]: Type, Material, Fit, Color, Accessories, Footwear
[Scene & Mood]: Environment, Lighting, Photography Style, Camera Settings
Key vocabulary:
Negative prompt:
text
cartoon, illustration, anime, painting, CGI, 3D render, unrealistic proportions, extra fingers, low quality, blurry, bad anatomy, bad hands, deformed, plastic skin, airbrushed
Settings: CFG 7, Steps 30, Sampler DPM++ 2M Karras
Rules:
Example:
text
A 17-year-old Slavic teenage girl with high cheekbones, fair skin, light blue eyes, and long blonde hair tied in a high ponytail, wearing a crisp white button-up shirt with a red ribbon tie, a short pleated navy blue miniskirt, white thigh-high socks, and polished leather loafers, holding cheerleading pom-poms and leaning casually against metal lockers in a bright school hallway, looking at the camera with a confident playful smile, warm afternoon sunlight streaming through windows, shot on Canon EOS 5D Mark IV, 85mm lens at f/1.8, shallow depth of field with creamy bokeh background
Format: Full natural English sentences ONLY. NO tag soup. NO comma-separated lists.
Critical rules:
Photography vocabulary:
Settings: CFG 0, Steps 8, Sampler Default (distilled)
Rules:
Example:
text
A teenage Slavic cheerleader with high cheekbones, fair skin dotted with light freckles, pale blue eyes, and long blonde hair tied in a slightly messy high ponytail stands in a bright school hallway, wearing a crisp white button-up shirt with a red ribbon loosely tied at the collar, a short pleated navy blue miniskirt, white thigh-high socks with a subtle cable-knit texture, and polished brown leather loafers, holding bright cheerleading pom-poms in her right hand and leaning casually against a row of blue metal lockers with a confident playful smile, warm afternoon sunlight streaming through tall windows casting long diagonal shadows across the linoleum floor, shot on a point-and-shoot film camera with slight overexposure giving a candid yearbook-photo aesthetic
Format: Hybrid — natural language description with quality tags appended at the end.
Structure:
text
[Natural language description of subject, clothing, pose, environment, lighting], masterpiece, best quality, highres
Quality tags (always at end): masterpiece, best quality, highres
Negative prompt:
text
lowres, bad anatomy, bad hands, text, error, missing fingers, extra digits, cropped, worst quality, low quality, blurry, ugly, deformed
Add for realistic: cartoon, illustration, anime, painting, CGI, 3D render, plastic, airbrushed
Add for anime: realistic, photograph, photorealistic, live action
Settings: CFG 7-9, Steps 25-30, Sampler Euler a or DPM++ 2M Karras
Rules:
Example:
text
A teenage Slavic girl with high cheekbones, fair skin, blue eyes, and long blonde hair in a ponytail, wearing a white button-up shirt with a red ribbon, a short pleated miniskirt, thigh-high socks, and loafers, holding cheerleading pom-poms, standing in a school hallway leaning against lockers, looking at camera with a confident smile, afternoon sunlight, masterpiece, best quality, highres
For fully automated workflows where user input → prompt → image:
Key principle: The system prompt for the LLM handling this should output ONLY the finalized prompt. No greetings, no explanations, no code fences, no model name, no settings, no negative prompt. Just the raw prompt text.
text
CheckpointLoader(43) → LoRA stack(47,80) → Resolution(17) → KSampler(7, 12 steps LCM) →
UltimateSDUpscale(88, 2x, 4x-UltraSharp) →
FaceDetailer NIP(97) → FaceDetailer V(98) → FaceDetailer P(101) →
FaceDetailer face(104, 1024px, 6 steps) → FaceDetailer hands(105, 2048px, 6 steps) →
SeedVR2VideoUpscaler(114, 2048px final) → CRT Post-Process(115) → SaveImage(200)
LoRAStrengthPurposeAddMicroDetails v60.2Skin texture, fine detailsPersonEnhanceV2 ILL0.1Better anatomy/faceTrendCraft Style Detailer v2.4I0.1Overall polish/detail
LoRAStrengthPurposeDTLVVTT DMD2 V5-LITE1.0DMD2 distillation (faster/better LCM)
Sequential detailers with YOLO detectors:
nipples_yolov8s-seg.pt) — nipple detection, 1024px, denoise 0.4nsfw-seg-vagina-x.pt) — vagina detection, 1024px, denoise 0.4nsfw-seg-penis-x.pt) — penis detection, 1024px, denoise 0.4Anzhc Face seg 768MS v2 y8n.pt) — face detection, 1024px, 6 steps, denoise 0.4PitHandDetailer-v2-Test-v9c.pt) — hand detection, 2048px, 6 steps, denoise 0.5seedvr2_ema_7b_sharp-Q4_K_M.gguf (quantized 7B)ema_vae_fp16.safetensorsCRITICAL: LUSTIFY is Illustrious-based — use Danbooru-format tags, NOT natural language descriptions.
text
masterpiece, best quality, amazing quality, very aesthetic, absurdres
text
1girl, solo, cute, petite, pale skin, medium breasts
text
gym uniform, white shirt, sports shorts, sneakers, ponytail
text
jumping, dynamic pose, looking at viewer
text
gym background, afternoon light, dutch angle, from below
text
blurry, worst quality, bad quality, error, melted body, bad anatomy, bad hands, disfigured
masterpiece, best quality are weighteddutch angle, from below, from above, close-upsunlight, god rays, afternoon light, backlight1girl, solojson
{
"workflow": "acestep-aio",
"prompt": "masterpiece, best quality, 1girl, cute, ...",
"aspect_ratio": "7:9 (Portrait)",
"seed": -1
}
Valid aspect ratios:
1:1 (Square)4:5 (Portrait)7:9 (Portrait) ← default, best for single character3:2 (Landscape)16:9 (Landscape)9:16 (Portrait)Additional optional params: megapixels (default 1.5), steps, cfg, denoise, sampler_name, scheduler
Export workflow JSON from ComfyUI → save to workflows/<name>.json
Add entry to WORKFLOW_INFO in server.js: js
'<name>': { file: '<name>.json', type: 'audio'|'image'|'video', ext: 'mp3'|'png'|'mp4',
promptNode: '94', promptField: 'tags', lyricsNode: '252', lyricsField: 'String',
outputNode: '104' }
Restart: pm2 restart genor-comfy-gate
Test, then document in this SKILL.md
The gateway auto-handles: prompt injection, duration, BPM/keyscale (audio), aspect_ratio (image), seed, polling, download from correct server, save to media dir, metadata sidecar.
MUST USE — these scripts handle the full lifecycle: install, build, run, update, restart.
bash
cd ~/.openclaw/workspace/projects/Genor-Comfy-Gate
bash install.sh
Does everything: npm install → create media dirs → create workspace → PM2 start/save.
bash
cd ~/.openclaw/workspace/projects/Genor-Comfy-Gate
bash autobuild.sh
Full update cycle: git pull → npm install → pm2 restart genor-comfy-gate.
Use this after pulling changes, updating workflows, or modifying server code.
ActionCommandInstall depsnpm installCreate dirsmkdir -p ~/media/comfy/audio ~/media/comfy/imagesCreate workspacemkdir -p ~/projects/genor-comfyui/{workflows,custom_instructions/prompt_templates,generations/{images,audio},exports}Start (PM2)pm2 start server.js --name genor-comfy-gate -- --port 8188Start (PM2 ecosystem)pm2 start pm2-ecosystem.config.cjsDev mode (hot-reload)npm run devDirect runnode server.js --port 8188Restartpm2 restart genor-comfy-gateStoppm2 stop genor-comfy-gateLogspm2 logs genor-comfy-gateStatuspm2 list | grep genor-comfy-gateHealth checkcurl -s http://127.0.0.1:8188/ | python3 -m json.tool
bash
cd ~/.openclaw/workspace/projects/Genor-Comfy-Gate
# 1. Install everything
bash install.sh
# 2. Verify it's running
curl -s http://127.0.0.1:8188/ | python3 -m json.tool
# 3. Check logs
pm2 logs genor-comfy-gate --lines 20
bash
cd ~/.openclaw/workspace/projects/Genor-Comfy-Gate
bash autobuild.sh
masterpiece, best quality) must come FIRST — they're weightedgetOutputInfo() function returned undefined filenames despite reading them from history correctly. Fixed by inlining output scanning in the handler.raw, gritty, heavy drops cause metallic scraping and flat bass. Use warm, crisp, punchy, polished for clean instruments.