Skip to content
helmstudio
Contents

The manifest

A studio is described by one file, helmstudio.yaml: what it is, what it needs from the machine, how to build it, which weights to fetch, and how to run it. The manifest reference lists every field, generated from the schema helm validate checks against.

It lives in the studio's repository

The manifest sits at the root of the studio's own repository, beside the code it describes, so a studio can add a build step or a process without waiting for a helmstudio release. A registry entry is a pointer — an id, a repository and a pinned ref — and it carries a copy of that commit's manifest beside it. The copy is what the annotated examples on this site read.

A studio stays its own repository. helmstudio never vendors, forks, patches or imports a studio's code: it clones the repository, runs the build steps the manifest declares, and supervises the processes it names. Someone who clones a studio directly and ignores helmstudio entirely still has a studio that works. Four things follow from that:

The four launch studios are separate repositories with separate stacks: a native Metal engine in C behind a Go server, the same shape for images, an MLX model behind a Python server, and PyTorch behind FastAPI. None had a front-end toolchain, and none had to adopt one. A studio built against the runtime SDK talks to a provider, not to helmstudio — under helm dev while it is being written, under the daemon once it is installed, and the manifest is the same file in both.

Anyone can write one

Most repositories worth running will never ship a manifest, so writing one for a repository you did not write is an ordinary thing to do. See wrap a repository.

Where helmstudio finds a studio's manifest

Every studio in the library is resolved from three sources, highest first:

  1. Local — a manifest you wrote, imported or duplicated, kept in helmstudio's data directory as studios/<id>.yaml.
  2. The studio's repository — helmstudio.yaml at the pinned ref, from its installed checkout, or from the copy cached when it was fetched.
  3. The registry — a manifest carried inline by the pointer.

The first source that has a file wins, whether or not that file is valid. A local manifest with a typo in it does not quietly fall through to the registry's version of a studio you meant to override: the studio is listed as invalid, with the errors and a way to edit it. Reverting a local manifest moves it aside rather than deleting it, and the source beneath it applies again.

What every manifest declares

id, name, kinds, requires, runtime and processes are required, and so is repo, unless local_path names a checkout already on the machine. The schema also describes run, a shorthand for a single process, but a manifest that uses it cannot validate today, because processes is required whether or not run is present. Use processes, even for one.

Nothing runs until you have seen what will

Installing a studio runs someone else's code with your permissions, and so does launching one. So install and launch stop first at an approval screen, for a manifest from any source, including one you wrote. It shows every command, byte for byte and grouped by when it runs — build steps at install, each process's command and health check at every launch, the importer on first launch — with the capabilities the studio asks for written as sentences, and the network hosts it declares.

Approving records a digest of exactly what will execute. When a manifest changes any of that, the next install or launch asks again.

How much of helmstudio to take

A manifest says which of the three packages a studio uses, and nothing obliges it to use any.

The four adoption levels Four levels, describing how much of helmstudio a studio chooses to take. Level 0, nothing: the studio takes none of the three packages and still installs, launches and runs, which has to stay viable or helmstudio is not a launcher. Level 1, css: it takes helm-css only, so it looks like the family and keeps its own identity hue, and stores nothing centrally. Level 2, css and runtime: assets, gallery, records and jobs, behind the studio's own interface. Level 3, all three: the prebuilt gallery, player, terminal and timeline elements. A dashed note records that helm studio init, which would scaffold level 3, is not built. These are not the certification levels, which are a separate idea. Level 0 · nothing Takes none of the three, and still installs, launches and runs. This has to stay viable, or helmstudio is not a launcher. Level 1 · css helm-css only. It looks like the family and keeps its own identity hue, and stores nothing centrally. Level 2 · css + runtime Assets, gallery, records and jobs, behind the studio's own interface rather than a supplied one. Level 3 · all three The prebuilt gallery, player, terminal and timeline elements, as custom elements a page can place. not built — helm studio init, which would scaffold level 3 These are not the certification levels. That is a different idea.
A level is a choice, not a score. A studio with an unusual interface may sit at level 2 for ever, and that is a success rather than a gap.

sdk names the major versions a studio needs, and capabilities names what its token may reach — so a studio that declares no capabilities is asking helmstudio for nothing at all, and gets no token.

Certification levels are earned, never declared

A studio's certification level is derived from what has been checked; no field sets it. Today only two are reachable: Draft, for a manifest with local_path, and Unverified, for every other. Verified and Registry need a smoke harness that does not exist yet. See publishing.

Annotated examples

The four launch studios' manifests, line by line: h3, ltx, iris and AuK.