Views
No views yet
A VLA maps what it sees + what it's told → what it does. Frontier VLAs (π0, GR00T, SmolVLA) are hundreds of millions of parameters and need a GPU. This policy is 63,026 parameters; its whole forward pass — convolutions included — runs in plain JavaScript. The language is open-vocabulary: instructions are embedded on-device byall-MiniLM-L6-v2(the same encoder at train and inference), so paraphrases it never saw still work. A faithful miniature of the paradigm, meant to be understood and run.
all-MiniLM-L6-v2. "reach the red target", "grab the green one", "head toward crimson", "I want green" all work.Conv(3→8, s2) → Conv(8→16, s2) → flatten(576) → concat[ text embedding(384) ] → MLP(→64→2), SiLU. 63,026 parameters. The 384-d language vector comes from all-MiniLM-L6-v2, run identically in Node (training) and transformers.js (browser) for exact parity.| metric | value |
|---|---|
| Reaches the correct target — training instructions | 98.8% |
| Reaches the correct target — novel instructions it never trained on | 97.5% |
| Correct-target success when the instruction is flipped | 0.0% |
model.safetensors — weightsvla.web.json — the same weights as float32 arrays for in-browser inference (conv+MLP, verified bit-for-bit vs safetensors; max abs diff 7×10⁻⁸)metrics.json, inference.py1from sentence_transformers import SentenceTransformer
2enc = SentenceTransformer("sentence-transformers/all-MiniLM-L6-v2")
3lang = enc.encode("grab the green one", normalize_embeddings=True) # (384,)
4# then act(img, lang) — see inference.pyXenova/all-MiniLM-L6-v2 (pooling:'mean', normalize:true, dtype q8).forge-arm-reach-bc.