Dashboard Integration
A handful of variable names are reserved by the dashboard: publishing telemetry under these keys drives specific UI surfaces instead of being rendered as a generic parameter. You normally don’t set these keys directly — use the helper functions below, which publish them for you.
Helper Functions
Section titled “Helper Functions”declare_scene(kind="default", **config)
Section titled “declare_scene(kind="default", **config)”from omniloop import declare_scene
declare_scene( kind="humanoid", joints=["left_hip_pitch", "right_hip_pitch", "left_knee", "right_knee", "left_shoulder_pitch", "right_shoulder_pitch"],)Declares the 3D scene type rendered by the dashboard’s spatial canvas. Publishes the __scene__ variable.
kind="default"— grid, velocity vector, trajectory trace, and lidar scatter. No robot rendered; works with any telemetry.kind="humanoid"— adds a stick-figure rig. Passjointsas a list of joint variable-name prefixes; the canvas readsjoint_<prefix>from telemetry for each one. Withoutjoints, an analytic walking animation driven by velocity is shown, labelled “DEMO”.
declare_execution_graph(nodes)
Section titled “declare_execution_graph(nodes)”from omniloop import declare_execution_graph
declare_execution_graph([ {"id": "preprocess", "desc": "Preprocess inputs"}, {"id": "forward", "desc": "Forward pass"}, {"id": "backward", "desc": "Backward pass"},])Declares the list of execution-graph nodes shown in the dashboard’s left sidebar. Publishes the __exec_nodes__ variable.
tracker.set_active_node(node_id)
Section titled “tracker.set_active_node(node_id)”from omniloop import tracker
tracker.set_active_node("forward")Marks which declared execution-graph node is currently active, highlighting it in the sidebar. Publishes the __exec_active__ variable. Unlike declare_scene/declare_execution_graph, this is a tracker method rather than a top-level import — call it as often as your active node changes (e.g. once per graph step).
Reserved Telemetry Keys
Section titled “Reserved Telemetry Keys”These keys are populated by the helpers above (or internally by the SDK) and consumed directly by dashboard components. Publishing a value under one of these keys yourself will be interpreted the same way.
| Key | Set by | Consumed by | Payload |
|---|---|---|---|
__scene__ |
declare_scene() |
Spatial Canvas | JSON scene descriptor: {"kind": ..., ...config} |
__exec_nodes__ |
declare_execution_graph() |
Left Sidebar | JSON list of {"id", "desc"} |
__exec_active__ |
tracker.set_active_node() |
Left Sidebar | The active node’s id string |
__source_files__ |
Set automatically by TrainingLoop/instrumentation when a script path is known |
Left Sidebar | JSON list of {"name", "lines": [{"key", "label", "line"}, ...]}, used for “go to line” source navigation |
__schema__ |
Set automatically on every publish_telemetry_raw() call once you’ve declared a schema (see YAML Param Schema) |
Dashboard control panel | The declared parameter schema |
watch_trip |
Set automatically by the core for as long as a watchpoint trip is live | Event Console, /stats |
{"name", "condition", "value"} |
limit_clamp |
Set automatically by TrainingLoop for ~1.5 s after a limits= clamp is enforced (see Limit Enforcement) |
Clamp badge on the control, Event Console | {"name", "requested", "clamped", "min", "max"} |