The spec lives on GitHub. This is your map to it.
github.com/URML-MARS/URML is the normative source of truth. Apache-2.0, DCO-signed. This page indexes the spec, gives you per-primitive code, and links you back to the file you want.
A small, opinionated language.
URML programs are YAML, a tree of intent primitives composed with sequence, branch, parallel, retry, and on_error (plus on / barrier for multi-robot fleets). The runtime translates intent into substrate calls; the validator refuses any program that cannot satisfy all five passes.
The verb vocabulary.
Every URML-compatible runtime must implement the core set. Profile extensions are optional and declared in the manifest.
Move to a named frame or explicit pose. The most-called verb.
Park at a dock or charger. Implies precision alignment.
Maintain pose. No horizontal motion. Aerial + marine.
Idle for a fixed wall-clock duration.
Block on a condition (sensor reading, perception event).
Close end-effector around a bound target.
Release the held object. Optional surface placement.
Run perception, bind a result for later steps.
Sweep a region with a sensor. Structured result.
Capture a single measurement (distance, mass, temp...).
Capture media (image, audio clip, point cloud).
Emit a structured report on a declared channel.
Emit audio via TTS. Home-profile extension.
Capture audio and bind the transcription.
Transition from grounded to flight.
Transition from flight to grounded.
Return to the take-off frame. Substrate-implemented.
Pick a part from a declared source (RFC-0013).
Place a held part at a declared target (RFC-0013).
Change end-effector at a tool station (RFC-0013).
Coordinate two arms in one bound action (RFC-0010).
Drive a declared digital/analog output line (RFC-0017).
Compute a trajectory under the AV profile (RFC-0020).
Execute a bound trajectory (RFC-0020).
A program, a manifest, a policy.
These three files are all you need to validate and execute. The program says what; the manifest says what the robot can; the policy says what the jurisdiction allows.
Forty accepted or implemented, one open.
Declarative fixtures.
Any URML-compatible runtime must pass the public conformance suite. Fixtures are YAML, hermetic, and produce a machine-readable results file, the artifact you submit for listing. See conformance/CONFORMANCE_KIT.md.
Reference adapters, more welcome.
The repo ships reference adapters across ROS 2, MAVLink, and vendor SDKs. Self-report your own by running the conformance kit and opening a PR.