# kromoss-image An image model inside a capsule: [Kromoss](https://huggingface.co/lodestones/Kromoss) (a MOSS-Image fine-tune, Apache-2.0) with its 8-step DMD2 LoRA, on diffusers. Text in, 1024x1024 PNG out, about 19 s per image on an NVIDIA GB10. ## What it shows - **The `image.generate` kind**: m64's front lets `POST /v1/images/generations` through and only `prompt` and `seed` in its body. `steps`, `guidance` and the like get a 400 that names the field. - **Big weights as `[[artifacts]]`**: about 40 GB from one Hugging Face repo at a fixed commit, only the files the pipeline needs. The capsule folder stays a few KB. - **`[params]`**: the settings the server bakes in (size, steps, guidance, shift, LoRA), published in the manifest and returned as `params_used` with every image, so a result can be reproduced from its seed. - **`[routes] extra`**: one more path, `/v1/config`, let through by the front. - **A Dockerfile on NVIDIA's PyTorch image**, pinned by digest, with every pip package at an exact version. - **Progress in `$M64_STATUS`**: loading, warming (one short generation), ready. ## Where the weights go The first serve downloads them before the container starts. To do that ahead of time, without starting anything: ```sh m64 install examples/kromoss-image ``` m64 checks each file against the repo's commit and mounts the folder read-only at `/weights/kromoss`; the container itself has no network. By default artifacts live under `~/.cache/m64`. To keep them on a bigger disk or a NAS, shared by every capsule: ```sh m64 config set models_dir /mnt/models ``` ## Run it ```sh m64 check examples/kromoss-image m64 examples/kromoss-image # serve it and open /human/ ``` Loading takes a few minutes (40 GB to read and move to the GPU). It needs about 40 GB of GPU memory: a GB10, or an x86 card with that much (then set `platform` and `gpu` in `capsule.toml` to what `m64 doctor` prints). ## Try it ```sh curl -s /v1/images/generations \ -H 'Content-Type: application/json' \ -d '{"prompt": "a tabby cat holding a sign that says MOSS", "seed": 42}' \ | python3 -c 'import sys,json,base64; d=json.load(sys.stdin); open("out.png","wb").write(base64.b64decode(d["data"][0]["b64_json"])); print(d["seed"], d["params_used"])' ``` The same prompt and seed give the same image, byte for byte.