marble · git:20261010.bc67155 · 2026-10-10 · sha256 b29c881f6b560bef

marble git:20261010.bc67155A

Immutable. This exact content never changes and is served at /api/v1/blob/b29c881f6b560bef.

---
name: marble
description: Generate or import World Labs Marble worlds into NPA and run native CUDA capture or spatial-scan workflows with factual interactive HTML reports.
---

# Marble

For generated-site Go1 inspection, use one workflow:
`workflows/testing/marble-go1-inspection.yaml` with exactly one native
`--preset warehouse|shipyard|home|factory|utility` selection. Omission defaults
to warehouse. Each submission runs one hosted generation using `WLT_API_KEY`,
one RTX PRO 6000 collection and one continuous 25 FPS standalone HTML report.
It never fans out across situations. The guide is
`docs/workbench/guides/marble-robot-presets.md`; for a custom world, omit
`--preset` and override `world_prompt` and `workflow_preset` on the same YAML.
Use the native `write_quadruped_gallery` to combine completed reports into an
offline situation selector retaining every original video and trajectory row.
All five parameterizations have prior native GPU evidence from the retired
combined workflow; distinguish that evidence from new-entrypoint submissions.
These are Go1 presets, not ANYmal or Spot. Do not advertise thermal inspection,
defect detection, household manipulation or new RL training.

For detailed quadruped collection, use
`workflows/testing/marble-warehouse-quadruped.yaml` and
`docs/workbench/guides/marble-warehouse-quadruped.md`. Reuse an existing generated
warehouse: no new World API request is needed. The runtime verifies pinned
official Unitree Go1 meshes and a Google MuJoCo Playground ONNX policy. PyBullet
torque dynamics and ONNX inference execute on CPU; gsplat RGB, Warp depth, and
Cycles CUDA articulated rendering use one RTX PRO 6000. OpenImageDenoise runs
on CPU; CPU path tracing is rejected. This is pretrained-policy collection, not new RL training or a
physical robot connection. Preserve upstream licenses, actual link poses,
per-foot contact forces, raw depth, and per-frame renderer evidence in the
standalone HTML and collection bundle. Verify the completed run and browser
playback before claiming live acceptance.

For GPU learning beyond rendering, use `workflows/testing/marble-navigation-rl.yaml`
and `docs/workbench/guides/marble-navigation-rl.md`. The
`workbench.marble.navigation_prepare` adapter preserves a generated world's
collision triangles, measures supported cases with disjoint goal locations,
and seals inputs for the existing native ANYmal/Isaac/RSL-RL trainer. Training
and evaluation use standard Workbench/SkyPilot stages and immutable S3 handoffs.
Require an operator-qualified immutable Isaac image; do not default to the
quarantined public release. This adapter's CPU preparation is verified against
the real warehouse, but native GPU PPO and held-out evaluation remain unverified.
The earlier sensor collection cannot establish navigation learning acceptance.
`WLT_API_KEY` is needed for upstream generation, not for reusing its world bundle.

For embodied warehouse collection, use
`workflows/testing/marble-warehouse-rover.yaml` and
`docs/workbench/guides/marble-warehouse-rover.md`. It requires real World API
generation and aligned mesh/splat transforms. `workbench.marble.rover_collect`
drives a four-wheel rover through PyBullet CPU rigid-body dynamics, then renders
RGB with gsplat CUDA and raycasts depth with Warp CUDA on one Nebius GPU. It
saves actions, joints, contacts, poses, raw depth, and a standalone HTML replay.
The observer uses a CPU-rendered rover at recorded poses and CUDA mesh depth
occlusion. Do not describe this as physical Spot collection or RL training.
Run native runtime submission from a Linux operator and preserve its isolated
SkyPilot identity for resume and cleanup.

For a straightforward user walkthrough, use
`docs/workbench/guides/marble-to-nebius.md`: World Labs generates the scene,
the CPU acquisition stage downloads files to S3, and a Nebius GPU worker loads
those files for rendering or scanning. The report replays completed outputs.

For manufacturing, use `workflows/testing/marble-manufacturing-pallet-detection.yaml`.
It requires `WLT_API_KEY` and a real pallet dataset manifest, fails before
generation on missing auth or invalid/overlapping data, and never substitutes
the sample world. Native submit automatically resolves and forwards this token
from the environment or private NPA credentials. See
`docs/workbench/marble-manufacturing.md` for the fully headless command.
The experiment renders factory backgrounds on CUDA, composites training-only
RGBA pallet cutouts, and invokes the existing Faster R-CNN trainer/evaluator
on CUDA. Both arms receive matched optimizer-update counts and use the same
held-out real evaluation partition. Report negative AP changes honestly.
This is a 2D background-augmentation experiment, not a physics simulation or
production accuracy claim. New manufacturing execution is unverified until a
funded API credential and the operator's real dataset are supplied.

Use the native specs `workflows/testing/marble-world-capture.yaml` and
`workflows/testing/marble-spatial-scan.yaml`. Their stages are acquisition on
CPU, gsplat rendering or Warp raycasting on CUDA, and report publication on CPU.
Submit through `npa workbench workflow submit --stage-src --runtime` with the
operator's explicit project, exact context, and S3 destination.

Marble generation is hosted by World Labs; do not claim its weights run on
Nebius. `WLT_API_KEY` plus API credit is required for `world_source=generate`.
Pass the key as a secret environment variable, never in YAML or browser code.
The web subscription does not fund API requests.

For an explicitly disclosed existing-world demo, use
`--var world_source=sample-hobbit`. This downloads a pinned, MIT-licensed real
Marble example. Reports must retain `generated_this_run: false`, source
revision, file hashes, and `license.txt`. It proves the GPU consumer, not a new
generation request. Never switch to this mode while claiming prompt generation.

The consumers reuse the EnvGen CUDA/compiler image and its attested SkyPilot bootstrap without invoking Genesis.
Capture requires upstream Niantic SPZ decoding and gsplat; scan uses NVIDIA
Warp. Both fail without CUDA and record real device identity and CUDA events.
Reports reject incomplete frame sets and hash mismatches. Do not replace absent
GPU output with illustrative imagery or invented metrics.

SPZ scale and coordinate conversion are explicit in `world.json`. The sample
uses upstream scene units; do not call those calibrated meters. The sweep is
not a robot policy rollout or a proven navigable route. Collision meshes remain
approximate geometry requiring calibration before simulation use.

See `docs/workbench/marble.md` for CLI/SDK examples, artifact contracts, and
provider links. Serve the complete downloaded report prefix over HTTP; Spark
and Three.js are loaded from pinned CDN URLs. Check frame playback, world
exploration, and scan point-cloud controls in a real browser before handoff.