Skip to main content

███████╗ ██████╗ ██████╗  ██████╗ ███████╗
██╔════╝██╔═══██╗██╔══██╗██╔════╝ ██╔════╝
█████╗  ██║   ██║██████╔╝██║  ███╗█████╗
██╔══╝  ██║   ██║██╔══██╗██║   ██║██╔══╝
██║     ╚██████╔╝██║  ██║╚██████╔╝███████╗
╚═╝      ╚═════╝ ╚═╝  ╚═╝ ╚═════╝ ╚══════╝

⚒ Robotics Data Toolkit ⚒

Convert, inspect, visualize, score, and discover robotics datasets across every major format.

Website Python 3.10+ License: MIT

RLDS ═══╗ ╔═══► LeRobot
Zarr ═══╬════⚙════╬═══► RoboDM
HDF5 ═══╝ ╚═══► RLDS

Convert between robotics dataset formats with one command. Score demonstration quality with research-backed metrics. Segment episodes into sub-skills with changepoint detection.

Format Read Write Visualize Notes
RLDS Open-X, TensorFlow Datasets
LeRobot v2/v3 HuggingFace, Parquet + MP4
GR00T - NVIDIA Isaac, LeRobot v2 with embodiment metadata
RoboDM Berkeley's .vla format, up to 70x compression*
Zarr - Diffusion Policy, UMI
HDF5 - robomimic, ACT/ALOHA
MCAP ROS2 CDR + Foxglove Protobuf, no ROS install required
Rosbag - ROS1 .bag, ROS2 SQLite3

*RoboDM requires manual installation from GitHub (see below)

See docs/model_formats.md for which models (Octo, OpenVLA, ACT, Diffusion Policy, etc.) use which format. See docs/format_reference.md for detailed format specifications.

Why Forge?

Every robotics lab has their own data format: Open-X uses RLDS, HuggingFace uses LeRobot, Diffusion Policy uses Zarr, robomimic uses HDF5. Want to train Octo on your ALOHA data? Write a converter. Want to use LeRobot on Open-X datasets? Write another.

Forge uses a hub-and-spoke architecture — one intermediate representation, O(n) format support:

Any Reader → Episode/Frame → Any Writer

Add a reader, get all writers for free. Add a writer, get all readers for free. No N×M conversion logic. See docs/architecture.md for details.

Quick Start

git clone https://github.com/arpitg1304/forge.git
cd forge
pip install -e ".[all]"

RoboDM Support (Optional)

RoboDM requires manual installation from GitHub (PyPI version has a codec bug):

git clone https://github.com/BerkeleyAutomation/robodm.git
pip install -e robodm

Usage

# See what's in a dataset
forge inspect /path/to/dataset

# Convert it
forge convert /path/to/rlds ./output --format lerobot-v3
forge convert hf://arpitg1304/stack_lego ./stack_lego_rlds --format rlds --workers 4 --visualize
forge convert hf://lerobot/pusht ./pusht_robodm --format robodm

Works with HuggingFace Hub too:

forge inspect hf://lerobot/pusht
forge convert hf://lerobot/pusht ./output --format lerobot-v3

Python API

import forge

# Inspect
info = forge.inspect("/path/to/dataset")
print(info.format, info.num_episodes, info.cameras)

# Convert
forge.convert(
    "/path/to/rlds",
    "/path/to/output",
    target_format="lerobot-v3"
)

Quality Metrics

Automated episode-level quality scoring from proprioception data alone — no video processing needed.

forge quality ./my_dataset
forge quality hf://lerobot/aloha_sim_cube --export report.json

Scores each episode 0-10 based on 8 research-backed metrics:

  • Smoothness (LDLJ) — jerk-based smoothness from motor control literature (Hogan & Sternad, 2009)
  • Dead actions — zero/constant action detection (Kim et al. "OpenVLA", 2024)
  • Gripper chatter — rapid open/close transitions (Sakr et al., 2024)
  • Static detection — idle periods where the robot isn't moving (Liu et al. "SCIZOR", 2025)
  • Timestamp regularity — dropped frames and frequency jitter
  • Action saturation — time spent at hardware limits
  • Action entropy — diversity vs repetitiveness (Belkhale et al. "DemInf", 2025)
  • Path length — wandering/hesitation in joint space

See forge/quality/README.md for full metric details, paper references, and how to add new metrics.

Episode Filtering

Filter datasets by quality score, flags, or episode IDs. Supports dry-run previews and pre-computed quality reports.

forge filter ./my_dataset --min-quality 6.0                          # Dry-run preview
forge filter ./my_dataset ./filtered --min-quality 6.0               # Write filtered dataset
forge filter ./my_dataset ./filtered --exclude-flags jerky,mostly_static
forge filter ./my_dataset ./filtered --from-report report.json       # Skip re-analysis

See forge/filter/README.md for full details.

Dataset Registry

A curated catalog of 23+ prominent robotics datasets — browse, search, and download by name instead of memorizing URIs. Browse the registry online

# Browse all datasets
forge registry list

# Open an interactive HTML browser with filtering
forge registry list --html

# Filter by format, embodiment, or tags
forge registry list --format rlds --embodiment franka
forge registry list --tag manipulation --demo

# Get detailed info on a dataset
forge registry info droid

# Search across names, tags, embodiments, and task types
forge registry search "franka manipulation"

# Validate the registry (for contributors)
forge registry validate

Registry ID Resolution

Use dataset IDs directly in any command — no need for full paths or URIs:

forge inspect droid          # resolves to hf://lerobot/droid
forge quality pusht          # resolves to hf://lerobot/pusht
forge convert droid ./output --format lerobot-v3

Quick Start with forge demo

Download a small demo dataset, inspect it, and run quality scoring — all in one command:

forge demo                   # uses pusht by default
forge demo aloha_sim_cube    # or pick any demo-suitable dataset

See forge/registry/CONTRIBUTING.md for how to add new datasets to the registry.

Episode Segmentation

Automatic episode segmentation via PELT changepoint detection on proprioception signals. Splits episodes into contiguous phases (sub-skills, regime changes, idle periods) without video processing.

forge segment ./my_dataset
forge segment hf://lerobot/droid_100 --export segments.json --plot timeline.png
forge segment ./my_dataset --signal action --penalty bic --cost-model rbf
forge segment ./my_dataset --sample 20

Detects where the statistical properties of the proprio signal change abruptly — e.g., transitions between reaching, grasping, and placing phases. Configurable cost models (rbf, l2, l1), penalty methods (bic, aic, or numeric), and signal selection (observation.state, action, qpos).

See forge/segment/README.md for full details.

Visualization

Forge ships three visualization backends selectable with --backend:

forge visualize pusht                             # web (default) — browser-based, no install
forge visualize pusht --backend matplotlib        # matplotlib — sliders, comparison mode
forge visualize pusht --backend rerun             # Rerun — cameras + time-series on one timeline
forge visualize pusht --backend rerun --segment   # with PELT phase labels
forge visualize pusht --backend rerun --samples 3 # stream multiple episodes

The Rerun backend logs each frame's camera images, per-dimension action and state scalars, and segment labels into the Rerun viewer — all aligned on a shared frame timeline.

Rerun viewer showing camera stream alongside action and state time series

Install the Rerun extra to use it:

pip install "forge-robotics[rerun]"

CLI Reference

See docs/cli.md for the full command reference including:

  • forge inspect - Dataset inspection and schema analysis
  • forge convert - Format conversion with camera mapping
  • forge visualize - Interactive dataset viewer (backends: web, matplotlib, rerun)
  • forge quality - Episode-level quality scoring (details)
  • forge filter - Quality-based episode filtering (details)
  • forge registry - Browse and search the dataset registry
  • forge demo - Quick-start with a demo dataset
  • forge segment - Episode segmentation via changepoint detection (details)
  • forge stats - Compute dataset statistics
  • forge export-video - Extract camera videos as MP4
  • forge hub - Search and download from HuggingFace

Configuration

For complex conversions, use a YAML config:

forge inspect my_dataset/ --generate-config config.yaml
forge convert my_dataset/ output/ --config config.yaml

See docs/configuration.md for details.

Roadmap

Planned features (contributions welcome!):

  • Dataset merging - Combine multiple datasets into one (forge merge ds1/ ds2/ --output combined/)
  • Train/val/test splitting - Split datasets with stratification (--split 80/10/10)
  • Dataset registry - Curated catalog of 23+ robotics datasets with CLI browser and HTML viewer
  • Streaming reads - Process HuggingFace datasets without full download
  • Episode filtering - Filter by quality score, flags, or episode IDs (forge filter --min-quality 6.0)
  • Depth/point cloud support - Preserve depth streams from RLDS/Open-X
  • GR00T writer - Write to NVIDIA Isaac GR00T training format (read support complete)
  • Distributed conversion - Scale to 100K+ episode datasets across nodes
  • Conversion verification - Automated diff between source and converted data

Development

make venv && source .venv/bin/activate
make install-dev
make test

License

MIT

Release files for forge-robotics 0.2.0

For a detailed explanation of source distributions (sdists) and built distributions (wheels), please see the package formats documentation.

Source distribution (sdist)

Source distribution for forge-robotics 0.2.0
File Size Uploaded
forge_robotics-0.2.0.tar.gz 1.7 MB Details

Built distribution (wheel)

Table of built distributions (wheels) for forge-robotics 0.2.0
File Interpreter ABI Platform
forge_robotics-0.2.0-py3-none-any.whl Python 3 none any Details

Total release size: 1.9 MB

Release files / forge_robotics-0.2.0.tar.gz

Download URL forge_robotics-0.2.0.tar.gz
Size 1.7 MB
Tags Source
SHA-256 checksum
How to use checksums
6e8c8b6df19d569d01124faa3d4434d88c00a5c4aabd24689d31c6cf4ecdd732
BLAKE2b-256 checksum
How to use checksums
e40d6c45f722d96c70af5b0c17d863de65ddc12ee665287e7b287d4d3f9bac8d
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
Yes
Uploaded via twine/6.1.0 CPython/3.13.12

Provenance

Provenance describes where a file came from. On PyPI, provenance is shared via attestations, which provide a verifiable record of the build or publishing details. View details, limitations and caveats.

PyPI Publish Attestation

PyPI verified that this artifact, at this checksum, originated from the publisher listed below.

Signed by GitHub Actions, verified by PyPI on Apr 27, 2026.

Transparency log

Release files / forge_robotics-0.2.0-py3-none-any.whl

Download URL forge_robotics-0.2.0-py3-none-any.whl
Size 224.5 kB
Tags Python 3
SHA-256 checksum
How to use checksums
86553835bc1c4df7fb9c47a711b2fe37a9acb43cd0fabe1f9a2738a96e41ed05
BLAKE2b-256 checksum
How to use checksums
40502559a3ee8201d97b526cff30877ba38c4ecee41af6276083cfe6f394cce9
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
Yes
Uploaded via twine/6.1.0 CPython/3.13.12

Provenance

Provenance describes where a file came from. On PyPI, provenance is shared via attestations, which provide a verifiable record of the build or publishing details. View details, limitations and caveats.

PyPI Publish Attestation

PyPI verified that this artifact, at this checksum, originated from the publisher listed below.

Signed by GitHub Actions, verified by PyPI on Apr 27, 2026.

Transparency log

Release history Release notifications | RSS feed

This release

0.2.0 This release

2 release files

Anthropic, PBC Visionary sponsor Bloomberg Visionary sponsor Hudson River Trading Visionary sponsor Meta Visionary sponsor NVIDIA Visionary sponsor Microsoft Sustainability sponsor Depot Continuous Integration AWS Cloud computing and Security Sponsor Datadog Monitoring Fastly CDN Google Download Analytics Sentry Error logging StatusPage Status page