Skip to main content
The Twin (twin) node reads a digital twin and its assigned controller policy and exposes them as structured outputs. Use it upstream of Fuzzy Matcher so voice pipelines know which command strings are valid for that robot, and to surface controller identity/mode to downstream nodes.
Palette category: Data Sources. Runs on cloud and edge (edge workers resolve the policy via the Cyberwave API).

Inspector

  • Digital Twin — combobox selector.
  • twin_uuid is stored in node parameters, not the generic input-mapping row.

Policy resolution

The node resolves the active policy from:
  1. Twin controller_policy FK, or
  2. twin.metadata.controller_policy_uuid
If neither is set, execution fails with a clear error.

Outputs

FieldTypeDescription
namestringTwin display name
assetstringAsset slug from policy metadata (or first linked asset)
devicestringInput device from policy metadata (e.g. keyboard)
control_actuationsarrayLocomotion actuation slugs from metadata.keyboard_bindings (move_forward, turn_left, …)
control_labelsarrayHuman-readable labels from all keyboard bindings
controller_namestringmetadata.controller_name on the assigned controller policy
controller_typestringmetadata.controller_type on the assigned controller policy
control_modestringmetadata.control_mode on the assigned controller policy
control_actuations only includes locomotion slugs (WASD-style). Non-locomotion bindings (lights, camera, take_photo) appear in control_labels but not in control_actuations.

Fuzzy Matcher wiring

Twin outputFuzzy Matcher inputNotes
control_actuationscandidatesMatch STT against actuation slugs (move_forward)
control_labelscandidatesMatch STT against spoken labels (Move Forward)

Execution targets

TargetNotes
CloudWorkflowUtils._execute_twin_node — reads twin + policy from Postgres
EdgeCode emitter calls client.twins.get + controller-policies API