iris studio's manifest
iris studio makes images from FLUX.2 Klein and Z-Image through a native Metal engine in C behind a Go server — the same shape as h3 studio, for stills. Its registry entry carries its manifest inline. It passes four of the seven criteria a manifest can answer: it declares neither memory nor disk, no test profile and no SDK major.
The file is studios/iris-studio.yaml, shown in full. A note follows the line it explains.
# A registry entry: a pointer at iris studio's repository
# (schema/registry-entry.json, docs/design/05-sdk-and-custom-studios.md §5a).
#
# The manifest belongs in the studio's own repository as helmstudio.yaml, beside
# the code it describes, so that a studio can announce a new build step without
# waiting for a helmstudio release. iris studio does not ship one yet, so the
# manifest is carried inline here — and the pull request that moves `ref` to a
# commit where it does ship one deletes the inline copy, leaving one copy again.
#
# Where the inline manifest sets id, repo or ref, each must equal this entry's;
# the validator enforces it. There is no `certified` field: a level is derived
# from what has actually been checked, never declared by the thing being
# checked (docs/decisions.md M7 Q4, Q15).
id: iris-studio
The id the studio is known by everywhere, and the file is named for it.repo: https://github.com/janishar/iris-studio
Where helmstudio clones from, with git.ref: b4f857f4d484f91cbbd6e48ba79f3879e49a253c
A full commit, so what was reviewed is what installs.
manifest:
Inline, because the repository ships no helmstudio.yaml at this commit. Its id, repo and ref must equal the pointer's. id: iris-studio
The same id as the pointer's. name: iris studio
The name people see. description: Native Metal image generation across the FLUX.2 Klein and Z-Image checkpoints.
One sentence saying what the studio does. kinds: [image]
Images. license: MIT
The studio's own licence. repo: https://github.com/janishar/iris-studio
The same repository as the pointer's. ref: b4f857f4d484f91cbbd6e48ba79f3879e49a253c
The same commit as the pointer's. submodules: true
The engine, iris.c, is a submodule, and the first build step runs inside it. peak_ram_gb: 30 # README: "fits your disk/RAM; ~16-30GB per model" — upper bound, unverified against a real checkpoint
The upper end of the README's range, as the comment says: an estimate, which is better than nothing. requires:
An Apple Silicon Mac and five tools. No memory or disk is declared, which is why criterion 2 fails. os: [darwin]
arch: [arm64]
tools: [git, make, gcc, xxd, go]
runtime:
A native kernel on Metal, in C. framework: native-kernel
backends: [metal]
precision: [bf16]
language: c
# None: iris at this ref has no helmstudio dependency in its go.mod, so it
# calls no platform service. Declaring capabilities it does not use would
# ask the user to grant access nothing reaches for, which is criterion 9
# backwards (docs/decisions.md M7 Q3).
capabilities: []
None. iris calls no platform service at this commit, so it asks for nothing and gets no token at all. network: [huggingface.co, cdn-lfs.huggingface.co]
The hosts it is expected to contact, for its weights. build:
Two steps, in order: the engine, built with make in its submodule, then the Go server. - name: Build the iris engine
cwd: iris.c
run: make mps
- name: Build the studio server
cwd: .
run: go build -o iris-studio .
weights:
Five checkpoints, all selectable: one is chosen before install, install downloads only that one, and the others are fetched or linked when they are wanted. - { name: flux_klein_4b, repo: black-forest-labs/FLUX.2-klein-4B, dest: flux-klein-4b, selectable: true }
- { name: flux_klein_4b_base, repo: black-forest-labs/FLUX.2-klein-base-4B, dest: flux-klein-4b-base, selectable: true }
- { name: flux_klein_9b, repo: black-forest-labs/FLUX.2-klein-9B, dest: flux-klein-9b, selectable: true }
- { name: flux_klein_9b_base, repo: black-forest-labs/FLUX.2-klein-base-9B, dest: flux-klein-9b-base, selectable: true }
- { name: zimage_turbo, repo: Tongyi-MAI/Z-Image-Turbo, dest: zimage-turbo, selectable: true }
processes:
One process: the Go server, which drives the engine. - name: studio
role: main
heavy: true
It holds the model. cmd: "./iris-studio --iris ./iris.c/iris --model {models.selected} --port {port}"
{models.selected} becomes the path of whichever checkpoint was chosen. A launch with no choice made is refused. port: { prefer: 8720 }
health: { tcp: true, timeout_s: 30, interval_s: 2 }
A TCP connection on its port is enough to call it ready. ui: /