Open-source project
OpenGalaxea/GalaxeaVLA avatar
OpenGalaxea/GalaxeaVLA

GalaxeaVLA: G0.5 Puts Reasoning and Action in One Token Stream

Galaxea's open-source VLA repository

814 stars69 forksPythonNOASSERTION

At a glance

What is it?
GalaxeaVLA is the open-source release of Galaxea's G0.5 vision-language-action model, where a single transformer decoder emits reasoning tokens and action tokens together instead of bolting an action expert onto a vision-language backbone. It suits robotics teams that want both zero-shot deployment code and the checkpoints to fine-tune.
Who is it for?
GalaxeaVLA fits a robotics group that wants both the pretrained G0.5 checkpoints and working deployment entrypoints for several robot platforms, and that is willing to accept a custom licence instead of an open-source one. It is the wrong choice if you need a permissive licence for commercial redistribution, since the repository ships a proprietary licence file and the metadata classifies it as Other, or if your hardware cannot run the model.
Can I use it commercially?
Check first. The repository uses a licence we do not classify automatically, so read its LICENSE file before any commercial use.
Is it still maintained?
Yes. The repository last received commits 73 days ago.
What is it written in?
Mainly Python, according to GitHub's language statistics.

Answers come from the project's GitHub data, last synced on October 24, 2026, and from our analysis. They are not legal advice.

Editorial analysis

One decoder for reasoning and action, not a bolted-on expert

The central design decision in G0.5 is stated plainly in the overview. Instead of using the vision-language model only as a vision-language encoder for a separate action expert, G0.5 keeps the VLM as the actor: a single transformer decoder generates reasoning tokens and action tokens in one unified autoregressive stream under the same next-token prediction objective. The consequences run through the rest of the design. Because the reasoning is generated in the same stream rather than by an external module or a training-only auxiliary target, it is directly visible to the action tokens that follow, which is the stated reason grounding and long-horizon execution improve. The chain-of-thought span can carry `Subtask`, `BBox`, `Trace` and `ActionHint` fields, covering task decomposition, object grounding, 2D gripper traces and frame-level motion hints.

A shared 27-dimensional action space across embodiments

Heterogeneous robots are handled by a cross-embodiment action codec that maps their actions into a shared 27-dimensional space laid out as `left_control(9) | left_gripper(1) | right_control(9) | right_gripper(1) | lower_body(7)`. That layout is what allows one checkpoint to drive robots with different arm counts and body configurations, and the split into per-limb groups is what the tokenizer exploits. A learned residual vector-quantized action tokenizer represents semantically aligned motion groups such as the left arm, the right arm and the lower body. Only the active motion groups are emitted during action generation, which avoids padding for idle degrees of freedom, and that is where the token budget is saved. The model conditions on multi-view RGB observations, an embodiment identifier, a natural-language task instruction and robot proprioceptive state, so which robot it is driving is an input rather than a separate model.

Visual memory with bounded latency

Multi-second visual history is injected through the vision encoder with factorized spatial-temporal attention. Pre-training samples 6 frames over a 5-second window, with stochastic history-frame dropout applied to reduce overfitting. The detail that makes this usable at inference is that historical tokens are discarded at the final layer, which keeps inference latency bounded no matter how long the window is. The alternative designs in this space either keep the whole history in the context or re-encode constantly, and both cost latency. The generated action tokens are decoded into continuous robot controls, executed in chunks, and replanned closed-loop from new observations, so the history mechanism feeds a system that re-plans rather than executing a fixed open-loop plan.

What the checkpoint was trained on

G0.5 is initialized from a Qwen3.5 2B vision-language model and pre-trained on robot demonstrations from 14 embodiments together with large-scale web and embodied visual question answering data. Robot action samples and VQA samples are optimized with the same cross-entropy objective, mixed at a VQA-to-action ratio of 1:4. The reported results are specific: 82.5% zero-shot success on DROID, 87.3% on Bridge-SimplerEnv, 93.3% on RoboTwin 2.0, 98.9% on LIBERO, a 0.3136 task success score on BEHAVIOR-1K, and 76.7% average success after real-world fine-tuning on R1-Lite and R1-Pro. The paper describing the approach, G0.5: One Autoregressive Stream for Robot Reasoning and Action, was posted on arXiv on 2026-08-12. These are the authors' own numbers on their own evaluation setups, so they indicate capability rather than guarantee behaviour on your hardware and your tasks.

Deployment entrypoints for five robot and benchmark targets

The repository ships separate experiment directories, each paired with its own checkpoint, and this is the part that turns a paper into something you can run. The `experiments/r1lite` directory carries the R1 Lite zero-shot deployment using the `g05-base` checkpoint, and `experiments/r1pro` was added on 2026-07-11 for R1 Pro zero-shot inference using the same `g05-base` weights. `experiments/droid` covers DROID zero-shot inference with the `g05-droid` checkpoint, `experiments/so100` covers SO-100 and SO-101 zero-shot inference with the `g05-so101` checkpoint, `experiments/libero` is the LIBERO simulation evaluation entrypoint with `g05-libero`, and `experiments/robotwin` was added on 2026-06-29 for RoboTwin 2.0 evaluation with `g05-robotwin20`. Fine-tuning for R1 Lite and R1 Pro goes through `scripts/run/finetune.sh`, initialized from `g05-base`.

Setting up the environment from the env template

The `.env.example` file in the repository root is the setup path, and it is deliberately written with placeholders so it carries no real paths or secrets. The usage comment at the top of the file gives the two commands.

bash
cp .env.example .env
source .env

The variables fall into groups. Two are required: the repository location and the output directory Hydra writes checkpoints and logs into. Then come recommended cache locations for Hugging Face, pip and torch. A set of optional entries covers a Hugging Face mirror, a token for private or gated resources, the LIBERO config path needed only for LIBERO simulation evaluation, and SwanLab or Weights and Biases credentials depending on the logger configuration. The runtime defaults at the end set the Python path, disable tokenizer parallelism, turn on full Hydra errors, select the EGL rendering backend through `MUJOCO_GL=egl`, and pin the OpenMP and MKL thread counts to one for multi-process training.

bash
export PYTHONPATH=$PROJECT_ROOT:$PYTHONPATH
export TOKENIZERS_PARALLELISM=false
export HYDRA_FULL_ERROR=1
export MUJOCO_GL=egl

Python 3.10 only, with pinned heavy dependencies

The package metadata pins the interpreter narrowly, with the requirement `requires-python` set to ">=3.10.16,<3.11", so the project targets one Python minor version rather than a range. The dependency list is pinned exactly too, and it shows what the stack is made of: torch 2.7.1 with torchvision 0.22.1, transformers 4.57.1, diffusers 0.29.0, peft 0.18.0 and accelerate 1.8.1 on the model side, deepspeed 0.15.4 and ema-pytorch 0.7.7 for distributed training, Hydra with its core, colorlog and optuna sweeper plugins for configuration, draccus for typed configuration parsing, and the usual numeric and media stack of numpy, scipy, pandas, h5py, zarr, opencv and pillow. There is also pytorch_kinematics_ms, timm, av, imageio and matplotlib. The project is classified as Development Status 3 - Alpha, and the licence is a proprietary one, since the package metadata points at a `LICENSE-G0.5` file and the classifier reads Other/Proprietary License.

Licensing, the earlier G0 line, and the dataset

The licensing is the thing to read before anything else, and it is not an open source licence. The repository metadata classifies the licence as Other, a custom licence GitHub cannot categorise, and the package metadata names the licence file `LICENSE-G0.5` while the classifier says Other/Proprietary License. There are also separate files for the third-party components: `LICENSE_QWEN3_5.txt` for the Qwen3.5 backbone the model is initialized from, a `NOTICE` file, a `THIRD_PARTY_NOTICES.md` and a `licenses/` directory. The earlier generation of models is also in scope. The Galaxea Open-World Dataset was released on Hugging Face and ModelScope on 2025-09-09 and is available in LeRobot format. G0Plus pretrained weights were released on 2026-01-04, and G0Tiny, a 250M model with a SmolVLM2 backbone for R1 Pro Orin edge deployment, followed in February 2026 with on-device inference through TensorRT at up to 10 Hz and two demo tasks, folding towels and handing over a gift. The last push to the repository was on 2026-08-13 and there are no GitHub releases, so the checkpoints on Hugging Face are the versioning mechanism here.

Editorial conclusion

GalaxeaVLA fits a robotics group that wants both the pretrained G0.5 checkpoints and working deployment entrypoints for several robot platforms, and that is willing to accept a custom licence instead of an open-source one. It is the wrong choice if you need a permissive licence for commercial redistribution, since the repository ships a proprietary licence file and the metadata classifies it as Other, or if your hardware cannot run the model. Before anything else, check the licence terms against your use, then run the simulation evaluation entrypoint rather than a real robot first.

Frequently asked questions

What is different about the G0.5 vision-language-action architecture?

Instead of using the VLM only as an encoder for a separate action expert, G0.5 keeps it as the actor. A single transformer decoder generates reasoning tokens and action tokens in one autoregressive stream under the same next-token prediction objective.

How does GalaxeaVLA handle robots with different body configurations?

A cross-embodiment action codec maps heterogeneous actions into a shared 27-dimensional space split into left_control(9), left_gripper(1), right_control(9), right_gripper(1) and lower_body(7), and a learned residual vector-quantized tokenizer represents aligned motion groups so only active ones are emitted.

Which robots and benchmarks have deployment entrypoints?

The repository has experiments directories for R1 Lite and R1 Pro zero-shot inference, DROID, SO-100 and SO-101, LIBERO simulation evaluation and RoboTwin 2.0 evaluation, each paired with its own checkpoint on Hugging Face.

How do I set up the GalaxeaVLA environment?

Copy .env.example to .env and source it. The file provides placeholders for the repository root, the Hydra output directory and cache paths, plus optional Hugging Face mirror, token, LIBERO config and logger settings, and runtime defaults for PYTHONPATH, tokenizer parallelism, Hydra errors and the EGL rendering backend.

Can I use GalaxeaVLA commercially?

The licence is not an open source one. The package metadata points at a LICENSE-G0.5 file, the classifier reads Other/Proprietary License, and separate files cover the Qwen3.5 backbone licence and third-party notices, so the terms need reading against your own use.

Official sources

  1. Issues
  2. OpenGalaxea/GalaxeaVLA on GitHub
  3. README
Add this badge to your README

If you maintain this project, the badge below links readers to this analysis and shows its maintenance status from the daily GitHub snapshot. Paste the markdown into your README; add ?metric=license or ?metric=stars to the image URL for a different field.

Add this badge to your README

markdown
[![Hysen Labs](https://hysenlabs.com/badge/opengalaxea-galaxeavla.svg)](https://hysenlabs.com/projects/opengalaxea-galaxeavla)

Was this useful?