Skip to content

Deploy RT-X Robot Foundation Model: Real Install Guide 2026

Install the RT-1-X robot foundation model from Open X-Embodiment. Covers real GCS buckets, checkpoint paths, common tfds errors and disk-space traps.

7 min readIntermediate

The question robotics teams ask most: “Can I just pip install rt-x and run it on my arm?” No. You can run RT-1-X – but RT-2-X weights aren’t public (as of mid-2026). This guide covers what’s actually deployable from the RT-X release, the real GCS paths, and the gotchas that eat an afternoon if you follow the README literally.

“RT-X” is really two models trained on the Open X-Embodiment (OXE) dataset. Only one ships with weights. That single fact reshapes the entire install.

What you’re actually installing (and what you’re not)

The RT-X release is a research artifact at google-deepmind/open_x_embodiment, Apache 2.0 licensed. It contains: dataset loaders in RLDS format, Colab notebooks, and a JAX inference example for RT-1-X. It does not contain RT-2-X weights.

Turns out the trained RT-2-X model weights remain internal to DeepMind – community reports confirm this hasn’t changed as of mid-2026. If you need a runnable vision-language-action model today, OpenVLA is on HuggingFace transformers and actually loads. RT-1-X is still worth running as a baseline and for reproducing the paper’s results.

Here’s something worth sitting with: the gap between “RT-X the paper” and “RT-X the thing you can run” is larger than most writeups admit. The paper (arXiv:2310.08864) covers 22 robot embodiments and 527 skills – the public artifact covers one checkpoint and some dataset loaders. What does that mean for your project? That depends on whether you’re reproducing research or shipping a product.

System requirements

The docs don’t list these. Here’s what works, based on the repo’s dependencies and community reports.

Resource Minimum (inference only) Recommended (dataset work)
OS Ubuntu 20.04+ or macOS 12+ Ubuntu 22.04 LTS
Python 3.10 3.10 or 3.11
GPU None required for CPU inference NVIDIA 16 GB+ VRAM (CUDA 12.x)
RAM 16 GB 64 GB (RLDS shards are memory-hungry)
Disk ~5 GB (checkpoint + one small dataset) ~4.5 TB for the full OXE mix
Tooling gsutil, git, pip Same + Docker for reproducibility

That 4.5 TB disk number is real – downloading all 53 datasets amounts to approximately 4.5 TB (per the open_x_pytorch_dataloader README). Pick only the datasets your robot type actually appears in.

Install RT-X step by step

1. Clone and set up the environment

git clone https://github.com/google-deepmind/open_x_embodiment.git
cd open_x_embodiment

python3.10 -m venv .venv
source .venv/bin/activate

pip install --upgrade pip
pip install tfds-nightly tensorflow tensorflow_datasets 
 jax jaxlib flax orbax-checkpoint 
 tf-agents rlds absl-py

tfds-nightly is required – not stable tensorflow_datasets. First-timer trap, every time.

2. Install gsutil

curl https://sdk.cloud.google.com | bash
exec -l $SHELL
gcloud init # skip project selection if you just want gsutil

3. Download the RT-1-X checkpoint

Per the official README, the JAX checkpoint path is:

mkdir -p checkpoints && cd checkpoints
gsutil -m cp -r gs://gdm-robotics-open-x-embodiment/open_x_embodiment_and_rt_x_oss/rt_1_x_jax .
cd ..

4. Grab at least one dataset for testing

The obvious command from the Colab – tfds.load('fractal20220817_data') – fails on a fresh install even with tfds-nightly. The error: tensorflow_datasets.core.registered.DatasetNotFoundError: Dataset fractal20220817_data not found. GitHub issue #37 documents this; it affects recent tfds-nightly builds too.

Fix: pull the tfrecords directly from GCS first, then tfds.load picks them up as cached data.

# Use gs://gresearch/robotics/ - NOT gs://gdm-robotics-open-x-embodiment/
gsutil -m cp -r gs://gresearch/robotics/fractal20220817_data 
 ~/tensorflow_datasets/

Bucket gotcha (GitHub issue #5): The two GCS buckets look interchangeable but they aren’t. gs://gdm-robotics-open-x-embodiment/{dataset_name} returns mostly empty data for dataset shards. gs://gresearch/robotics/ is the one that works. The gdm-robotics bucket is for the RT-1-X checkpoint only.

First inference call

The repo ships rt1_inference_example.py. Point it at the checkpoint directory, feed one RGB image and a task string:

python rt1_inference_example.py 
 --checkpoint_path=./checkpoints/rt_1_x_jax 
 --image_path=./sample_image.png 
 --task_string="pick up the red block"

Output: a 7-D action vector – x, y, z, roll, pitch, yaw, and gripper opening, all in the gripper frame (per arXiv:2310.08864). You map that to your robot’s controller. On a WidowX or Franka arm, expect to write a small adapter – the checkpoint doesn’t carry your kinematics anywhere inside it.

Verify the install

Three checks, in order:

  1. Checkpoint loaded? The script prints the parameter tree shape without Orbax warnings about missing TensorStore files.
  2. Dataset visible? Run python -c "import tensorflow_datasets as tfds; print([d for d in tfds.list_builders() if 'fractal' in d])". Empty list means step 4 didn’t land.
  3. Action output shape? Returned tensor should be (7,). Anything else usually means a JAX/flax version mismatch against the checkpoint.

Common errors

DatasetNotFoundError – covered in step 4. Manually gsutil the shards; don’t rely on tfds.load to fetch them remotely.

BridgeData V2 rows look wrong – the OXE version is stale as of 12/20/2023. The OpenVLA team documented the fix: download Bridge from the official source and place it under bridge_orig/, replacing any reference to bridge in OXE code with bridge_orig. The OXE repo itself hasn’t updated this.

OOM during data loading – RLDS iterators batch whole trajectories. Cap with a .take(N) call before .batch() or a 64 GB machine will still swap.

gsutil hangs on large copies – split to one dataset at a time, or use -o "GSUtil:parallel_composite_upload_threshold=150M". Default parallelism can saturate a home connection.

Upgrade and uninstall

No versioned releases – the repo doesn’t tag. Upgrade is git pull plus refreshing pip deps. Pin your JAX version if you have a working setup; flax checkpoints don’t always survive a JAX minor bump.

deactivate # exit venv
rm -rf open_x_embodiment/ ~/tensorflow_datasets/

Double-check that last line. If you had TFDS data for other projects, it lives in the same directory.

Should you use RT-X in 2026?

RT-1-X is a solid reproduction target and a useful pretraining checkpoint. It’s not a production model. The action space is 7-DoF end-effector, input is a single RGB frame plus a task string, and there’s no fine-tuning script in the repo – you write your own training loop. If the goal is “deploy a foundation model on my robot this week,” OpenVLA or a Gemini Robotics partner API gets you further, faster.

But if the goal is understanding what a cross-embodiment robot foundation model actually looks like from the inside – clone the repo, read arXiv:2310.08864, and run the checkpoint on a single dataset shard. That’s a weekend well spent.

FAQ

Where do I download RT-2-X weights?

You don’t – they haven’t been released publicly as of mid-2026. Only RT-1-X is available.

Do I need a GPU to run RT-1-X inference?

Not for a single forward pass. The JAX checkpoint runs on CPU – expect noticeable latency per prediction (exact timing varies by hardware; community reports suggest several seconds on a mid-range laptop). The real bottleneck isn’t the model: it’s RLDS dataset loading. For anything approaching real-time robot control, 16 GB+ VRAM makes a meaningful difference. One-off inference tests? CPU is fine.

Can I fine-tune RT-1-X on my own robot data?

Technically yes, but the repo ships no fine-tuning script. Most people end up using OpenVLA instead – it has native LoRA fine-tuning support and accepts any RLDS-formatted dataset. Community PyTorch ports of RT-X also exist if you prefer that ecosystem. Convert your teleop data to RLDS, register a dataset config, and you’re much closer to a working fine-tune than starting from the DeepMind repo directly.

Next step: clone the repo, download only fractal20220817_data (one small shard, not 4.5 TB), and get one successful inference call. Everything else – full dataset, fine-tuning, robot integration – is easier once that single call returns a (7,) vector.