Free sampler
Stylized Town free sampler (stylized-town-sampler@0.1.0): 6 assets of stylized-town that need no account, no token and no purchase. This page takes them from an empty folder to a customized, validated street corner running in the browser.
1. Download the starter
curl -fsSLO <site origin>/starters/starter-vanilla.tgz
tar -xzf starter-vanilla.tgz
cd starter-vanillaWhat the placeholders in the commands mean
<registry origin>and<site origin>: the address of this website, scheme and host only (for examplehttps://followed by the host name in your address bar, no path). The website, the account service and the catalog registry share this one origin; the MCP server is at<registry origin>/mcp. The CLI accepts https only (plain http only for a local loopback registry).<folder with the SDK tarballs>: the folder with the SDK.tgzfiles. The SDK packages come as tarballs, not through the public npm registry. See what you need.- Run
npx agent-ready-assets …only inside the project where the SDK is installed: npx then runs the project's own CLI fromnode_modules/.bin. Outside such a project npx would look for a package of that name on the public npm registry, where we publish none — do not run it there (pnpm exec agent-ready-assets …never downloads anything).
For the next steps you need
- Node.js 22 and pnpm 11.
- The SDK tarballs (what you need). No account and no token.
2. Add the SDK tarballs and install
mkdir -p vendor
cp <folder with the SDK tarballs>/*.tgz vendor/
pnpm install --frozen-lockfile3. Install the sampler assets (no token)
The starter's kit:add script installs the full kit, which needs an account that owns it; the sampler assets are installed one by one instead. The CLI checks every file against its sha256 before writing, pins the install in assets.lock.json and writes an index of the installed assets to public/assets/stylized-town/kit.json.
unset AGENT_READY_ASSETS_TOKEN # the sampler needs no token
export AGENT_READY_ASSETS_REGISTRY=<registry origin>
npx agent-ready-assets add stylized-town/road-straight-01@0.3.0 --to public/assets
npx agent-ready-assets add stylized-town/road-corner-01@0.2.0 --to public/assets
npx agent-ready-assets add stylized-town/lawn-tile-01@0.1.0 --to public/assets
npx agent-ready-assets add stylized-town/bench-01@0.4.0 --to public/assets
npx agent-ready-assets add stylized-town/street-lamp-01@0.3.0 --to public/assets
npx agent-ready-assets add stylized-town/tree-01@0.2.0 --to public/assets
npx agent-ready-assets verifySigned in? Your account page also gives you short-lived download links for these packages, with the same commands plus --url and --sha256.
The 6 assets of the sampler4,598 triangles · 381 KB
- Straight road tile (4 m)
stylized-town/road-straight-01@0.3.0· load as-is - Road corner tile (4 m, 90 degrees)
stylized-town/road-corner-01@0.2.0· load as-is - Lawn tile (4 m)
stylized-town/lawn-tile-01@0.1.0· load as-is - Park bench
stylized-town/bench-01@0.4.0· declares wood-color, size-scale, armrests - Street lamp
stylized-town/street-lamp-01@0.3.0· declares light - Street tree
stylized-town/tree-01@0.2.0· load as-is
4. The street corner, customized through declared capabilities
The starter renders src/scenes/starter.scene.json. Replace it with the sampler's street corner (6 instances, 4 snapped with attach_to), in which bench uses {"wood-color":"#5A3A22","size-scale":1.2} (tested preset walnut-large) and lamp uses {"light":false} (tested preset light-false). Only declared capabilities are accepted; anything else is refused (capabilities and limits).
{
"schema_version": "1.1.0",
"kit": "stylized-town@0.4.0",
"instances": [
{
"instance_id": "road-west",
"asset": "stylized-town/road-straight-01@0.3.0",
"position_m": [
-2,
0,
0
],
"rotation_euler_rad": [
0,
0,
0
],
"uniform_scale": 1,
"customize": {}
},
{
"instance_id": "corner",
"asset": "stylized-town/road-corner-01@0.2.0",
"attach_to": {
"instance_id": "road-west",
"anchor_id": "anchor-road-east",
"connector": "anchor-road-west"
},
"uniform_scale": 1,
"customize": {}
},
{
"instance_id": "lawn",
"asset": "stylized-town/lawn-tile-01@0.1.0",
"position_m": [
-2,
0,
-4
],
"rotation_euler_rad": [
0,
0,
0
],
"uniform_scale": 1,
"customize": {}
},
{
"instance_id": "bench",
"asset": "stylized-town/bench-01@0.4.0",
"attach_to": {
"instance_id": "road-west",
"anchor_id": "anchor-prop-n1",
"connector": "anchor-base"
},
"uniform_scale": 1,
"customize": {
"wood-color": "#5A3A22",
"size-scale": 1.2
}
},
{
"instance_id": "lamp",
"asset": "stylized-town/street-lamp-01@0.3.0",
"attach_to": {
"instance_id": "road-west",
"anchor_id": "anchor-prop-n2",
"connector": "anchor-base"
},
"uniform_scale": 1,
"customize": {
"light": false
}
},
{
"instance_id": "tree",
"asset": "stylized-town/tree-01@0.2.0",
"attach_to": {
"instance_id": "lawn",
"anchor_id": "anchor-prop-mc",
"connector": "anchor-base"
},
"uniform_scale": 1,
"customize": {}
}
]
}pnpm run validateRuns agent-ready-assets verify && agent-ready-assets scene validate src/scenes/starter.scene.json --resolve: the installed files against the lockfile, then the scene against the installed manifests, printing every snapped transform.
5. Build and verify in a browser
pnpm run typecheck
pnpm run build
pnpm exec playwright install chromium
pnpm run verify-projectverify-project renders the scene with the installed SDK in Chromium and writes LOCALLY_VALIDATED evidence and screenshots to .agent-ready-assets/verify/.
6. Run it
pnpm devOpen the printed URL: the street corner with the customized bench and lamp. Everything works offline from here. The build in dist/ contains the installed asset files. The licence says what a published build may contain.
Next
- Change other values of the declared capabilities in the scene and run
pnpm run validateagain: customization. - What every asset of the full kit can change, and what the complete kit includes: capabilities and limits.
- With kit access: the quickstart installs the full kit into the same starter.
The sampler scene as published, without the customizations of step 4: /data/sampler/sampler-corner.scene.json (scene 1.1.0).