Skip to main content
A project is a directory containing an env.json mission spec. Two commands create one.

Create a project

cadenza mkdir rescue-dog
Creates ./rescue-dog/ with everything you need:
  • env.json: the mission spec (scene + phases + rewards)
  • main.py: a runnable driver for the project
  • requirements.txt
  • README
Both seed a working multi-phase mission (a rescue-dog debris scenario) you can run immediately, then edit.

Inspect a project

cadenza env show rescue-dog
Renders the mission: the scene (zones and objects), and the ordered phases with their goals, success/fail predicates, and reward terms, so you can sanity-check a spec before running it.

Anatomy of env.json

At a glance, every mission has three parts:
{
  "name": "rescue-dog-debris",
  "robot": "go1",                 // go1 (default) or g1
  "spawn": [0.0, 0.0, 0.0],
  "scene":  { "objects": [...], "zones": [...] },   // the world
  "phases": [ ... ],                                 // ordered sub-goals
  "vla_finetune": { ... }                            // how rollouts become training rows
}
  • scene: the static world, including boxes/markers the robot interacts with and named zones used by predicates and rewards.
  • phases: the mission as a sequence of sub-goals. Each phase has its own natural-language goal, a predicate that completes it, a predicate that fails it, and reward shaping.
  • vla_finetune: the prompt template used when exporting fine-tune records.
The complete field-by-field reference (every predicate and reward term) is on the next page.

Environment schema reference

Full env.json schema: scene, zones, phases, predicates, and reward terms.
Cadenza’s world forward direction is −X. Zone AABBs and positions are in world coordinates. Keep this in mind when placing objects and reading forward_distance_gain.