Inspect robot video datasets and generate manifests, previews, and catalogs.
Project description
OpenBot Data
Inspect, catalog, and prepare robot video data for embodied AI and robot learning.
Library documentation · API reference · Data product · Source repository
OpenBot Data is an early Python toolkit for working with robot data — especially egocentric video and teleoperation data collected from wrist cameras, head-mounted cameras, and robot demonstrators.
Use it to scan video directories, extract preview frames, build dataset manifests, and export a searchable robot dataset catalog (JSON/CSV) before training or evaluation.
Install
pip install openbot-data
Requires Python 3.9+.
Runnable demo
Clone the repository, install the package, and run the complete local preflight against a video directory or local LeRobot repository:
pip install -e .
python examples/local_preflight.py ./robot_videos --out ./openbot-preflight --integrity sample
The demo uses the public Python API and writes
inspection/metadata/manifest.json, inspection/metadata/report.json, and
audit.json. Add --format lerobot for a local LeRobot v2.1/v3 repository,
--integrity full to decode every frame, or --no-checksum to skip SHA-256
duplicate detection. The demo discovers and hashes the dataset once, then shares
one immutable DatasetSnapshot across both renderers.
What it does
- Scan robot video directories — recursively find
.mp4,.mov,.avi,.mkv,.webmfiles. - Read video metadata — duration, fps, resolution, frame count, file size, validity.
- Extract preview frames — uniformly sample frames for quick human inspection.
- Generate manifests —
manifest.jsonwith per-video metadata and preview paths. - Generate quality reports —
report.jsonwith aggregate duration, size, and resolutions. - Export dataset catalogs — JSON or CSV for dataset registries, documentation, and SEO-friendly catalog pages.
- Discover local LeRobot data — read-only episode and video-stream discovery for v2.1/v3 layouts.
- Audit before training or upload — stable error/warning codes without an uncalibrated quality score.
CLI
Scan videos
openbot-data scan ./robot_videos
openbot-data scan ./robot_videos --output scan.json
Inspect a dataset
openbot-data inspect ./robot_videos --out ./openbot_dataset
openbot-data inspect ./lerobot_dataset --format lerobot --out ./openbot_dataset
openbot-data audit ./robot_videos --out ./audit.json --fail-on error
Output structure:
openbot_dataset/
previews/
metadata/
manifest.json
report.json
Export a robot dataset catalog
# JSON catalog for dataset registries and documentation
openbot-data catalog ./robot_videos --out ./catalog.json --format json
# CSV catalog for spreadsheets or Hugging Face dataset cards
openbot-data catalog ./robot_videos --out ./catalog.csv --format csv
The catalog is designed to be checked into GitHub or linked from a dataset registry page such as OpenBot.ai Datasets.
Python API
from openbot_data import (
audit_dataset,
export_catalog,
inspect_dataset,
prepare_dataset,
read_lerobot,
scan_directory,
schema_path,
)
# Scan a directory
scan = scan_directory("./robot_videos")
print(scan["valid_videos"])
# Inspect and extract previews
result = inspect_dataset(
video_dir="./robot_videos",
output_dir="./openbot_dataset",
)
print(result["manifest_path"])
print(result["report_path"])
# Export a catalog for documentation / SEO
export_catalog(
video_dir="./robot_videos",
output_path="./catalog.json",
fmt="json",
)
# Discover/hash once and reuse the immutable snapshot across renderers
snapshot = prepare_dataset("./robot_videos", checksum="sha256", integrity="sample")
inspection = inspect_dataset("./robot_videos", "./inspection", snapshot=snapshot)
audit = audit_dataset("./robot_videos", snapshot=snapshot)
# Discover episodes and camera streams in a local LeRobot repository
lerobot = read_lerobot("./lerobot_dataset")
# Packaged JSON Schemas are stable independently of the package version
with schema_path("manifest") as manifest_schema:
print(manifest_schema)
Use cases
- Prepare teleoperation data collected from ALOHA, Mobile ALOHA, VR, or SpaceMouse setups.
- Inspect egocentric video datasets before converting to LeRobot, RLDS, or HDF5.
- Build a robot dataset catalog that links back to your project website or Hugging Face collection.
- Validate video integrity before running robot policy training or VLA pre-training.
Development
pip install -e ".[dev]"
python scripts/check_version.py
pytest
scripts/test_matrix.sh
python -m build
python -m twine check dist/*
The local matrix script requires uv and tests
Python 3.9–3.12 without requiring a repository CI workflow.
VERSION is the package version source of truth. To release, update VERSION
and CHANGELOG.md, verify locally, then publish a GitHub Release whose tag is
v<version>. The release workflow validates the tag before publishing to PyPI.
Status
OpenBot Data is an early local Python toolkit. Hosted upload, annotation, review,
export, billing, Workers, and Container infrastructure belong to the main
OpenBot product repository. Use the
separate openbot-sdk package to call
the hosted API.
Roadmap
- Video scanning and metadata extraction
- Preview frame extraction
- Manifest and report generation
- JSON/CSV catalog export
-
0.0.2: local dataset preflight, including a versioned manifest, deterministic audit findings, and local LeRobot discovery - Later: RLDS / HDF5 ingestion helpers
- Later: calibrated quality evaluation after a labeled validation set exists
Audit codes are documented in docs/audit-findings.md.
Canonical manifests use explicit path_base/path_bases fields; they never
serialize private source paths. Symlinks are skipped by default, and even when
follow_symlinks=True a target outside the dataset root is rejected.
License
MIT
Citation
If you use OpenBot Data in research or production, cite the project repository:
@software{openbot_data,
title = {OpenBot Data},
author = {OpenBot},
year = {2026},
url = {https://github.com/openbotai/openbot-data}
}
Related
- OpenBot.ai — Robot dataset catalog and policy evaluation platform.
- OpenBot.ai Datasets — Searchable index of egocentric and robot datasets.
Project details
Release history Release notifications | RSS feed
Download files
Download the file for your platform. If you're not sure which to choose, learn more about installing packages.
Source Distribution
Built Distribution
Filter files by name, interpreter, ABI, and platform.
If you're not sure about the file name format, learn more about wheel file names.
Copy a direct link to the current filters
File details
Details for the file openbot_data-0.0.2.tar.gz.
File metadata
- Download URL: openbot_data-0.0.2.tar.gz
- Upload date:
- Size: 36.8 kB
- Tags: Source
- Uploaded using Trusted Publishing? Yes
- Uploaded via: twine/6.1.0 CPython/3.13.14
File hashes
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
d0eeef6b74010a9cdadce68d25eec309fa2cbe8b5665c2d00837d08610d990e8
|
|
| MD5 |
77d5ba4b8d565e2583c62bdda2113ca8
|
|
| BLAKE2b-256 |
ad526c89337ff2e890971ee98574be61642a5346b716bc3ea84c22a5648305cd
|
Provenance
The following attestation bundles were made for openbot_data-0.0.2.tar.gz:
Publisher:
release.yml on openbotai/openbot-data
-
Statement:
-
Statement type:
https://in-toto.io/Statement/v1 -
Predicate type:
https://docs.pypi.org/attestations/publish/v1 -
Subject name:
openbot_data-0.0.2.tar.gz -
Subject digest:
d0eeef6b74010a9cdadce68d25eec309fa2cbe8b5665c2d00837d08610d990e8 - Sigstore transparency entry: 2248156596
- Sigstore integration time:
-
Permalink:
openbotai/openbot-data@3e6bb584a6294dff14518e57043943049404685b -
Branch / Tag:
refs/tags/v0.0.2 - Owner: https://github.com/openbotai
-
Access:
public
-
Token Issuer:
https://token.actions.githubusercontent.com -
Runner Environment:
github-hosted -
Publication workflow:
release.yml@3e6bb584a6294dff14518e57043943049404685b -
Trigger Event:
release
-
Statement type:
File details
Details for the file openbot_data-0.0.2-py3-none-any.whl.
File metadata
- Download URL: openbot_data-0.0.2-py3-none-any.whl
- Upload date:
- Size: 26.9 kB
- Tags: Python 3
- Uploaded using Trusted Publishing? Yes
- Uploaded via: twine/6.1.0 CPython/3.13.14
File hashes
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
5422bb337f5616e4e537147d71699ae2823c69719c913b73a5f868ef7db6447f
|
|
| MD5 |
1ec87fbbbef58947fa83041ef6bdf17c
|
|
| BLAKE2b-256 |
ba9b3e770cf01be7866446158e0bc9fa1d8f006761a493fa71ecce0712792fe6
|
Provenance
The following attestation bundles were made for openbot_data-0.0.2-py3-none-any.whl:
Publisher:
release.yml on openbotai/openbot-data
-
Statement:
-
Statement type:
https://in-toto.io/Statement/v1 -
Predicate type:
https://docs.pypi.org/attestations/publish/v1 -
Subject name:
openbot_data-0.0.2-py3-none-any.whl -
Subject digest:
5422bb337f5616e4e537147d71699ae2823c69719c913b73a5f868ef7db6447f - Sigstore transparency entry: 2248157005
- Sigstore integration time:
-
Permalink:
openbotai/openbot-data@3e6bb584a6294dff14518e57043943049404685b -
Branch / Tag:
refs/tags/v0.0.2 - Owner: https://github.com/openbotai
-
Access:
public
-
Token Issuer:
https://token.actions.githubusercontent.com -
Runner Environment:
github-hosted -
Publication workflow:
release.yml@3e6bb584a6294dff14518e57043943049404685b -
Trigger Event:
release
-
Statement type: