calesthio/world-labs-marble
>- Generate persistent, explorable 3D worlds/environments with Marble by World Labs — from text, a single image, multiple images, video, or a 360 panorama, plus coarse-structure blocking with Chisel. Use this skill when a task needs a navigable 3D scene, VR/immersive backdrop, virtual-production environment, previz set, game-blockout, or web/engine-ready Gaussian splat or mesh, and you must choose an input mode, a Marble model, an export format, and a plan/API route, then review world quality. Covers the Marble web app and the World API, editing/expansion, output formats and what each supports downstream, import into Unity/Unreal/Blender/Houdini/web, pricing/credits, capability limits, and rights/licensing. Not for flat text-to-image, text-to-video clips, or real-time on-the-fly world models (Marble outputs are downloadable, static 3D environments).
npx skills add https://github.com/calesthio/generative-media-skills --skill world-labs-marble
Marble is World Labs' commercial multimodal world model: it lifts a text
prompt, image(s), video, panorama, or coarse 3D blocking into a **persistent,
downloadable 3D environment** you can navigate, edit, expand, and export. World
Labs was co-founded by Fei-Fei Li; Marble reached general availability on
2025-11-12 and a programmatic World API was announced 2026-01-21.
(Documented; verified 2026-07-10.)
The defining property, and the thing that separates Marble from most
"generative video" or interactive world models: the world is **materialized as
persistent 3D geometry** (Gaussian splats and/or meshes) that you own as a file,
rather than hallucinated frame-by-frame as you walk. That makes it usable as a
production asset, not just a demo you watch. (Documented — worldlabs.ai blog;
verified 2026-07-10.)
Use it when the deliverable is a 3D space:
game engine.
concept that must hold up from multiple camera angles.
Do not reach for Marble when the user wants a flat image (use an image
model), a short talking/action video clip (use a video model), or a real-time
game engine that streams infinite world on the fly. Marble worlds are bounded,
static environments — extremely detailed, but not simulations with moving actors
or physics baked in.
As of 2026-07-10 there are two first-party routes; both are live:
| Route | Where | Auth | Billing | Best for |
|---|---|---|---|---|
| Marble web app | marble.worldlabs.ai | Account login | Monthly subscription (Free/Standard/Pro/Max) | Hands-on authoring, Chisel, Studio (Compose/Record), interactive editing |
| World API | platform.worldlabs.ai, endpoint base api.worldlabs.ai/marble/v1 | WLT-Api-Key header | Prepaid credits (separate wallet) | Automated/batch generation, product integrations |
Critical, easily-missed fact: **app credits and API credits are separate
wallets.** Credits bought for the Marble app cannot be spent on the API, and vice
versa. Budget them independently. (Documented — docs.worldlabs.ai/api/pricing;
verified 2026-07-10.)
There is a published AI-agent skill for the API
(docs.worldlabs.ai/api/agent-skill) intended for coding agents that drive the
World API directly.
Documented model line as of 2026-07-10 (docs.worldlabs.ai/marble/models,
release notes 2026-04-02):
marble-1.1 — the recommended default. Improved quality at a fixedgeneration cost. Start here for most single-scene work.
marble-1.1-plus — auto-expanding worlds: covers more 3D space in oneshot when the scene allows. Variable cost (bigger world = more credits).
Use when you need a genuinely large, walkable expanse from one generation.
marble-1.0 — legacy; keep only for continuing older projects.marble-1.0-draft — fastest and ~10× cheaper. Use for **prompt/iterationscouting** before committing a full-quality generation. Draft output is lower
fidelity by design.
Heuristic (production): iterate prompts and framing on draft, then promote
the winning prompt/seed to 1.1; reserve 1.1 Plus for hero shots that must
be large. Reusing the seed keeps a concept stable while you change one variable.
Marble accepts five prompt types. Match the mode to how much control you have and
need (documented — docs.worldlabs.ai/marble/create and API generate reference;
verified 2026-07-10):
control over exact appearance. Good for ideation and stylized worlds.
from one direction; Marble invents the rest. Marble auto-detects an
equirectangular panorama if you supply one.
via the API), each tagged with a direction/azimuth (Front/Back/Left/Right) or
Auto Layout. Use when you must control what the world looks like from several
angles.
100 MB** (API limit raised to 100 MB on 2026-01-29). Best for rotational or
walk-through coverage of an existing place.
any 2D input because it pins the full surround; the API can also generate a
panorama for you (/pano endpoints).
The more the input constrains geometry (panorama > multi-image > single image >
text), the more predictable the world — but the less Marble invents. Pick the
weakest constraint that still gets the look you need. (Production heuristic.)
Chisel (documented; the current name as of 2026-07-10) is Marble's
coarse-3D blocking tool. It decouples structure from style: you lay out the
spatial skeleton in 3D, then a text (or image) prompt paints the look onto it.
What Chisel gives you (docs.worldlabs.ai/marble/create/chisel-tools):
boundaries) and an extrude function for depth/volume.
blocking and restyled cohesively into the generated world.
originates.
Use Chisel when layout matters: room proportions, door/window placement,
architectural footprints, or matching a real set's dimensions. It is the right
tool when a pure text or image prompt keeps giving you the right *style* but the
wrong *floor plan*. (Production heuristic.)
regions, or restyle the whole world with prompts. Surfaced through the omnibox
(release notes 2026-04-02).
(the "click and expand" idea), or add detail to weak/low-fidelity areas.
Expansion is gated to Pro/Max subscription tiers.
of layout; supports importing meshes into the Composer (release notes
2026-01-29).
paths and export video, including "enhanced video" that adds detail and
dynamic elements (e.g. smoke, flowing water) to the render.
Note the important distinction: dynamic elements live in the video export,
not in the exported 3D geometry. The splat/mesh you download is static.
(First-party + production observation; verified 2026-07-10.)
Documented export specs (docs.worldlabs.ai/marble/export/specs and mesh;
verified 2026-07-10):
| Format | Detail | Downstream fit | Tier/limit |
|---|---|---|---|
| Gaussian splat — SPZ | Marble-native, size-optimized; ~2M or ~500k splats | Marble's own renderer; Spark (web/Three.js) | Highest visual fidelity |
| Gaussian splat — PLY | Uncompressed, broad tool compatibility | Blender/Houdini/Unity/Unreal splat plugins | Same fidelity, larger files |
| Collider mesh (GLB) | ~100–200k triangles, ~3–4 MB, instant | Physics/collision in engines | Standard+; not for display |
| High-quality mesh (GLB) | ~600k tris (textured) and ~1M tris (vertex-colored), 100–200 MB | Editable geometry for DCC/engines | Pro; up to ~1 hr to generate; rate-limited ~4/hr; owner-only |
| 360 panorama (PNG) | Equirectangular, 2560×1280 | Skyboxes, matte refs | — |
| Video | Camera-path render, optional enhancement | Previz, social, edit | Enhancement/expansion gated to Pro+ |
Decision rule: Gaussian splats for visual fidelity, meshes for interaction.
If you need the best-looking result and the target can render splats (web via
Spark, or an engine plugin), export SPZ/PLY. If you need collision, physics, or a
watertight editable object, export the mesh — collider mesh for physics only,
high-quality mesh for visuals-plus-geometry. Both mesh variants exist because
reconstruction quality varies by scene; pick whichever version reconstructs your
scene better. (Documented + heuristic.)
Coordinate gotcha: exports default to OpenCV coordinates. For OpenGL-based
software, scale Y and Z by −1 (or choose the OpenGL option added 2026-01-01) or
the world imports inverted. (Documented; verified 2026-07-10.)
Marble documents Gaussian-splat import paths for **Unity, Unreal Engine,
Blender, and Houdini** (each via that tool's Gaussian-splatting plugin) and
Spark for custom web/Three.js apps; there are open-source interactive
examples that combine a world with rendering and physics
(docs.worldlabs.ai/marble/export). Practical path:
sparkjs.dev).collider mesh GLB alongside it for physics.
Because splat rendering still relies on third-party plugins in most engines,
confirm the target engine/version has a working Gaussian-splat renderer before
you commit a splat-only pipeline; fall back to the high-quality mesh where it
doesn't. (Production heuristic.)
Marble app subscription tiers (secondary-source-corroborated: The Batch /
deeplearning.ai and docs; verified 2026-07-10 — confirm live figures before
relying on them):
| Tier | Price | Generations/mo | Notable unlocks |
|---|---|---|---|
| Free | $0 | ~4 | Text, single image, or 360 panorama |
| Standard | ~$20/mo | ~12 | Multi-image, video, 3D-layout inputs; editing; collider-mesh export |
| Pro | ~$35/mo | ~25 | Expansion, video enhancement, high-quality mesh export, commercial rights |
| Max | ~$95/mo | ~75 | All features, highest volume |
World API credits (documented — docs.worldlabs.ai/api/pricing; verified
2026-07-10):
pano-from-image); 1.0 / 1.1 ~1,500–1,600 credits; 1.1 Plus ~1,500 base
scaling up to ~3,000 depending on world size (variable "dynamic cube" cost).
Rough rule of thumb: a full-quality API world (~1,500 credits) ≈ $1.20; a
draft ≈ $0.12–$0.20. Budget accordingly and scout on draft.
simulation in the exported geometry; dynamism appears only in video renders.
not produce infinite streaming worlds.
or reflective surfaces, and areas the input never showed** (occluded backs,
undersides). Marble invents unseen regions plausibly, not accurately.
Pro-tier/owner-only.
(Documented + first-party; verified 2026-07-10.)
When reviewing a Marble world for production use, walk (don't glance) and check:
panorama edges meet, and floating/missing geometry behind foreground objects.
Matters most for game blockouts and physics.
judge whether your camera will ever see them.
the usual artifact sources. Decide if a mesh export will hold up or if you
should stay in splats.
dimensions match your set/engine before importing.
as one coherent space, not stitched fragments.
for physics), and does the target renderer actually support it?
If artifacts sit only outside the intended camera path, the world may be
production-ready as-is. If they're on-camera, prefer Expand/edit or a
re-generation with a stronger input (add a panorama or multi-image) over
patching in a DCC. (Production heuristic.)
Documented / first-party (worldlabs.ai Terms of Service and product docs;
verified 2026-07-10):
revocable, non-exclusive license for personal, non-commercial use only.
commercially, excluding World Labs' own products/technology/IP — subject to
the TOS.
Pro and Max. Treat Standard as effectively non-commercial for delivery
purposes despite being a paid tier, and **verify the current tier's commercial
grant in the live TOS** before shipping client work. (This app-tier gating vs.
the TOS "paid account" language is a known ambiguity — resolve it against the
live terms for the specific plan, do not assume.)
trademarked material, or a real person's likeness you have no rights to into a
world you intend to distribute.
When advising a user, always tie the recommended plan to the intended use: a
commercial deliverable needs Pro or above (or a paid API entitlement) —
recommending the Free tier for client work is a rights error.
platform" for a Quest 3 web experience.
marble-1.0-draft, finalize onmarble-1.1.
text — a panorama pins the full surround so the platform reads coherently in
every head direction, which VR demands.
seed to 1.1 → Expand the tunnel mouths to lengthen the platform → export
SPZ → render on the web with Spark.
seed across draft→final; keep world private untilreviewed.
movement.
expansion, thin railing tearing — review by orbiting before export.
export if the VR app needs collision.
specific door position, for greyboxing in Unity.
marble-1.1.gave the right style but the wrong floor plan; blocking walls/door in 3D fixes
geometry, and the prompt only styles it.
camera at the play-start point → prompt "warehouse office, worn concrete,
fluorescent light" → generate → export collider mesh GLB (physics) +
PLY splat (visual) → import both into Unity (splat plugin + collider).
greyboxing can start against real collision.
(it's meant to be simple); high-quality mesh needed later for visual polish.
restyled into the scene.
production pre-light, unattended overnight.
marble-1.1 (fixed cost for predictable budget).POST api.worldlabs.ai/marble/v1/worlds:generate, header WLT-Api-Key):**
{
"world_prompt": { "type": "text",
"text_prompt": "vast alien desert, twin suns, wind-carved rock arches" },
"display_name": "alien-desert-07",
"model": "marble-1.1",
"seed": 7,
"tags": ["previz", "desert"],
"permission": { "public": false }
}
operation_id; poll/operations/{operation_id} until done, then read the world and call the
export endpoint for SPZ. Charge (cost) is reported on success.
or two prompts on draft first to lock the wording.
virtual-production toolchain.
same-seed sameness across prompts (vary seed and prompt); over-spend from
jumping straight to 1.1 Plus without draft scouting.
Primary / first-party:
Secondary (disclosed-method, used only where first-party pages were SPA shells,
e.g. exact consumer dollar tiers):
Volatile facts (model names, credit costs, subscription prices, access routes,
export limits) are dated above; re-verify against the live docs and pricing pages
before relying on them for a purchase or a delivery decision.
Take calesthio/world-labs-marble from the repository into ~/.claude/skills for personal
use, or into .claude/skills inside a project.
The agent identifies a skill by the name field in its header. Two skills with the
same name cannot sit side by side — one of them will be ignored.