Hosting repo for VYBS LoRAs, published public so they can be loaded by bare
URL from fal.ai workflows. fal fetches loras[].path without
any Hugging Face token, so a private repo would fail with 401 partway through a
generation.
Start here:illustration/flux/vybs-illustration-turbo-flux_Album_V2.safetensors
is the production LoRA. Trigger vybs2d. It supersedes V1, which baked the
background colour in unpromptably. The other base models were a bake-off and are
kept for reference only.
Control complexity with plain language, not tags. V2 was trained with invented
vybslv1…vybslv5 level tags and they do not work — measured 6.4–7.2 mean pixel
distance against a 107.2 colour-word reference, i.e. inert. Describing the scene
instead ("a single gold coin alone, nothing else" → "a mountain of coins, flat
confetti, a radial burst of hard-edged flat wedges") scores 43.8–65.5 on the same
weights. Ignore the tags; write the description.
Album (collectible-card album illustration set), Kayla (UGC character set)
V<N>
Which retrain?
V1, V2, … never overwrite a version
Hyphens inside a field, underscores between fields. The base model is repeated in
the filename on purpose: a file downloaded out of its folder is still
self-describing and cannot be loaded onto the wrong base by accident.
Folder layout
Folders are <domain>/<base>/. The base folder is load-bearing, not cosmetic —
a Flux LoRA will not load on WAN, Qwen-Image or Z-Image, and the folder tells you
which base a file is valid against before you open it.
illustration/ brand art style, trained on the Album set
flux/ Flux dev + turbo — transformer.single_transformer_blocks.*
qwen/ Qwen-Image — modelspec.architecture = qi/lora
krea2/ Krea 2 (fal/krea-2)— blocks.*.attn.wk
ideogram/ Ideogram v4 — conditional_transformer.layers.*
z-image/ Z-Image Turbo — transformer.layers.*.adaLN_modulation
wan/ WAN 2.2 — transformer.blocks.*.attn1.*
characters/ a specific person / avatar
flux/
z-image/
products/ reserved — product LoRAs (does not exist yet)
Those right-hand fingerprints are how the base model was actually determined.
Filenames lie; safetensors tensor keys do not. To identify an unknown LoRA, read
its header rather than trusting whoever named it.
Use /resolve/main/. Do not use /blob/main/ — that serves an HTML
preview page with HTTP 200, so fal fails on a content error rather than an
obvious 404.
Trigger phrases live in the fal trainer config JSON emitted next to each
adapter, not in the weights — if you lose the config, the trigger phrase is gone.
Record it here at upload time.
Both were trained on the same image set. The Flux one records no flavour, so it
is named plain flux rather than guessing dev vs turbo. No trigger phrase was
recorded for either.
⚠️ The two WAN 2.2 adapters
WAN 2.2 A14B uses a high-noise / low-noise expert pair, and these two files
are almost certainly that pair — identical size and tensor layout, emitted two
seconds apart by the same job. Neither file records which expert it is, so they
are named neutrally rather than guessed at:
Once confirmed, rename to wan-22-high-noise / wan-22-low-noise.
Using these from fal.ai
fal-ai/flux-lora accepts a bare URL in loras[].path — no auth header, which
is exactly why this repo is public.
These examples apply to the Flux LoRAs only. Qwen-Image, Krea 2, Ideogram v4,
Z-Image and WAN each need their own base-matched fal endpoint; passing them to
fal-ai/flux-lora will fail to load. Check fal's model catalogue for the current
endpoint id per base.
JSON
json
1{2"prompt":"ohwx-Vybs-turbo-flux-trainer a toucan perched on a branch",3"image_size":"square_hd",4"num_inference_steps":28,5"guidance_scale":3.5,6"num_images":1,7"loras":[8{9"path":"https://huggingface.co/vybs-ai/vybs-loras/resolve/main/illustration/flux/vybs-illustration-turbo-flux_Album_V1.safetensors",10"scale":1.011}12]13}
JavaScript — @fal-ai/client
js
1import{ fal }from"@fal-ai/client";23fal.config({credentials: process.env.FAL_KEY});45constLORA=6"https://huggingface.co/vybs-ai/vybs-loras/resolve/main/"+7"illustration/flux/vybs-illustration-turbo-flux_Album_V1.safetensors";89const result =await fal.subscribe("fal-ai/flux-lora",{10input:{11prompt:"ohwx-Vybs-turbo-flux-trainer a toucan perched on a branch",12image_size:"square_hd",13num_inference_steps:28,14guidance_scale:3.5,15loras:[{path:LORA,scale:1.0}],16},17logs:true,18onQueueUpdate:(u)=>{19if(u.status==="IN_PROGRESS") u.logs.map((l)=> l.message).forEach(console.log);20},21});2223console.log(result.data.images[0].url);
Install with npm install @fal-ai/client.
Python — fal_client
python
1import os
2import fal_client
34os.environ["FAL_KEY"]="..."# or export it in your shell56LORA_URL =(7"https://huggingface.co/vybs-ai/vybs-loras/resolve/main/"8"illustration/flux/vybs-illustration-turbo-flux_Album_V1.safetensors"9)1011defon_queue_update(update):12ifisinstance(update, fal_client.InProgress):13for log in update.logs:14print(log["message"])1516result = fal_client.subscribe(17"fal-ai/flux-lora",18 arguments={19"prompt":"ohwx-Vybs-turbo-flux-trainer a toucan perched on a branch",20"image_size":"square_hd",21"num_inference_steps":28,22"guidance_scale":3.5,23"loras":[{"path": LORA_URL,"scale":1.0}],24},25 with_logs=True,26 on_queue_update=on_queue_update,27)2829print(result["images"][0]["url"])
Expect a final HTTP/2 200 with content-type: application/octet-stream (via a
location: redirect to the CDN). content-type: text/html means the path is
wrong or you used /blob/main/.
Then add a row to the Contents table above with the base model, trigger
phrase and step count. The table is the only place that information survives.
Renaming an existing LoRA
Do not download and re-upload — Hugging Face can copy LFS files server-side, so a
rename moves no bytes: