Skip to main content

Manifest Overview

Manifest files define how experiments are built and run. The repository must contain an aichor_manifests/ folder at its root: this is the only location AIchor looks for manifests, so every manifest must live there. Subfolders within aichor_manifests/ are also accepted, allowing manifests to be organised as needed.

When triggering an experiment, a specific manifest is chosen either through the commit message (for commit triggers) or with the --manifest-path option in the CLI.

AIchor validates the selected manifest before each experiment run, so misconfiguration is caught early.

Quick reference

A minimal manifest, with only the required fields:

kind: AIchorManifest      # optional — defaults to "AIchorManifest"
apiVersion: 0.2.3 # optional — defaults to the current schema version

builder:
image: myimage # builder is required as a key, but all of its fields are optional
dockerfile: ./Dockerfile

spec:
operator: jobset
image: myimage
command: "python3 -u main.py"
types:
worker:
resources:
ramRatio: 2 # either ramRatio or memory must be set

Only builder and spec are required at the top level. Within spec, the required fields are operator, image, command and types; each entry in types needs a resources block, which must set exactly one of ramRatio or memory. Everything else is optional or has a default — for example builder.context defaults to ., resources.cpus defaults to 1, and kind/apiVersion are filled in automatically.

For schema setup and IDE autocompletion, see Schema and IDE Support. For the full field-by-field specification, see the Manifest Reference.