Skip to content

runrobotics/runrobot

Repository files navigation

runrobot

Open-source package and runtime tooling for robot policies.

A policy is a trained, packaged, and published software program.

Researchers use runrobot to:

  • package a policy with policy.yaml, robot.yaml, scene.yaml, and a validator
  • validate the package locally
  • run the same package in the browser, in simulation, and on a robot
  • publish the exact package to RunRobot Cloud or an on-prem deployment of RunRobot Cloud

Developers use RunRobot Cloud SDKs and APIs to:

  • build public browser run URLs for published policies
  • publish scenes, robots, and policy artifacts
  • automate hosted workflows such as SceneGen, arena, and leaderboard reads

Why are we building this?

It is too hard to ship robot policies.

Training stacks vary. Export formats vary. Runtime assumptions vary. Robot control semantics vary. Scene assumptions vary.

Observation order is often hidden in code. Joint ordering is often hidden in adapters. Reset behavior is often hidden in launch scripts. Control conversion is often hidden in robot-specific wrappers.

A browser demo is one system. Headless evaluation is another system. Hardware deployment is another system. They drift apart.

Preference data is hard to trust when it is not attached to the exact packaged policy that a human saw.

Most robotics teams still integrate one policy at a time. That does not scale.

runrobot is meant to fix that boundary. You should add runtimes rarely. You should add policies constantly.

Package Workflow

The intended package layout is simple:

my-policy/
  policy.yaml
  robot.yaml
  scene.yaml
  validator.py

policy.yaml defines the policy runtime contract:

  • runtime kind and version
  • model locations
  • optional auxiliary models
  • observation term order, history, scaling, and clipping
  • action decoding
  • command schema
  • latency and warmup expectations
  • reset expectations

robot.yaml defines the robot contract:

  • MuJoCo model and assets
  • actuator semantics
  • joint ordering
  • sensors
  • body names
  • default pose
  • camera mounts
  • control conversion rules such as joint_position_pd or direct_torque

scene.yaml defines the scene contract:

  • MuJoCo XML path
  • asset bundle
  • randomization knobs
  • spawn and reset rules
  • deterministic seed inputs

The validator checks that the package is conformant before it reaches shared evaluation or deployment surfaces.

The target workflow is:

  1. Train a policy with any stack you want.
  2. Export into the runrobot package contract.
  3. Validate the package locally.
  4. Run the package locally in the browser.
  5. Publish the exact package to RunRobot Cloud or an on-prem deployment of RunRobot Cloud.
  6. Collect human preference data on that exact packaged policy when it runs on the platform.

Example Manifests

policy.yaml

apiVersion: runrobot/v1alpha1
kind: Policy
metadata:
  name: g1-walk
  title: G1 Walk
runtime:
  kind: browser.mujoco.onnx
  version: "1"
  adapter: onnx_metadata_v1
refs:
  robot: ./robot.yaml
  scene: ./scene.yaml
models:
  policy: ./artifacts/policy.onnx
command:
  schema: velocity_command_v1
  fields: [lin_vel_x, lin_vel_y, ang_vel_z]

robot.yaml

apiVersion: runrobot/v1alpha1
kind: Robot
metadata:
  name: unitree-g1
  title: Unitree G1
robot:
  key: unitree/G1
control:
  conversion: joint_position_pd

scene.yaml

apiVersion: runrobot/v1alpha1
kind: Scene
metadata:
  name: flat-ground
  title: Flat Ground
mujoco:
  xml: ./scenes/flat.xml
  assetBundle: ./scenes/assets

Boundary

runrobot is the open-source package and runtime layer.

This repo is for:

  • the package contract
  • local validation
  • reference browser and simulation runtimes
  • package-level compatibility checks
  • the path from local package to hosted preference collection on the RunRobot platform

This repo is not the hosted control plane.

runrobot-cloud is the canonical hosted production system. It owns:

  • hosted dashboards
  • hosted APIs
  • session serving
  • public URL hosting
  • arena orchestration
  • production preference data storage
  • vote filtering and ranking
  • anti-abuse and anti-cheat systems
  • private backend infrastructure

If you want the developer upload client for hosted RunRobot Cloud, use the JS or Python runrobot SDK that lives with the cloud product. This repo does not currently ship that SDK.

Human preference data collection is only supported when a packaged policy is running on RunRobot Cloud or an on-prem deployment of RunRobot Cloud.

Development

Install:

pnpm install

Run locally:

pnpm dev --port 3200

Build:

pnpm build

First Contributor

Chase Brignac

Chase Brignac

About

No description, website, or topics provided.

Resources

Stars

Watchers

Forks

Releases

No releases published

Packages

 
 
 

Contributors