Skip to content

Action chunking

A little push

Move a goal and watch a tiny learned policy push a cube across a tabletop. Peek inside its four-action plan and choose when it replans.

4,936 parameters
Four actions / one plan

Run the experiment

Choose a checkpoint and compute backend. Inference stays on your device.

Ready when you are · no inference yet

Weights verified with SHA-256 before use

TABLE 01 / TOP DOWNPaused · move the goal
● Pusher■ Cube◌ Goal

HELD-OUT WORLDS / HORIZON 2

100% trained success

128 unseen seeded worlds · 0% untrained

MEAN FINAL DISTANCE

0.034 table units

Success below 0.045 · measured in Python

THE SMALL PRINT

These are synthetic evaluation results, not a promise for every goal or real-world robot. Try the untrained checkpoint to see the difference.

Borrowing an idea, not a robot.

LeRobot ACT predicts action chunks and consumes a configurable prefix from a queue. This original teaching demo borrows that idea: a 3 → 64 → 64 → 8 ReLU MLP learns four planar moves from synthetic expert rollouts using tinygrad autograd and Adam. It is not ACT, PushT, a transformer, or a pretrained LeRobot policy.

Training & export source ↗

A deliberately simple tabletop.

The square uses a circular contact proxy. No rotation, friction, mass, camera perception, or real robot data. The goal-aligned observation is mirrored for symmetry; output deltas are transformed back into table coordinates. A plan is frozen until its chosen horizon ends. Reset, goal, horizon, and checkpoint changes clear it.

WebGPU is the default; JavaScript CPU is opt-in and reads the same checked weights. Both verify Python parity before playback. No server inference. Software WebGPU validates shaders, not physical GPU performance.