{
  "version": 1,
  "language": "en",
  "title": "Use robot tools with local control",
  "description": "The VLA path and the tool-using planner use local execution. The planner calls learned or analytic skills and examines their results. Typed validation, fast control and protection stay local. The top deployment constraints are schematic and do not imply that all published VLAs use the same gate.",
  "caption": "Figure 7. The VLA path and semantic-tool path use local execution. An agent can call learned or analytic skills, examine outcomes and recover. Typed validation, high-rate control and protection stay near the robot. The top deployment constraints are schematic. Not all published VLAs have this gate. The author made this diagram.",
  "alt": "Hybrid control flow calls learned or analytic skills, does outcome checks and keeps validation, fast control and protection local.",
  "sources": [
    {
      "path": "content/blog/2026-09-08_robot-use-agents/post.md",
      "description": "Article explanation and retained source citations"
    }
  ],
  "limitations": [
    "The execution is an example. Playback duration is not measured runtime.",
    "These mechanism traces are constructed examples, not robot measurements. The top deployment constraints do not imply that all published VLAs use the same authorization gate."
  ],
  "targets": {
    "observations": {
      "id": "mechanism-observations",
      "kind": "node",
      "label": "Observations"
    },
    "vla": {
      "id": "mechanism-vla",
      "kind": "node",
      "label": "VLA policy"
    },
    "vlaLocal": {
      "id": "mechanism-vlaLocal",
      "kind": "node",
      "label": "Local control"
    },
    "agent": {
      "id": "mechanism-agent",
      "kind": "node",
      "label": "Frontier agent"
    },
    "skills": {
      "id": "mechanism-skills",
      "kind": "node",
      "label": "Typed skill tools"
    },
    "toolLocal": {
      "id": "mechanism-toolLocal",
      "kind": "node",
      "label": "Local execution"
    },
    "obsPolicy": {
      "id": "mechanism-obsPolicy",
      "kind": "edge",
      "label": "Supply observations"
    },
    "policyLocal": {
      "id": "mechanism-policyLocal",
      "kind": "edge",
      "label": "Send the action"
    },
    "vlaFeedback": {
      "id": "mechanism-vlaFeedback",
      "kind": "edge",
      "label": "Supply observations"
    },
    "agentSkill": {
      "id": "mechanism-agentSkill",
      "kind": "edge",
      "label": "Call a skill"
    },
    "skillLocal": {
      "id": "mechanism-skillLocal",
      "kind": "edge",
      "label": "Send the skill request"
    },
    "toolEvidence": {
      "id": "mechanism-toolEvidence",
      "kind": "edge",
      "label": "Supply results"
    }
  },
  "stateLabels": {
    "route": "Selected route",
    "artifact": "Current output",
    "local": "Local execution",
    "feedback": "Received result"
  },
  "scenarios": [
    {
      "id": "semantic-tools",
      "title": "Typed-skill operation and outcome inspection",
      "description": "Use a typed skill. Then examine its result.",
      "initial": {
        "route": "No selected route",
        "artifact": "No proposal",
        "local": "No execution",
        "feedback": "No new evidence"
      },
      "unselected": [
        "observations",
        "vla",
        "vlaLocal",
        "obsPolicy",
        "policyLocal",
        "vlaFeedback"
      ],
      "steps": [
        {
          "title": "Select a typed request",
          "description": "Select a typed request.",
          "duration": 3000,
          "active": [
            "agent"
          ],
          "paths": [],
          "state": {
            "route": "Semantic tool loop",
            "artifact": "Typed request",
            "local": "No execution",
            "feedback": "No new evidence"
          }
        },
        {
          "title": "Call an available skill",
          "description": "Call an available skill.",
          "duration": 3000,
          "active": [
            "skills"
          ],
          "paths": [
            "agentSkill"
          ],
          "state": {
            "route": "Semantic tool loop",
            "artifact": "Learned or analytic skill proposal",
            "local": "No execution",
            "feedback": "No new evidence"
          }
        },
        {
          "title": "Validate the request. Execute it locally.",
          "description": "Validate the request. Execute it locally.",
          "duration": 3000,
          "active": [
            "toolLocal"
          ],
          "paths": [
            "skillLocal"
          ],
          "state": {
            "route": "Semantic tool loop",
            "artifact": "Learned or analytic skill proposal",
            "local": "Local validation and controller",
            "feedback": "No new evidence"
          }
        },
        {
          "title": "Supply execution evidence",
          "description": "Supply execution evidence.",
          "duration": 3000,
          "active": [
            "agent"
          ],
          "paths": [
            "toolEvidence"
          ],
          "state": {
            "route": "Semantic tool loop",
            "artifact": "Learned or analytic skill proposal",
            "local": "No assumption of success",
            "feedback": "The fresh result gives information for recovery."
          }
        }
      ]
    },
    {
      "id": "learned-policy",
      "title": "Learned-action path",
      "description": "Use a learned action path.",
      "initial": {
        "route": "No selected route",
        "artifact": "No proposal",
        "local": "No execution",
        "feedback": "No new evidence"
      },
      "unselected": [
        "agent",
        "skills",
        "toolLocal",
        "agentSkill",
        "skillLocal",
        "toolEvidence"
      ],
      "steps": [
        {
          "title": "Read observations",
          "description": "Read observations.",
          "duration": 3000,
          "active": [
            "observations"
          ],
          "paths": [],
          "state": {
            "route": "Learned VLA path",
            "artifact": "Current observation",
            "local": "No execution",
            "feedback": "No new evidence"
          }
        },
        {
          "title": "Make a learned action proposal",
          "description": "Make a learned action proposal.",
          "duration": 3000,
          "active": [
            "vla"
          ],
          "paths": [
            "obsPolicy"
          ],
          "state": {
            "route": "Learned VLA path",
            "artifact": "Action chunk",
            "local": "No execution",
            "feedback": "No new evidence"
          }
        },
        {
          "title": "Run the local controller",
          "description": "Run the local controller.",
          "duration": 3000,
          "active": [
            "vlaLocal"
          ],
          "paths": [
            "policyLocal"
          ],
          "state": {
            "route": "Learned VLA path",
            "artifact": "Action chunk",
            "local": "Deployment-dependent constraints",
            "feedback": "No new evidence"
          }
        },
        {
          "title": "Read the observation from execution",
          "description": "Read the observation from execution.",
          "duration": 3000,
          "active": [
            "observations"
          ],
          "paths": [
            "vlaFeedback"
          ],
          "state": {
            "route": "Learned VLA path",
            "artifact": "Action chunk",
            "local": "Deployment-dependent constraints",
            "feedback": "New sensor evidence"
          }
        }
      ]
    }
  ]
}
