VYBS LoRAs

Hosting repo for VYBS style 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.


URL pattern

https://huggingface.co/vybs-ai/vybs-loras/resolve/main/<path-in-repo>

Use /resolve/main/. Do not use /blob/main/ β€” that serves an HTML preview page, and fal will fail to parse it as a tensor file.

βœ… https://huggingface.co/vybs-ai/vybs-loras/resolve/main/2d/flux/vybs-2d-flux-dev-v1.safetensors
❌ https://huggingface.co/vybs-ai/vybs-loras/blob/main/2d/flux/vybs-2d-flux-dev-v1.safetensors

Folder layout

Folders are organised base model first. This is load-bearing, not cosmetic: a Flux LoRA will not load on WAN, Qwen-Image or SDXL. The folder tells you which base a file is loadable against before you ever open it.

2d/
  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/   reserved β€” character LoRAs (empty)
products/     reserved β€” product LoRAs (empty)

characters/ and products/ are reserved for future non-style LoRAs. There is currently no SDXL LoRA in this repo, so there is no 2d/sdxl/ folder; add one when the first SDXL run lands.


Naming convention

vybs-<domain>-<style>-v<N>.safetensors
  • lowercase, hyphens only, no spaces or underscores
  • <domain> β€” content domain (2d for the brand illustration style)
  • <style> β€” the base-model flavour the LoRA was trained against
  • v<N> β€” explicit version, bumped on every retrain; never overwrite a version

The base model is repeated in the filename on purpose, so a file that gets downloaded out of its folder is still self-describing and can't be loaded onto the wrong base.


Contents

Repo path Base model Trigger phrase Steps Size
2d/flux/vybs-2d-flux-dev-v1.safetensors Flux dev (none recorded) 1000 124.9 MB
2d/flux/vybs-2d-flux-turbo-v1.safetensors Flux turbo ohwx-Vybs-turbo-flux-trainer 1000 123.2 MB
2d/qwen/vybs-2d-qwen-image-v1.safetensors Qwen-Image (none recorded) 1000 562.8 MB
2d/krea2/vybs-2d-krea2-v1.safetensors Krea 2 (fal/krea-2) vybs-illustration-Krea2 100 223.8 MB
2d/ideogram/vybs-2d-ideogram-v4-v1.safetensors Ideogram v4 vybs-ideogram 1000 81.4 MB
2d/z-image/vybs-2d-z-image-turbo-v1.safetensors Z-Image Turbo Vybs-z-image-turbo-trainer-v2 2000 81.2 MB
wan/vybs-2d-wan-22-a-v1.safetensors WAN 2.2 vybs-art-wan-22 1000 292.6 MB
wan/vybs-2d-wan-22-b-v1.safetensors WAN 2.2 vybs-art-wan-22 1000 292.6 MB

Qwen-Image LoRA: rank 32, alpha 1. Krea 2 LoRA: rank 32, alpha 32, bf16.

⚠️ 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 training job. Neither file records which expert it is, so they are named neutrally rather than guessed at:

File SHA-256
wan/vybs-2d-wan-22-a-v1.safetensors 1b7241d315c7256e3792969f6aa5a275c18917e972fd759458d5b2129cdcaa34
wan/vybs-2d-wan-22-b-v1.safetensors 5c77561513005fc9d7cc362a3f88ccdb662ede775ba1168eefecea52e7d1316b

Once the mapping is confirmed, rename to -high-noise-v1 / -low-noise-v1.


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 only apply to the two Flux LoRAs. The Qwen-Image, Krea 2, Ideogram v4, Z-Image and WAN files 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

{
  "prompt": "a toucan perched on a branch, vybs 2d illustration style",
  "image_size": "square_hd",
  "num_inference_steps": 28,
  "guidance_scale": 3.5,
  "num_images": 1,
  "loras": [
    {
      "path": "https://huggingface.co/vybs-ai/vybs-loras/resolve/main/2d/flux/vybs-2d-flux-dev-v1.safetensors",
      "scale": 1.0
    }
  ]
}

JavaScript β€” @fal-ai/client

import { fal } from "@fal-ai/client";

fal.config({ credentials: process.env.FAL_KEY });

const result = await fal.subscribe("fal-ai/flux-lora", {
  input: {
    prompt: "a toucan perched on a branch, vybs 2d illustration style",
    image_size: "square_hd",
    num_inference_steps: 28,
    guidance_scale: 3.5,
    loras: [
      {
        path: "https://huggingface.co/vybs-ai/vybs-loras/resolve/main/2d/flux/vybs-2d-flux-dev-v1.safetensors",
        scale: 1.0,
      },
    ],
  },
  logs: true,
  onQueueUpdate: (update) => {
    if (update.status === "IN_PROGRESS") {
      update.logs.map((l) => l.message).forEach(console.log);
    }
  },
});

console.log(result.data.images[0].url);

Install with npm install @fal-ai/client.

Python β€” fal_client

import os
import fal_client

os.environ["FAL_KEY"] = "..."  # or export it in your shell

LORA_URL = (
    "https://huggingface.co/vybs-ai/vybs-loras/resolve/main/"
    "2d/flux/vybs-2d-flux-dev-v1.safetensors"
)

def on_queue_update(update):
    if isinstance(update, fal_client.InProgress):
        for log in update.logs:
            print(log["message"])

result = fal_client.subscribe(
    "fal-ai/flux-lora",
    arguments={
        "prompt": "a toucan perched on a branch, vybs 2d illustration style",
        "image_size": "square_hd",
        "num_inference_steps": 28,
        "guidance_scale": 3.5,
        "loras": [{"path": LORA_URL, "scale": 1.0}],
    },
    with_logs=True,
    on_queue_update=on_queue_update,
)

print(result["images"][0]["url"])

Install with pip install fal-client.


Adding a new LoRA

hf upload vybs-ai/vybs-loras <local-file> <base-folder>/vybs-<domain>-<style>-v<N>.safetensors --no-private

Then confirm the URL serves the file rather than an HTML page:

curl -sIL "https://huggingface.co/vybs-ai/vybs-loras/resolve/main/<path>" | grep -iE "^HTTP|^content-type|^location"

Expect a final HTTP/2 200 with content-type: application/octet-stream (via a location: redirect to the CDN). A content-type: text/html means the path is wrong or you used /blob/main/.

Downloads last month
-
Inference Providers NEW
This model isn't deployed by any Inference Provider. πŸ™‹ Ask for provider support