Praxis is a research codebase for training and evaluating
vision-language-action policies with explicit action representations. It
contains action tokenizers/codecs, policy objectives, VLM backbone adapters,
training and checkpointing code, serving utilities, and the policy adapter used
by praxis-eval.
Praxis is released as a source research repository. Use a checkout and uv.
git clone git@github.com:Chaoqi-LIU/praxis-vla.git
cd praxis-vla
uv sync --group dev
uv run python -c "import praxis; print('praxis import OK')"Install only the extras needed for your workflow. For the quickstart:
uv sync --group dev --extra libero --extra pali --extra serving --extra loggingCommon extras include pali, qwen, smol, serving, logging, libero,
metaworld, mshab, robocasa, robomimic, simpler, and slurm.
The maintained docs are the source of truth.
Start with:
The compact smoke path uses bar_oat_pali:
BAR objective + OAT action codec + PaliGemma2 backbone
Inspect the composed Hydra config before launching real jobs:
uv run praxis-train policy=bar_oat_pali --cfg jobTraining and simulator evaluation are GPU workloads. On shared clusters, run them on compute nodes rather than login nodes.
| Area | Contents |
|---|---|
| Action representations | Binning, FAST, OAT, BOAT, QueST, ActionCodec |
| Policy objectives | BAR, FM, KI |
| VLM backbones | PaliGemma2, Qwen3-VL, SmolVLM |
| Runtime | training, validation, checkpoint export/load, serving |
| Evaluation bridge | PolicyEvalAdapter for praxis-eval |
| Cluster utilities | Submitit/Slurm launchers under scripts/infra |
Closed-loop benchmark execution lives in praxis-eval. Praxis owns policy
construction, codec training, checkpoint loading, preprocessing, and serving;
praxis-eval owns benchmark setup, rollout execution, metrics, artifacts, and
simulator dependencies.
src/praxis/codecs/ action tokenizers and latent/action codecs
src/praxis/policies/ policy families, VLM adapters, and policy registry
src/praxis/training/ training loops, checkpointing, metrics, and eval hooks
src/praxis/serving/ remote policy server runtime
scripts/infra/ extensible Submitit/Slurm launchers
docs/ technical documentation
tests/ regression tests
For Slurm usage, see Slurm Launchers. To port the launcher to another cluster, see Add A Cluster Launcher.
External datasets, model checkpoints, simulator assets, benchmark packages, and released weights are governed by their upstream model cards, dataset cards, licenses, and access terms. This repository's Apache-2.0 license covers the Praxis source code, not those external artifacts.
If you use the full OAT method, cite the full paper. If you compare against or build on the original OAT tokenizer, cite the RSS paper. If you use Praxis as a codebase, cite the Praxis tech report.
% OAT full paper
@misc{liu2026oatpolicy,
title={Ordered Action Tokens for Visuomotor Policy Learning},
author={Chaoqi Liu and Yue Zhao and Haonan Chen and Xiaoshen Han and Jiawei Gao and Ehsan Adeli and Yilun Du},
year={2026},
eprint={2607.21670},
archivePrefix={arXiv},
primaryClass={cs.RO},
url={https://arxiv.org/abs/2607.21670},
}
% OAT RSS paper
@misc{liu2026oat,
title={OAT: Ordered Action Tokenization},
author={Chaoqi Liu and Xiaoshen Han and Jiawei Gao and Yue Zhao and Haonan Chen and Yilun Du},
year={2026},
eprint={2602.04215},
archivePrefix={arXiv},
primaryClass={cs.RO},
url={https://arxiv.org/abs/2602.04215},
}
% Praxis tech report
@misc{liu2026praxis,
title={Praxis: A Controlled Laboratory for Vision-Language-Action Policy Research},
author={Chaoqi Liu},
year={2026},
url={https://chaoqi-liu.com/praxis/},
}Praxis source code is released under the Apache-2.0 license. See LICENSE and NOTICE.