Sign In

FKEY Style | Painterly Anime LoRA for MOSS-Image

1

Not recently loaded

Download

1 variant available

bf16 SafeTensor

fkey-lora-r4-muon-step6840-comfy.safetensors

BF16, good balance • 17.8 MB

Verified:

Type
LoRA
Stats

309

1

7

Reviews
Published

Oct 21, 2026

Base Model

MOSS Image

Training
Steps: 6,840
Epochs: 45
Usage Tips
Strength: 0.6
Hash
AutoV2
113D490F64
Moss__00339_.png

FKEY Style Adapter for MOSS-Image-SFT

An ultra-lightweight painterly-anime style LoRA — rank 4, 18.66 MB, trained with the Muon optimizer.

This adapter teaches MOSS-Image how FKEY renders: finely finished, luminous faces and hair set against loose, breathable gouache brushwork on clothing and background — a selective-focus contrast rather than a uniform filter. Skin stays smooth and warm with peach undertones, shadows stay soft and readable, and the palette stays muted and sophisticated. Line quality is clean throughout: no rough sketch marks, no heavy outlines — and it does this without locking every generation into one character or outfit.

  • Base model: MOSS-Image-SFT (OpenMOSS, 5B Single-Stream DiT)

  • Trigger: <|artist|>fkey<|/artist|> on the first line, then a newline

  • Recommended strength: 0.4 – 0.8 (start at 0.6)

  • File size: 18,661,560 bytes (BF16, split q/k/v, ComfyUI-ready)


1. What is MOSS-Image? (30-second primer)

If you have never used this model before, here is everything you need to run this LoRA.

MOSS-Image is OpenMOSS's 5B text-to-image model. Its architecture is unusual for a Stable-Diffusion-style workflow:

  • Backbone — A 5B single-stream DiT (42 layers)

  • Text Encoder — A frozen Qwen3.5-9B — a full LLM, not CLIP/T5

  • VAE — FLUX.2 VAE

  • Native features — In-image text rendering, JSON layout control, prompts up to ~4K tokens

  • Prompt styles — Natural language, Booru tags, or structured JSON, all accepted

Because the text encoder is an actual LLM, MOSS-Image responds to long, descriptive English prose far better than to tag soup. It also accepts special structural tokens of the form <|...|>, which is exactly what this LoRA uses as its trigger.

Two checkpoints exist: Base (raw, meant for further training) and SFT (the recommended inference model). This LoRA was trained directly on SFT, so it matches the model you are actually generating with.


2. Quick Start

2.1 The trigger line (this part matters)

Put this on the very first line of your positive prompt — no spaces inside the token, no trailing period — then press Enter and write your scene:

<|artist|>fkey<|/artist|>
A young woman with silver hair sits by a rain-streaked window at night, ...

Why so strict? The Qwen3.5-9B tokenizer treats <|...|> as structural tokens. We measured the tokenization of several candidate wrappers directly on the model's tokenizer and confirmed that <|artist|>fkey<|/artist|> and <|artist|> fkey <|/artist|> . do not produce the same token sequence — inserting spaces around the term and appending a period shifts the BPE merge boundaries and measurably weakens the trigger. The trained format is the tight one, followed by a newline.

If the style is not showing up strongly enough, check this line before you change anything else.

  • Base model — MOSS-Image-SFT — BF16 or int8_convrot both fine

  • LoRA strength — 0.4 – 0.8 — Start at 0.6. Go up to 0.8 for bold brushwork; drop to 0.4 – 0.5 when the prompt already carries a heavy style block

  • Steps — 16 – 28 — 16 is sharp; 25 is better for complex lighting

  • CFG — 3.0 – 3.5 — Above ~4.5 the contrast burns out

  • Scheduler / Sampler — sgm_uniform + euler — Standard flow-matching pairing

  • Flow shift — 5.0 — Apply with ModelSamplingSD3 (or the MOSS flow-shift node)

  • Resolution — ~0.65 – 1.0 MP — 768×1024, 848×1200, 1024×1024, 1200×848 — multiples of 16

  • Negative prompt — Optional but useful — See templates below


3. Copy-Paste Prompt Templates

Three working examples, one per use case. They are deliberately different in kind, not just in subject:

  • A — Selective focus — sharply finished faces against loose gouache brushwork — JSON layout, multi-panel

  • B — Control — the painterly layer switched off by the negative prompt — Sectioned wrappers

  • C — Genre transfer — a different property, single frame — JSON layout, single canvas

Common settings: euler + sgm_uniform, 50 steps, shift 5.0, strength 0.6.

Note on the trigger line: in the examples below, the trigger is followed by a literal \n (backslash + n, two characters), not a real line break — that is exactly how these samples were generated. Copy the blocks as they are. If you build a prompt by hand, a real line break also works; the trigger tokens themselves are what matter.


A. Ryokan 2-koma — selective-focus gouache

The key phrase is contrasted against: it splits the frame into precision-rendered skin and hair versus loose, visible brushwork on cloth and architecture. Drop that contrast and the painterly layer disappears.

Positive

<|artist|>fkey<|/artist|>\n{
  "summary": {
    "meta": ["comic", "multi_panel", "digital_painting"],
    "canvas": "multi_panel",
    "caption": "High-taste, fully colored 2-panel vertical 2D digital painting comic (2koma) with selective focus: finely rendered, luminous facial features, glistening highlights, and delicate hair strands contrasted against expressive, breathable painterly gouache brushwork on the sailor uniform and traditional wooden architecture. Muted, sophisticated warm peach skin and deep navy-blue color palette with soft bright indoor daylight, smooth creamy skin tones, crisp Chinese comic dialogue text in clean speech bubbles, zero rough sketch lines, 1girl, 1boy, school uniform, sailor collar, hair bun, traditional Japanese inn, ryokan, luggage, uncensored."
  },
  "items": [
    {
      "label": "object",
      "caption": "Top-left horizontal panel: A traveler seen from behind stretching his arms high overhead in relief against a peaceful mountain village landscape.",
      "bbox": [-740, -480, -520, 120]
    },
    {
      "label": "object",
      "caption": "Upper-right vertical panel: A 40-year-old bald, heavy-set man in a casual short-sleeve shirt and trousers standing beside a parked car, holding a travel suitcase handle in his left hand and looking calmly toward the inn.",
      "bbox": [-730, 80, -30, 480]
    },
    {
      "label": "object",
      "caption": "Middle-left panel: Exterior view of a charming, rustic traditional Japanese two-story wooden country inn (minshuku) with tiled roofs nestled among mountain trees in warm daylight.",
      "bbox": [-500, -490, -150, 90]
    },
    {
      "label": "text",
      "caption": "Ornate, stylized Japanese manga title logo in bold dark-navy and warm crimson typography with a clean decorative frame.",
      "text": "《深山秘汤与看板娘美咲》\n—偏僻村落的独行宿泊记—",
      "bbox": [-150, -490, -20, -150]
    },
    {
      "label": "character",
      "caption": "Main lower-center portrait focus: Our slender 15-year-old Japanese teenage schoolgirl (Misaki Shirosawa) with true adolescent grace—neither a big-headed 10-year-old child nor a mature 20-year-old woman. She has a softly tapered chin, a slender graceful neck, a small mole under her left eye, fair creamy peach-flushed skin, bright expressive light-amber eyes, and silky dark-brown hair tied up into a slightly loose, cute round bun at the back with airy, translucent wisps of bangs falling naturally across her forehead. She wears a plain matte dark-navy short-sleeve sailor school uniform top with three clean white stripes and a pleated navy skirt, leaning slightly forward with her hands clasped politely in front of her lap and a warm, welcoming smile as she greets the bald man seen from behind in the lower-right foreground.",
      "bbox": [-40, -260, 740, 490]
    },
    {
      "label": "object",
      "caption": "Lower-left vertical sub-panel: Inside the wooden hallway entrance, the bald traveler stands on the left facing the petite 15-year-old sailor-uniform schoolgirl holding her school bag on the right as they chat.",
      "bbox": [40, -490, 680, -270]
    },
    {
      "label": "text",
      "caption": "Bold comic sound effect text in the top-right corner.",
      "text": "咔嗒",
      "bbox": [-740, 390, -610, 470]
    },
    {
      "label": "text",
      "caption": "Clean vertical Chinese narration text on the upper-right.",
      "text": "人生过四十之后,我把\n旅行定为了自己的爱好",
      "bbox": [-720, 260, -510, 340]
    },
    {
      "label": "text",
      "caption": "Clean vertical Chinese narration text at the top-center.",
      "text": "每逢连休我就会\n离开都市去远方",
      "bbox": [-740, 20, -560, 95]
    },
    {
      "label": "text",
      "caption": "Clean vertical Chinese narration text in the upper-left panel.",
      "text": "虽说是旅行,但我既不\n转游观光胜地,反而更\n喜欢去那种连导游书上\n都不会登载的偏僻土地",
      "bbox": [-730, -300, -530, -155]
    },
    {
      "label": "text",
      "caption": "Clean vertical Chinese narration text on the far upper-left.",
      "text": "对我而言,旅行或许是一项为了\n远离都市的人群、独自一人整理\n纷繁复杂的人际关系的行为。",
      "bbox": [-730, -470, -530, -350]
    },
    {
      "label": "text",
      "caption": "Clean vertical Chinese narration text in the middle-center.",
      "text": "因此,这次的旅游目的地也是\n一个人迹罕至的深山小村庄。",
      "bbox": [-480, -60, -280, 10]
    },
    {
      "label": "text",
      "caption": "Clean vertical Chinese narration text above the wooden inn roof.",
      "text": "我很中意在网络角落里偶然发现\n的一家充满手工感的民宿网站,\n于是决定住在那儿。",
      "bbox": [-480, -180, -280, -80]
    },
    {
      "label": "text",
      "caption": "Clean vertical Chinese greeting text in speech bubble on the middle-left.",
      "text": "你好!",
      "bbox": [-180, -390, -30, -310]
    },
    {
      "label": "text",
      "caption": "Clean vertical Chinese dialogue text in speech bubble to the right of the girl's head.",
      "text": "您是今天预约的客人吗?",
      "bbox": [-40, 160, 260, 265]
    },
    {
      "label": "text",
      "caption": "Small vertical Chinese greeting text between the girl and the bald man.",
      "text": "你好啊\n今天请多关照",
      "bbox": [230, 180, 430, 280]
    },
    {
      "label": "text",
      "caption": "Clean vertical Chinese dialogue text in speech bubble to the left of the girl.",
      "text": "哇—谢谢您!其实这地方差不多算是\n我妈的兴趣,基本上都没什么客人来呢",
      "bbox": [-30, -270, 340, -140]
    },
    {
      "label": "text",
      "caption": "Clean horizontal Chinese character name tag near the bottom-left.",
      "text": "白泽美咲(15)",
      "bbox": [620, -270, 690, -30]
    }
  ],
  "bbox_coord_space": "abs_centralized",
  "bbox_format": "yxyx"
}

Negative

<|texture_and_style_neg|>photorealistic, real human, 3d render, cgi, photograph, monochrome, greyscale, black and white, screentones, draft, messy lines, manga draft, lineart only, sketch, rough sketch, messy construction lines, uncolored patches, unpolished, camera flash, microscopic pores, film grain, green skin, zombie skin, blotchy skin patches, harsh unblended skin blocks, over-sharpened hard edges, vector art, plastic skin, oversaturated neon colors, gaudy gold embroidery, wet long hair covering eyes, thick black outlines<|/texture_and_style_neg|>
<|age_and_body_neg|>child, toddler, preteen, loli, 6 years old, 8 years old, 10 years old, oversized head, big round babyface, short stubby neck, wide-open staring eyes, doll-like stiff face, flat chest, mature 20-year-old woman, adult woman, milf, old, 25 years old, 30 years old, curvy, plump, chubby, fat, wide adult hips, large breasts, huge breasts, C-cup, hard muscle planes, six-pack abs, gaunt ribs, heavy makeup, thick black eyelashes<|/age_and_body_neg|>
<|universal_anatomy_neg|>blurry, out of focus, lowres, censored, mosaic censoring, bar censor, ugly face, distorted face, overly squished grotesque cheek, worst quality, bad anatomy, fused bodies, fused legs, extra limbs, extra arms, extra legs, extra hands, three hands, extra fingers, mutated hands, fused fingers, six fingers, extra penis, two penises, detached penis, floating hand, watermark, signature<|/universal_anatomy_neg|>

B. Commercial clean variant — brushwork suppressed by the negative prompt

Same trigger line, same adapter. What changes is the negative prompt: it bans rough brushwork, visible brushstrokes, gouache, watercolor bleed, impasto, painterly outright. The painterly layer is therefore defeated by negation, not by lowering strength — which makes this the cleanest demonstration of control on this page.

Note also that the positive prompt asks for the opposite of FKEY's usual rendering: Crisp, refined delicate lineart ... fully finished studio masterpiece with zero rough brushstrokes and zero sketch lines.

Positive

<|artist|>fkey<|/artist|>\n<|style_and_aesthetic|>Ultra-polished, high-completion commercial 2D anime illustration, character duality split-composition on a clean pastel-blue and warm cream gradient background. Crisp, refined delicate lineart, smooth seamless skin shading with luminous specular highlights, intricately rendered floral lace patterns, and silky hair strands—fully finished studio masterpiece with zero rough brushstrokes and zero sketch lines. Sophisticated warm peach skin, pure white, and pale sky-blue color palette under soft bright indoor daylight, 1girl, multiple views, same character in two states, tall slender 17-year-old girl, 7.5-head-tall proportions, platinum-blonde braided hair, white sundress, safe, wholesome.<|/style_and_aesthetic|>
<|left_close_up|>Occupying the left half of the frame in a large waist-up close-up: a tall, slender, long-limbed 17-year-old teenage girl with elegant adolescent bone structure, a defined jawline, softly tapered chin, a long graceful neck, delicate collarbones, and silky platinum-blonde hair in two slightly loose, natural twin braids with airy wispy bangs and a crisp white lily hair ornament. Her chin is tilted slightly at a three-quarter angle with a soft warm peach-pink blush on her cheeks and watery, luminous emerald-green eyes with sharp, jewel-like catchlights and a wistful, gentle expression. She wears her crisp white sundress with an intricately rendered pale-blue sheer floral lace high collar and a neat blue satin ribbon tied at her collarbone. Her slender hands with cleanly drawn fingers gently cradle a fresh white lily blossom with glistening morning dewdrops against her chest, while a few loose platinum-blonde flyaway strands and floating white flower petals catch the warm sunlit rim light.<|/left_close_up|>
<|right_full_body|>In sharp contrast, standing on the right side in a smaller full-body view: the exact same tall, long-legged 17-year-old blonde braided girl with elegant 7.5-head-tall bishoujo proportions, a small head, and long slender legs. She smiles gently at the viewer with clear, luminous emerald-green eyes, fully and modestly dressed in her wide-brimmed white sun hat with a fluttering blue ribbon, a crisp white sleeveless knee-length pleated sundress with a pale-blue collar, white knee-high stockings with neat blue ribbons, and glossy white Mary Jane shoes standing on a subtle floral stone step, with five cleanly drawn slender fingers gently touching the brim of her sun hat and her other hand resting naturally against her pleated skirt.<|/right_full_body|>

Negative

<|texture_and_style_neg|>nsfw, nude, naked, cleavage, underwear, bra, panties, exposed skin, sexual, bodily fluids, sweat, cum, unfinished, unpolished, rough brushwork, visible brushstrokes, gouache, watercolor bleed, impasto, painterly, sketch, rough sketch, draft, wip, work in progress, messy lines, loose lines, uncolored patches, flat shading, blurry edges, smudged, photorealistic, real human, 3d render, cgi, photograph, monochrome, greyscale, screentones, camera flash, microscopic pores, film grain, blotchy skin, vector art, plastic skin, thick black outlines, pokemon, nintendo, cosplay, wig<|/texture_and_style_neg|>
<|age_and_body_neg|>11 years old, 12 years old, 13 years old, 5-head-tall, 6-head-tall, short legs, stubby legs, round chubby cheeks, baby fat, elementary school student, child, toddler, preteen, loli, 6 years old, 8 years old, 10 years old, oversized head, big round babyface, short stubby neck, wide-open staring eyes, doll-like stiff face, flat chest, mature 30-year-old woman, milf, old, curvy, plump, chubby, fat, wide adult hips, huge breasts, D-cup, hard muscle planes, six-pack abs, gaunt ribs, heavy makeup<|/age_and_body_neg|>
<|universal_anatomy_neg|>blurry, out of focus, lowres, ugly face, distorted face, worst quality, bad anatomy, fused bodies, fused legs, extra limbs, extra arms, extra legs, extra hands, three hands, extra fingers, mutated hands, fused fingers, six fingers, polydactyly, malformed hands, claw hand, cramped fingers, twisted wrist, broken finger joints, feet cut off, watermark, text, signature<|/universal_anatomy_neg|>

C. Single-frame portrait — dark window light

One canvas instead of a panel grid. This is the closest to a plain illustration: a diagonal three-quarter body against backlit window shadow.

Positive

<|artist|>fkey<|/artist|>\n{
  "summary": {
    "meta": ["comic", "single", "digital_painting"],
    "canvas": "single",
    "caption": "High-taste, fully colored 2-panel vertical 2D digital painting comic (2koma) with selective focus: finely rendered, luminous facial features, glistening highlights, and delicate hair strands contrasted against expressive, breathable painterly gouache brushwork on the clothing and dark dramatic window shadow background. Muted, sophisticated warm peach skin and deep navy-blue and crisp white color palette with soft bright indoor daylight, smooth creamy skin tones, crisp Chinese comic dialogue text in clean rectangular narration boxes, zero rough sketch lines, 1girl, solo, tohno akiha, black long hair, hairband, arms crossed, looking down, serious, uncensored."
  },
  "items": [
    {
      "label": "character",
      "caption": "Main diagonal three-quarter medium-full portrait of Tohno Akiha (远野秋叶): Our slender 15-to-16-year-old Japanese teenage girl (tohno akiha) with true adolescent grace—neither a big-headed 10-year-old child nor a mature 20-year-old woman. She has a softly tapered chin, a slender graceful neck, fair creamy peach-flushed skin, sharp expressive dark-amber/crimson eyes, and long, straight silky jet-black hair reaching past her waist, topped with her signature crisp white hairband and airy, translucent wisps of bangs. She wears a classic long-sleeve white blouse with a small dark ribbon tied at the collar and a high-waisted dark-navy pleated long skirt. Tilting her body diagonally against dramatic dark mansion window light-and-shadow beams, she folds both arms calmly across her chest, looking down to the left with a composed, wistful, and dignified expression.",
      "bbox": [-420, -280, 720, 480]
    },
    {
      "label": "text",
      "caption": "Clean vertical Chinese narration text in a white rectangular box at the top-right corner.",
      "text": "每个人都扮演着与自身\n身份相符的角色",
      "bbox": [-680, 290, -390, 440]
    },
    {
      "label": "text",
      "caption": "Clean vertical Chinese narration text in a thin white rectangular box on the upper-right.",
      "text": "这是没办法的事",
      "bbox": [-500, 220, -290, 295]
    },
    {
      "label": "text",
      "caption": "Clean vertical Chinese narration text in a white rectangular box in the upper-center.",
      "text": "远野家家主的身份,\n是由他人赋予的",
      "bbox": [-650, 90, -310, 210]
    },
    {
      "label": "text",
      "caption": "Clean vertical Chinese narration text in a thin white rectangular box near the center.",
      "text": "但这并不是我想要的",
      "bbox": [-490, 30, -220, 95]
    },
    {
      "label": "text",
      "caption": "Clean vertical Chinese narration text in a white rectangular box in the upper-left.",
      "text": "所谓身份,\n并不是只能被赋予的,\n也可以靠自己获得",
      "bbox": [-670, -410, -320, -260]
    },
    {
      "label": "text",
      "caption": "Clean vertical Chinese narration text in a small white rectangular box on the far upper-left.",
      "text": "我有一个梦想",
      "bbox": [-430, -460, -250, -395]
    },
    {
      "label": "text",
      "caption": "Clean vertical Chinese narration text in a white rectangular box in the middle-left.",
      "text": "我所获得的,\n是远野志贵的妹妹\n这个身份",
      "bbox": [-190, -310, 120, -160]
    },
    {
      "label": "text",
      "caption": "Clean vertical Chinese narration text in a thin white rectangular box on the middle-left.",
      "text": "因为他心里的第一名不存在",
      "bbox": [-40, -365, 240, -300]
    },
    {
      "label": "text",
      "caption": "Clean vertical Chinese narration text in a white rectangular box in the bottom-left.",
      "text": "我不奢求太多……\n因为即便以这个身份,\n我也可以一直一直\n待在那个人身边…",
      "bbox": [300, -445, 650, -265]
    },
    {
      "label": "text",
      "caption": "Clean vertical Chinese narration text in a thin white rectangular box at the far bottom-left corner.",
      "text": "那就是我当时的愿望",
      "bbox": [430, -490, 710, -430]
    }
  ],
  "bbox_coord_space": "abs_centralized",
  "bbox_format": "yxyx"
}

Negative

<|texture_and_style_neg|>photorealistic, real human, 3d render, cgi, photograph, monochrome, greyscale, black and white, screentones, manga draft, lineart only, sketch, rough sketch, messy construction lines, uncolored patches, unpolished, camera flash, microscopic pores, film grain, green skin, zombie skin, blotchy skin patches, harsh unblended skin blocks, over-sharpened hard edges, vector art, plastic skin, oversaturated neon colors, gaudy gold embroidery, wet long hair covering eyes, thick black outlines<|/texture_and_style_neg|>
<|age_and_body_neg|>child, toddler, preteen, loli, 6 years old, 8 years old, 10 years old, oversized head, big round babyface, short stubby neck, wide-open staring eyes, doll-like stiff face, flat chest, mature 20-year-old woman, adult woman, milf, old, 25 years old, 30 years old, curvy, plump, chubby, fat, wide adult hips, large breasts, huge breasts, C-cup, hard muscle planes, six-pack abs, gaunt ribs, heavy makeup, thick black eyelashes<|/age_and_body_neg|>
<|universal_anatomy_neg|>blurry, out of focus, lowres, censored, mosaic censoring, bar censor, ugly face, distorted face, overly squished grotesque cheek, worst quality, bad anatomy, fused bodies, fused legs, extra limbs, extra arms, extra legs, extra hands, three hands, extra fingers, mutated hands, fused fingers, six fingers, extra penis, two penises, detached penis, floating hand, watermark, signature<|/universal_anatomy_neg|>

4. Why This LoRA Exists

4.1 MOSS-Image does not respond to individual artist names — on purpose

In controlled A/B tests on MOSS-Image-SFT, we probed how the model reacts to artist and studio names with everything else held fixed. Three tiers emerged:

  • Tier 1 — name alone changes style: only globally famous entities such as Studio Ghibli, Hayao Miyazaki, Akira Toriyama, Ilya Kuvshinov, WLOP, Studio Trigger.

  • Tier 2 — name alone barely moves, needs explicit visual descriptors: e.g. Makoto Shinkai (name alone adds one cloud; add volumetric god-rays and lens flare and the style appears).

  • Tier 3 — no detectable response at all: the vast majority of Pixiv / Danbooru community illustrators, including fkey.

The cause is upstream: roughly 80% of MOSS-Image's training captions were re-generated by Gemma 4 under a strict "include only information visible in the image" instruction. An artist's handle is metadata — invisible — so it was deleted. The remaining ~20% of raw captions are not enough for a 42-layer DiT to build a stable mapping from a name to a brush style.

4.2 Repainting does not recover the style either

Feeding an original artwork through MOSS-Image with a faithful caption.long reproduces composition, pose, clothing folds, props and light direction at ≥95% fidelity — but the artist's line-weight curvature, brush edges, and non-standard facial proportions are lost entirely, collapsing back to generic anime rendering.

Describing those quirks with explicit geometric words (four-point-star white highlights, diagonal pink blush hashing, droopy half-lidded eyes) produces a stiff "collage face", not the original hand.

A trained adapter is the only reliable path. That is what this file is.

4.3 The harder problem: character bleed

FKEY's portfolio is dominated by a small number of recurring original characters — 117 of the 203 curated images are the same character. A conventional rank 32/64 LoRA, or one trained on Booru tag soup, will happily memorize that face, hairstyle and outfit, and then apply them to every prompt at inference. You ask for a knight, you get the character; you ask for a landscape, you get the character.

This was solved with three deliberate constraints:

1. An aggressive rank 4 information bottleneck (alpha = 4.0, 18.66 MB) Across the 42-layer DiT with the attn-mlp preset, rank 4 simply does not have the capacity to store a character identity. It is forced to spend its few parameters on what is invariant across all 203 images: brush texture, colour grading, shadow falloff, eye and lip rendering.

2. Zero Booru tags — 1:1:1 multi-length natural language captions Raw Booru tags are noisy (we found posts labelled nude that were actually a figure in a tight white bodysuit) and they encourage token-level memorization of names. Every image instead carries three verified prose captions — short / medium / long — sampled at exactly 1:1:1. Because the prose explicitly describes hair, eyes, clothing and props, the frozen text encoder absorbs the content, leaving the tiny adapter to learn only style.

3. Muon instead of AdamW The adapter's 2D matrices were optimized with Muon (Newton–Schulz orthogonalized momentum) at a constant 3e-4 after a 20-step warmup. Muon amplifies under-represented singular directions, which lets a rank-4 adapter reach a stylistic range that normally requires a much larger rank — without inflating capacity.


5. How It Was Trained

  • Trainer — KohakuMossTrainer

  • Base checkpoint — OpenMOSS-Team/MOSS-Image-SFT

  • Hardware — 1× NVIDIA RTX 5090 D, 32 GB (peak allocation 16.15 GiB)

  • Dataset — 203 hand-curated FKEY illustrations, all ≥ 1.02 MP native; dominant bucket 848×1200; 54 aspect-ratio buckets; mean crop loss 0.24%; horizontal flip disabled

  • Manifest — 609 records = 203 images × 3 caption lengths, exactly 1:1:1, every record prefixed with < — artist — >fkey< — /artist — > + newline

  • Adapter — lora, preset attn-mlp (DiT only — text encoder untouched), dim = 4, alpha = 4.0

  • Optimizer — muon, lr = 3e-4, constant schedule, 20 warmup steps

  • Batching — batch = 4, grad accum = 1 → 152 steps = one full pass over all 609 caption variants (each image seen 3× per cycle)

  • Caption dropout — 0.0

  • Total steps — 6,840 (45 complete caption cycles)

  • Distributed checkpoints — 152-step increments retained for resume; no intermediate build is distributed

  • Export — BF16, split q/k/v, .safetensors, 18,661,560 bytes

Why train on SFT rather than Base? Base is the usual recommendation for training, but the adapter is meant to be used on SFT — training on the exact inference checkpoint removes one distribution gap. Every sample in this release was produced through SFT.

Note on the text encoder: this LoRA contains no CLIP/TE weights. It patches the DiT only. That is why LoraLoaderModelOnly works and why strength behaves predictably.


6. Strength Guidance

There is one released version: v1.0, fully converged (6,840 steps).

Because the adapter is trained all the way to convergence, it is dense — at high strength it will dominate the prompt. The workable range is 0.4 – 0.8:

  • 0.4 – 0.5 — Subtle. Colour grading and lighting shift only. Use when your prompt already describes a heavy style, or when exact layouts and in-image text must survive.

  • 0.6 — Recommended default. Clearly FKEY, still fully controllable.

  • 0.7 – 0.8 — Bold brushwork and strong contrast. Good for portraits and atmosphere shots.

  • > 0.9 — Over-applied. Contrast crushes, colour nuance flattens, layout tokens get ignored.

Rule of thumb: the more your prompt already says about style, the lower the strength. If identity drifts or a layout collapses, cut the strength before you rewrite the prompt.


7. ComfyUI Wiring

  1. Load MOSS-Image-SFT (BF16 or INT8), the Qwen3.5-9B text encoder, and the FLUX.2 VAE as usual.

  2. Add LoraLoaderModelOnly (search: Load LoRA (Model Only)). It exposes a single MODEL input/output — no CLIP wire required, because this adapter does not touch the text encoder.

  3. Select fkey-lora-r4-muon-step6840-comfy.safetensors, set strength_model = 0.6.

  4. Place it either before or after ModelSamplingSD3 — the order is mathematically irrelevant. The LoRA patches network weights (patches), while the shift node patches the sampling schedule (object_patches["model_sampling"]); they occupy independent slots.

  5. Trigger line on top of the positive prompt, then describe your scene.


8. Limitations & Honest Notes

  • Not high-contrast cel shading, and not neon-lit. The look here is warm, soft-daylight and muted-palette. If you want hard cel edges, crushed blacks or neon rim light, this adapter will fight you — that is a different style, not a strength setting.

  • This is a style adapter, not a character LoRA. It will not reproduce specific FKEY characters reliably. If you want a character, train or merge a separate character adapter.

  • Strength above ~0.9 over-applies contrast and flattens colour nuance.

  • Booru tag prompts will work, but the adapter was trained exclusively on prose, so natural language gives you the intended result more consistently. Mixing tags is fine; leading with tags is not ideal.

  • AI-generated content. This adapter was trained on scraped illustrations for style-learning purposes. Check the licensing and usage terms of the base model and of your local jurisdiction before commercial use.

  • No reference outputs are bundled with the training claims above. The three prompt templates are calibrated starting points; expect to tune them for your own scene.


9. Credits & License

  • Base model: MOSS-Image by the OpenMOSS team — Apache 2.0. Please credit them.

  • Trainer: KohakuMossTrainer — supports LoRA/LyCORIS fine-tuning of MOSS-Image at low VRAM.

  • Adapter: released for the community. Attribution appreciated but not required.

  • Style reference: FKEY. This adapter is an independent, unofficial study of a visual style; it is not affiliated with or endorsed by the artist.


If this adapter saves you time, a reaction or a sample image is the best thanks — it helps other MOSS-Image users find it.