Skip to content

YAML Param Schema Format

The parameter schema tells the OmniLoop dashboard what controls (sliders, toggles, text inputs) and readouts to render for your application. This means no manual UI code (like App.jsx edits) is needed.

When you use the TrainingLoop API, this schema generation is handled under the hood. However, you can also define it explicitly via a YAML file or programmatically.

Use explicit schemas when you are building a custom integration using the Raw SDK Primitives and need to define how the dashboard should render your state and mutations.

Load your YAML schema at startup with load_param_schema("params.yaml").

params:
- name: learning_rate # key used in get_mutations()/publish_telemetry_raw
type: float # float | int | bool | string
kind: slider # slider | toggle | readonly | text
min: 0.00001
max: 0.01
step: 0.00001
default: 0.0003
label: "Learning Rate" # optional, defaults to `name`
group: "Optimizer" # optional section heading in the dashboard
- name: reward_mean
type: float
kind: readonly # display-only metric, no mutation control
Field Required? Description
name Yes Key used in mutations and telemetry payloads.
type Yes How the dashboard parses the value: float, int, bool, or string.
kind Yes Control type: slider (requires min/max/step), toggle (for bools), readonly (display-only), or text (free-form entry).
min, max, step No Required if kind is slider. Defines the range and granularity.
default No Initial value shown in the dashboard before the first telemetry frame arrives.
label No Display name in the UI. Defaults to the name field if omitted.
group No Section heading to group related parameters together visually.

If you prefer defining schemas in code rather than YAML, use the declare_param function:

from omniloop import declare_param
declare_param(
"learning_rate",
type="float",
kind="slider",
min=0.00001,
max=0.01,
step=0.00001,
default=0.0003,
label="Learning Rate",
group="Optimizer"
)