AgentCanvas / Pages / Developer Guide / Nodesets / Status / VLA Support Status
2026-07-05

This page does two jobs. Part I β€” Support answers which VLA methods AgentCanvas runs or wants to run: a single support matrix (verified Β· in-progress Β· retired), then the env / policy / method machinery underneath. Part II β€” Landscape places those methods in the wider VLA field β€” Track-A trained policies, Track-B zero-shot manipulation, and the 2024–26 frontier (Β§8) β€” condensed from the VLA β€” Methods survey. Companion to VLN Support Status and EQA Support Status.


Part I β€” Methods we support

1. Support matrix

Every VLA graph AgentCanvas ships or is building (retired graphs kept for the record). This is the single source of truth for "what we support" β€” the env / policy / method backing is in Β§2–§4, the wider field is Part II. Verified graphs live under vla/verified/, the rest under vla/unverified/.

Graph Status Notes
vla_policy_libero.json ⏳ unverified β€” gym-interface migration (2026-06-10) Rewired for the gym-like env contract (reset metadata-only, step_continuous, pull obs via observe_egocentric); moved to vla/unverified/ pending re-eval. Runtime-blocked by TODO #66 β€” the policy_adapter_vla Pi0 graph path has never run on the vendored tree (the 2026-05-02 verification used scripts/smoke/smoke_vla_libero.py against external vlaworkspace); 3 of 4 debt layers fixed 2026-06-11. Pre-migration baseline (2026-05-02): Pi0 LIBERO finetune step=30000, libero_spatial / task 0, 5/5 success, avg 83.8 steps, 5.4 s wall
vla_policy_simpler.json ❓ status TBD β€” please confirm Graph + nodeset shipped under E11 (2026-05-01); no author-verified smoke result recorded in roadmap yet
octo_simpler.json βœ… baseline runs SIMPLER eval uses native baselines (RT-1-X / Octo, not Pi0 finetunes); checkpoints under data/vla_policy/checkpoints/. Mirror upstream's no-close pattern between episodes (SAPIEN 2.2.2 GC ordering bug β€” see Β§6.4)
voxposer_libero_monolithic.json πŸ—‘ deleted (2026-06-10) Removed with the VoxPoser↔LIBERO decoupling: its engine interleaved LMP exec with sim stepping inside one node, which cannot cross a wire boundary. Last verified state: author-verified 2026-06-01, full grasp + transport. The decomposed graph is the sole VoxPoser path now.
voxposer_libero_decomposed.json βœ… verified (libero_object) β€” 2026-06-30 Planning moved to the backend-local voxposer nodeset, fed by the privileged GT snapshot from env_libero__observe_objects; follow loop drives env_libero__step_ee_pose closed-loop. Verified on libero_object: 44/50 = 0.88 at 50-ep suite scale (merged runs 20260628_202814 / 204422 / 211004) after fixing 3 stacked convention bugs (per-scene z-bounds anchored to robot0_base; gripper action +1=close; top-down grasp geometry). Scope caveat: full-VAS aggregate is 58/199 = 0.29 β€” only the object suite is fixed; libero_spatial (0.18) / libero_goal (0.10) / libero_10 (0.00) remain grasp-geometry-limited. Promoted to vla/verified/ 2026-06-30.

This page is fresh β€” the verified rows have hard ground-truth datapoints from the author. Update the others as runs are confirmed.

Graph folder layout (2026-06-30). workspace/graphs/ is organised by domain Γ— verification status. The VLA verified set is vla/verified/{voxposer_libero_decomposed, octo_simpler}.json (voxposer object-suite promoted 2026-06-30; octo_simpler promoted 2026-07-05 after a clean 1-episode integration smoke on the post-gym-refactor interface β€” run 20260705_193758, 60 steps, metrics harvested through the iterOut.final_stop band); vla/unverified/ holds vla_policy_libero and vla_policy_simpler (gym-rewire re-eval pending). Graphs stay addressable by bare name β€” the execution resolver and architect overlay fall back to a recursive graphs/**/{name}.json search.

VLN graphs are out of scope (see VLN Support Status); EQA graphs are out of scope (see EQA Support Status).

2. Environment Nodesets

Manipulation simulators wrapped as BaseNodeSets under server mode. Both ship in folder form β€” <name>/__init__.py plus sidecar wrappers β€” so the binary-incompatible upstream code stays packaged with its owner.

2.1 LIBERO (E12)

2.2 SIMPLER (E11)

3. Policy Adapter Nodeset

A single registry hosts all VLA policies behind a uniform 4-stage pipeline.

3.1 VLA Policy (E13)

adapt_env_to_canonical β†’ adapt_canonical_to_model β†’ predict β†’ adapt_model_to_env

This is a generic VLA inference framework, not a Pi0/SmolVLA/DP wrapper. Adding a new policy = adding a policies/<name>.py + adapter rows; the 4-node decomposition is reused unchanged.

3.2 VoxPoser-LIBERO (workspace/nodesets/method/voxposer/)

Motion-planning method (LMP + dynamics models). Not a policy in the policy_adapter_vla sense β€” instead an LMP-style planner that builds a voxel cost map and emits an OSC waypoint trajectory. Env-decoupled as of 2026-06-10: the whole planning stack (7 LMPs, voxel maps, path planner) runs local-mode in the agentcanvas backend; its only env coupling is the privileged GT snapshot wire (env_libero__observe_objects) in and waypoint actions (env_libero__step_ee_pose) out β€” any env exposing that observe/step pair can host VoxPoser.

3.3 Octo for SIMPLER (workspace/nodesets/policy/policy_octo.py)

Native SIMPLER baselines β€” RT-1-X / Octo β€” wrapped as a sibling to policy_adapter_vla. SIMPLER evaluation deliberately uses these native policies (not Pi0 finetunes) per upstream convention; checkpoints under data/vla_policy/checkpoints/.

4. Ready-to-Run Graphs

Graph Env Policy Verified status
vla_policy_libero.json LIBERO Pi0 (LIBERO finetune, step=30000) ⏳ unverified β€” gym-interface rewire 2026-06-10; pre-migration 5/5 on libero_spatial / task 0
vla_policy_simpler.json SIMPLER (depends on graph config) ❓ status TBD β€” please confirm
octo_simpler.json SIMPLER RT-1-X / Octo (native SIMPLER baselines) βœ… baseline runs
voxposer_libero_decomposed.json LIBERO VoxPoser β€” GT-snapshot planning in the backend (voxposer__* local nodes) + closed-loop follow via env_libero__step_ee_pose βœ… verified (libero_object) 2026-06-30 β€” SR 0.88 @50ep; full-VAS aggregate 0.29 (only object suite fixed)

When forking a new VLA experiment, start from vla_policy_libero.json β€” it carries the most complete recorded lineage (pre-migration 5/5 smoke; re-verification pending after the 2026-06-10 gym rewire).

5. Action Contract and Metrics

VLA action shapes are env-side, not yet unified (TODO #46 β€” VLN/EQA face the same gap):

Env Action shape
LIBERO 7-D continuous action (robosuite + MuJoCo joint convention)
SIMPLER Per-robot continuous action (WidowX vs. Google Robot conventions differ)

Standard manipulation metric: success per episode (binary), aggregated as success rate over a task / suite. Wall-clock and step counts are also captured by the eval harness (e.g. the LIBERO smoke run reports avg 83.8 steps, 5.4 s wall).

6. Eval Infrastructure

6.1 Smoke runners

The first-party smoke runner scripts/smoke/smoke_vla_libero.py (used to produce the 2026-05-02 verified Pi0 result) was removed 2026-06-30 as dev scaffolding; for one-off "does this checkpoint load" checks, run the vla_policy_libero graph via /experiment:run instead.

6.2 BatchEvalRunner + EnvWorkerPool (ADR-eval-002)

Same pipeline VLN uses (agentcanvas/backend/app/agent_loop/eval_batch.py + env_worker_pool.py):

6.3 BatchedInferenceServer + parallelism (ADR-eval-002 PC, ADR-server-003)

6.4 SAPIEN / SIMPLER stability gotchas

SIMPLER eval has known stability cliffs in the upstream stack. Working around them is a hard requirement, not optional:

7. Known Gaps

VLA-relevant items in roadmap.md:

Item What's missing
#46 Unify env action contract via a single action_manifest β€” currently every env (Habitat / MP3D / LIBERO / SIMPLER) ships its own action-port style
#50 Decouple VLM backend from explore-eqa β€” analogous problem for VLA: a policy_adapter_vla is currently the only VLA-backend abstraction; if a second backend pattern emerges, factor a shared interface
second-wave envs Calvin / ManiSkill / RoboCasa explicitly deferred (low marginal coverage vs. setup cost); RLBench / Isaac-Lab-as-benchmark / BEHAVIOR-1K skipped (heavy install or low VLA-paper adoption)
LIBERO suite breadth VoxPoser verified on libero_object (SR 0.88 @50ep, 2026-06-30); libero_spatial / goal / 10 / 90 remain unverified (grasp-geometry-limited). The policy_adapter_vla Pi0 path is unverified on all suites (TODO #66)
SIMPLER smoke No author-verified smoke recorded yet for vla_policy_simpler.json

Also worth tracking informally: a per-nodeset doc page for LIBERO is missing (developer-guide/nodesets/ has SIMPLER but not LIBERO). Adding it would put the env-side documentation symmetric with SIMPLER.


Part II β€” Field landscape

8. Landscape β€” representative methods & frontier

Where the supported VLA subset sits in the wider field, condensed from the research survey VLA β€” Methods (cite counts are that page's Semantic Scholar snapshot). The field splits into Track A (trained VLA / policy models) and Track B (zero-shot / LMP-style manipulation β€” VoxPoser's lineage). Ours maps to Β§1 / Β§3: βœ… verified Β· βœ… baseline Β· ⏳ unverified Β· β–« in policy_adapter_vla registry Β· β€” not ported.

8.1 Representative & most-cited

MethodTimeCitesTrackOurs
SayCan22.04 Β· CoRL'223036B β€” LLM affordance groundingβ€”
Diffusion Policy23.03 Β· RSS'232953A β€” visuomotor diffusionβ–« registry (DP)
RT-223.07 Β· CoRL'232902A β€” web-scale VLAβ€”
RT-122.12 Β· RSS'232130A β€” transformer policyβœ… baseline (RT-1-X, Β§1)
OpenVLA24.06 Β· CoRL'242048A β€” open 7B VLAβ€”
Pi-024.10 Β· RSS'251541A β€” flow-matching VLA⏳ unverified β€” vla_policy_libero (Β§1)
Code as Policies22.09 Β· ICRA'231486B β€” LLM code generationβ€”
Inner Monologue22.07 Β· CoRL'221321B β€” LLM closed-loop feedbackβ€”
Octo24.05 Β· RSS'241203A β€” generalist transformer policyβœ… baseline β€” octo_simpler (Β§1)
RT-X / Open X-Embodiment23.10 Β· ICRA'24926A β€” cross-embodiment datasetβ€”
VoxPoser23.07 Β· CoRL'23893B β€” LMP + 3D value mapβœ… verified β€” libero_object (Β§1)
CLIPort21.09 Β· CoRL'21888A β€” language-conditioned manip.β€”
R3M22.03 Β· CoRL'22853A β€” pretrained visual repr.β€”
Socratic Models22.04 Β· ICLR'23718B β€” multi-model dialogβ€”
ReKep24.09 Β· CoRL'24328B β€” relational keypoint constraintsβ€”
ECoT24.07 Β· NeurIPS'24294A β€” embodied chain-of-thoughtβ€”
CogACT24.11 Β· preprint283A β€” VLA + diffusion action headβ€”
SmolVLA25.06 Β· preprint256A β€” compact community VLAβ–« registry (SmolVLA)

8.2 Frontier (2024–2026)

MethodTimeCitesTrackOurs
TraceVLA24.12 Β· ICLR'25208A β€” visual-trace promptingβ€”
Hi Robot25.02 Β· preprint169A β€” hierarchical VLAβ€”
MOKA24.03 Β· RSS'24116B β€” marks-on-image affordanceβ€”
RoboMamba24.06 Β· NeurIPS'24102A β€” state-space-model VLAβ€”
DreamZero / WAM26.02 Β· preprint43A β€” world-action modelβ€”
OK-Robot24.01 Β· RSS'2439B β€” open-vocab pick-and-placeβ€”
MALMM24.11 Β· IROS'2522B β€” multi-agent LLM manipulationβ€”
Code-as-Symbolic-Planner25.03 Β· IROS'2510B β€” symbolic LLM plannerβ€”
Future Prompting25.06 Β· preprint8B β€” future-frame promptingβ€”
Goal-VLA25.06 Β· preprint4B β€” goal-image conditioningβ€”
BLAZER25.10 Β· preprint0B β€” zero-shot LLM manipulationβ€”
FAEA26.01 Β· preprint0B β€” demonstration-free controlβ€”
MALLVI26.02 Β· preprint0B β€” multi-agent LLM-visionβ€”
EEAgent26.04 Β· preprint0B β€” embodied LLM agentβ€”

Our coverage is deliberately one method per archetype: a Track-B LMP planner (VoxPoser, the only βœ… verified VLA graph) plus Track-A trained policies through policy_adapter_vla (Pi-0 / SmolVLA / DP) and the SIMPLER native baselines (RT-1-X / Octo). The bulk of the field β€” RT-2 / OpenVLA-class web-scale VLAs and the 2025–26 zero-shot frontier β€” is unported.

AgentCanvas docs