This repo is the official implementation of
- [2026.06.26] 🚀 We release the post-training training and inference code for
$\tau_0$ -World Model. - [2026.05.31] 🚀 We release
$\tau_0$ -World Model Paper, Project Website, Huggingface.
-
The pretrained weights of VAM can be found on Hugging Face.
-
The pretrained weights of Simulator will be released soon.
-
The codes of Test-Time Computation will be further released with The pretrained weights of Simulator.
pip install -r requirements.txt
-
Download the pretrained weight of
$\tau_0$ -World Model. -
Download the weight of Wan2.2-TI2V-5B.
-
Replace
diffusion_model.model_pathinconfigs/deployment/tau_pretrain_rela_eef6d.yamlwith your local path to$\tau_0$ -WM's weight. -
Replace
vae_pathin the config with your local path to VAE's weight. -
Replace
text_encoder.checkpoint_pathandtext_encoder.tokenizer_pathin the config with your local path to text encoder and tokenizer.
state sent to the server should be the absolute poses of two end-of-effectors, including 14 channels (xyz and quaternion with order xyzw). The coordinate origin of each eef pose is its corresponding Arm Base link.
gripper state should include 2 channels, ranging from 0 to 120 (0 for opening and 120 for close).
action obtained from the server will be the absolute poses of end-of-effectors with shape {T, 16}.
The order of output actions:
- left end-effector (xyz + quaternion with order xyzw)
- left gripper openness (ranging from 0 to 1, 0 for opening and 1 for close)
- right end-effector
- right gripper openness.
In the pretraining stage,
The repo also ships the post-training pipeline used to adapt main.py, driven by a YAML config that names the trainer, model classes, and dataset.
Each downstream task needs three pieces:
-
A LeRobot-format dataset. A LeRobot dataset directory is expected (>= 0.4.0 is recommended; legacy 0.3.x is also supported). For one example task, the data can be downloaded from taco_play.
-
A data YAML under
configs/data/<task>/. This YAML defines the dataset class, dataset roots, statistics file, and action/state layout. Useconfigs/data/example_task/taco_abs_joint.yamlas a sample. Seedata/README.mdfor the dataset contract and how to implement your own dataset. -
A training YAML under
configs/tau_model/. This YAML references the data YAML and model/training settings. Useconfigs/tau_model/posttrain_taco_play_abs.yamlas a sample.
bash scripts/train.sh main.py \
configs/tau_model/posttrain_taco_play_abs.yaml \
runner/posttrain.py
Before launching, edit configs/tau_model/posttrain_taco_play_abs.yaml and fill in the local paths for:
output_dir,diffusion_model.model_path,text_encoder.checkpoint_path,text_encoder.tokenizer_pathandvae_path- the dataset root referenced by
configs/data/example_task/taco_abs_joint.yaml
We provide two inference examples:
# Policy Server
bash run_infer_server.sh $HOST $PORT
# A simple client that send random observations
python web_infer_utils/simple_client.py
For one downstream post-training example based on taco_play, use:
# Posttrain Policy Server
bash scripts/run_posttrain_infer.sh $HOST $PORT
# Posttrain client
bash scripts/run_posttrain_client.sh
The pretrain example keeps using configs/deployment/tau_pretrain_rela_eef6d.yaml.
The posttrain example uses configs/deployment/tau_posttrain_taco_play_abs.yaml.
For both examples, fill in these parameters in the YAML before launching:
diffusion_model.model_path,vae_path,text_encoder.checkpoint_pathandtext_encoder.tokenizer_pathstatistics_file: mean/std JSON matching the action/state layoutaction_spaceandaction_type: must match the dataset/task contract
- The video model of
$\tau_0$ -WM is built on Wan-2.2. - Some codes in this repo are modified from GE-Act.
- The dataset examples are adapted from Open X-Embodiment (OXE).
- The web-socket based policy server is built on openpi.
Data and codes within this repo are under Apache License 2.0.
