File structure
Each physical skill lives in a directory under~/innate-os/workspace/custom_skills/ on the robot (skills recorded on releases before the workspace layout may still be in ~/skills/, which is also scanned):
Episode format (HDF5)
Each episode is stored as an HDF5 file with the following structure:
Where
T is the number of timesteps in the episode and action_dim is typically 6 (joint positions) or 10 (6 joints + 2 base velocity + 2 reserved).
Additional fields for mobile tasks
When recording with base movement enabled, the episode also includes:Recording parameters
The recorder captures data at 30 Hz by default with these settings (fromrecorder.yaml):
Metadata file
Each skill directory contains ametadata.json that evolves as you progress through the pipeline:
After creating the skill:
execution block tells the BehaviorServer everything it needs to load and run the policy: which checkpoint to use, the action dimensionality, the maximum execution duration, and the arm pose to move to before starting inference.
Normalization statistics
The training pipeline computes per-feature normalization statistics (mean and standard deviation) from your dataset and saves them indataset_stats.pt. During inference, the policy uses these stats to normalize observations and unnormalize action outputs, ensuring consistency between what the model saw during training and what it sees at runtime.
