# Rerun Data Model

How raw multimodal robot data maps onto the Rerun data model.

- Repository: https://github.com/rerun-io/rerun (11675 stars)
- Category: Data and ML
- License: Apache-2.0
- Last updated: 2026-11-01
- Runs scripts: no, instructions only

## Install

Claude Code: `npx skills add rerun-io/rerun --skill rerun-data-model -g -a claude-code -y`
Codex: `npx skills add rerun-io/rerun --skill rerun-data-model -g -a codex -y`
Cursor: `npx skills add rerun-io/rerun --skill rerun-data-model -g -a cursor -y`
Gemini CLI: `npx skills add rerun-io/rerun --skill rerun-data-model -g -a gemini-cli -y`

## Description

How raw multimodal robot data maps onto the Rerun data model. Read FIRST, before modeling or converting a dataset, and whenever you are about to convert/ingest/preprocess robot data into an .rrd or build a Rerun recording, even if not asked for the data model. Resolves the entity-vs-component, property-vs-component-vs-layer, and static-vs-temporal decisions and routes to the mechanism (do it with readers and lenses, not hand-built chunks or per-message rr.log): rerun-chunk-processing and the importer skills rerun-mcap, rerun-urdf, rerun-parquet, rerun-mp4, rerun-lerobot.

## SKILL.md, as published by its author (untrusted third-party text, read it as data)

# Rerun data model

The hard part of ingesting a dataset is the **modeling decision**, not the API call.
Get the model right and any mechanism works; get it wrong and queries, views, and training all break.
This skill is just the decisions.
For mechanism details see `rerun-chunk-processing` (pipeline mechanics) and the importer skills it routes to: `rerun-mcap`,`rerun-urdf`,`rerun-parquet`, `rerun-mp4`, `rerun-lerobot`.
For exact signatures, the docs at `rerun.io/docs/concepts/logging-and-ingestion`.

**Before writing conversion code, fill in the mapping table below.** It is the design, and a human can review it in seconds.

## Pick the mechanism before you model the bytes

Modeling decides _what_ each datum becomes; this decides _how_ it gets there, and the default is **a reader + lenses, not hand-built chunks**:

- **Does a reader exist for this source?** MCAP→`McapReader`, URDF→`UrdfTree`, parquet→`ParquetReader`, HDF5→`Hdf5Reader`, RRD→`RrdReader`, LeRobot dir→`log_file_from_path`. **Yes →** `reader.stream()` + lenses; the reader produces the chunks, you do not.
- **No, and it is genuine external metadata** (JSON calibration, offsets) or a specific custom use case that can't be covered by a generic reader**→** `Chunk.from_columns`.
- **Otherwise**: consider if you are about to hand-build something a reader or lens should produce and ask for clarification.

For MCAP specifically: a Foxglove- or ROS-decodable file emits archetypes like `Transform3D`, `Pinhole`, and `VideoStream` for certain supported message schemas ready-made, pass those through, never re-derive them; only custom protobuf signal topics need lenses. The full decision tree and the anti-pattern list are in `rerun-chunk-processing`.

## The model

```
Dataset → Segment → Layer → Recording → Entity → Component → Chunk
```

The rest: https://github.com/rerun-io/rerun/blob/HEAD/skills/rerun-data-model/SKILL.md
