First round-trip
The core pull → edit → push loop, the --force guardrail, and why AI asset generation routes through the platform.
Once you're authorized, pick your next step based on the current folder:
- It has a
.sandscape/directory → it's already a Sandscape clone. Runsandscape pull, then work the core loop below. - It's a game folder not yet on Sandscape (no
.sandscape/) → import it withsandscape init. - It's empty or unrelated → you probably want an existing project. Run
sandscape listto see them, thensandscape clone <session_id> <dir>.
How this folder maps to the platform
The clone directory is the game's served root (generated_assets/ on the
platform). Files can live anywhere under it — there's no required structure. The
one special file is index.html at the root (the served entry point).
Everything except the CLI-managed metadata round-trips to the platform verbatim.
These are CLI-managed — they're not game content, so don't push or edit them as game files:
.sandscape/— session id, versions, file manifest, and the durable design.CLAUDE.md/AGENTS.md— generated guides..claude/,.agents/— the skill and other tool config.
The durable game design (concept, style, assets, plan) lives in
.sandscape/design.json — a good place to start to understand a project.
The core loop
sandscape pull— refresh from the platform before you start.- Edit files locally with your normal tools.
sandscape push— upload changed and new files.
Both pull and push are reject-on-divergence: they refuse rather than
merge, so you resolve conflicts explicitly.
- On
pull: if it refuses because the server advanced over a local edit, don't reach for--forcewithout checking what you'd lose (see below). - On
push: if the server moved past yourbase_version, runsandscape pullfirst, then push again.
`--force` discards local edits
sandscape pull --force overwrites your local edits on the conflicting files with
the server's version. Make sure you've saved or backed up anything you want to keep
before using it. (When a coding agent drives the CLI, the skill has it confirm
which files would be lost with you first.)
Asset generation runs on the platform
You can't generate AI assets (3D models, images, audio) locally — that runs on
Sandscape, where it's coin-metered. To add or regenerate a generated asset, do it
in the Sandscape web app, then sandscape pull to bring it down. You can freely
edit code and hand-authored files locally and push them.
Progress output
Long operations (clone/pull/push) print per-file progress, and with --json emit
{"event":"progress","done":N,"total":M,"path":"..."} lines — so you can tell
"working" from "stalled" during big transfers.