Operations command line tool.
Check the active deployment by pointer on every catalyst, verify convergence across catalysts, and check asset bundle status via the asset bundle registry.
npx @dcl/opscli pointer-consistency --pointer "0,0"
npx @dcl/opscli pointer-consistency --pointer "0,0" --env zone
npx @dcl/opscli pointer-consistency --cid "bafkrei..."
--pointerScene pointer coordinate (e.g."0,0")--cidEntity ID to resolve the pointer from (alternative to--pointer)--envEnvironment:org(default),today, orzone--registryWhich registry to read:unity(default) orabgen— see asset bundle registries
Check asset bundle conversion status for all scenes in a world. Fetches scenes from the worlds-content-server, queries the asset bundle registry, and reports entity ID match, global status, and per-platform versions.
npx @dcl/opscli world-ab-status --world "dalkia.dcl.eth"
npx @dcl/opscli world-ab-status --world "dalkia.dcl.eth" --env zone
npx @dcl/opscli world-ab-status --world "dalkia.dcl.eth" --registry abgen
--worldWorld name (e.g."dalkia.dcl.eth")--envEnvironment:org(default),today, orzone--registryWhich registry to read:unity(default) orabgen— see asset bundle registries
Report how many jobs are pending per platform queue, and optionally where given entities sit in them.
npx @dcl/opscli ab-queue-status
npx @dcl/opscli ab-queue-status --env zone --registry abgen
npx @dcl/opscli ab-queue-status --cid "bafkrei..." --cid "bafkrei..."
--envEnvironment:org(default),today, orzone--registryWhich registry's queue to read:unity(default) orabgen--cidEntity ID to locate in each queue; repeatable. Positions are 1-indexed — the next entity to convert is#1
The Unity converters and the abgen generator publish to two separate registries:
| Registry | Base URL | Environments |
|---|---|---|
unity (default) |
https://asset-bundle-registry.decentraland.<env> |
org, today, zone |
abgen |
https://asset-bundle-registry-abgen.decentraland.<env> |
org, zone |
--registry abgen on today is rejected: abgen has no queue there and the hostname does not resolve.
The two count bundle versions in separate series — abgen is in the v1000s while the Unity
converters are in the v40s — so an abgen v1003 is not "newer" than a Unity v49.
Both registries still return a webgl platform key, empty or years stale. It is decommissioned and
the status commands do not report it.
npx @dcl/opscli queue-ab-conversion \
--pointer "0,0" \
--pointer="110,10" \
--cid "110,10" \
--token <ACCESS_TOKEN> \
[--platform mac] \
[--platform windows] \
[--ab-server https://ab-admin.decentraland.org] \
[--content-server https://peer.decentraland.org/content]
Note: WebGL has been decommissioned and is no longer a valid platform target. Valid platforms are
windows,macandabgen. If no platform is specified, it runs for the default platforms (windows,mac). More than one can be specified at a time.
abgenis not an OS: it routes the job to the abgen generator (the Rust asset-bundle pipeline), which converts every platform it supports in a single job. It is opt-in only — never included by default — and requires the target environment's ab-admin to have the abgen queue configured (currentlyorgandzone;todayhas no abgen and returns a 400).--prioritizeis accepted but abgen has a single queue with no priority lane, and--animation/--doISSare Unity-only and ignored by abgen.
For dev, use
--ab-server https://ab-admin.decentraland.zone.
npx @dcl/opscli queue-ab-conversion-snapshot \
--snapshot worlds \
[--platform mac] \
[--platform windows] \
--token <ACCESS_TOKEN> \
[--ab-server https://ab-admin.decentraland.org]
npx @dcl/opscli queue-ab-conversion-snapshot \
--snapshot worlds \
[--platform mac] \
[--platform windows] \
--token <ACCESS_TOKEN> \
[--ab-server https://ab-admin.decentraland.org]
[--world-name <world-name.dcl.eth>]
npx @dcl/opscli queue-ab-conversion-about \
--token <ACCESS_TOKEN> \
[--platform mac] \
[--platform windows] \
--about-url https://sdk-team-cdn.decentraland.org/ipfs/goerli-plaza-main/about \
[--ab-server https://ab-admin.decentraland.org]
npx @dcl/opscli check-ab-conversion \
--pointer "0,0" \
--pointer "110,10" \
[--cid "bafy....."]
Usage:
$ npx @dcl/opscli query-rollout --domain play.decentraland.zone --rolloutName _site
Current rollouts for domain "play.decentraland.zone" for this request
┌─────────────────────┬────────────┬─────────────────────────┬───────────────────────────────────┐
│ (index) │ percentage │ prefix │ version │
├─────────────────────┼────────────┼─────────────────────────┼───────────────────────────────────┤
│ _site │ 100 │ '@dcl/explorer-website' │ '0.0.1-1133229304.commit-901ee9a' │
│ @dcl/kernel │ 100 │ '@dcl/kernel' │ '1.0.0-1133249286.commit-a9ca05e' │
│ @dcl/unity-renderer │ 100 │ '@dcl/unity-renderer' │ '1.0.10553' │
└─────────────────────┴────────────┴─────────────────────────┴───────────────────────────────────┘
Raw data for rollout "_site" for domain "play.decentraland.zone"
┌─────────┬────────────┬───────────────────────────────────┐
│ (index) │ percentage │ version │
├─────────┼────────────┼───────────────────────────────────┤
│ 0 │ 100 │ '0.0.1-1133229304.commit-901ee9a' │
│ 1 │ 100 │ '0.0.1-1129066963.commit-a6c2178' │
│ 2 │ 100 │ '0.0.1-1125482159.commit-645a9e8' │
│ 3 │ 100 │ '0.0.1-1124920935.commit-57e48a2' │
│ 4 │ 100 │ '0.0.1-1121248349.commit-0568cf7' │
│ 5 │ 100 │ '0.0.1-1120296389.commit-cd95321' │
│ 6 │ 100 │ '0.0.1-1120045215.commit-7d17a4e' │
│ 7 │ 100 │ '0.0.1-1117962007.commit-cd75435' │
│ 8 │ 100 │ '0.0.1-1117258971.commit-bee96ab' │
│ 9 │ 100 │ '0.0.1-1114103774.commit-cfe9ba9' │
│ 10 │ 100 │ '0.0.1-1114086203.commit-cc86da6' │
│ 11 │ 100 │ '0.0.1-1105802712.commit-80b54a0' │
│ 12 │ 100 │ '0.0.1-1105772932.commit-ff46bfb' │
│ 13 │ 100 │ '0.0.1-1105284880.commit-32d26de' │
│ 14 │ 100 │ '0.0.1-1094578839.commit-e8461eb' │
│ 15 │ 100 │ '0.0.1-1092142520.commit-746716e' │
│ 16 │ 100 │ '0.0.1-1091984380.commit-77a1383' │
└─────────┴────────────┴───────────────────────────────────┘
Downloads a specific entity from a content server, as specified in https://adr.decentraland.org/adr/ADR-79
It creates an extra file named .metadata including the deployment metadata. Which in some cases (wearables) is not present as a file in the deployed entity.
In the specified folder, it will create one
$ npx @dcl/opscli download-entity \
--content-server https://play.decentraland.org/content \
--pointer=0,0 \
--pointer=urn:decentraland:off-chain:base-avatars:brown_pants \
--out ~/Downloads
Deploys an entity to a content server
--pointerPointers of the entities, can be used many times, e.g.--pointer=0,0 --pointer=0,1--entity-typeEntity type--private-keyorPRIVATE_KEYenv var--drydo everything except publishing the entity--folderto deploy, root level paths starting with.will be ignored, i.e. for .git folder. the.metadatafile is required to create the entity
$ npx @dcl/opscli deploy-entity \
--dry \
--content-server https://peer.decentraland.org/content \
--entity-type wearable \
--folder=urn:decentraland:off-chain:base-avatars:brown_pants \
--pointer=urn:decentraland:off-chain:base-avatars:brown_pants \
--private-key=bde921a4a4abc644cced18f632aed0b3d34b1b36bc16fd97721ade1b7178cfff
Usage:
$ npx @dcl/opscli query-rollout --domain play.decentraland.zone --rolloutName _site
Current rollouts for domain "play.decentraland.zone" for this request
┌─────────────────────┬────────────┬─────────────────────────┬───────────────────────────────────┐
│ (index) │ percentage │ prefix │ version │
├─────────────────────┼────────────┼─────────────────────────┼───────────────────────────────────┤
│ _site │ 100 │ '@dcl/explorer-website' │ '0.0.1-1133229304.commit-901ee9a' │
│ @dcl/kernel │ 100 │ '@dcl/kernel' │ '1.0.0-1133249286.commit-a9ca05e' │
│ @dcl/unity-renderer │ 100 │ '@dcl/unity-renderer' │ '1.0.10553' │
└─────────────────────┴────────────┴─────────────────────────┴───────────────────────────────────┘
Raw data for rollout "_site" for domain "play.decentraland.zone"
┌─────────┬────────────┬───────────────────────────────────┐
│ (index) │ percentage │ version │
├─────────┼────────────┼───────────────────────────────────┤
│ 0 │ 100 │ '0.0.1-1133229304.commit-901ee9a' │
│ 1 │ 100 │ '0.0.1-1129066963.commit-a6c2178' │
│ 2 │ 100 │ '0.0.1-1125482159.commit-645a9e8' │
│ 3 │ 100 │ '0.0.1-1124920935.commit-57e48a2' │
│ 4 │ 100 │ '0.0.1-1121248349.commit-0568cf7' │
│ 5 │ 100 │ '0.0.1-1120296389.commit-cd95321' │
│ 6 │ 100 │ '0.0.1-1120045215.commit-7d17a4e' │
│ 7 │ 100 │ '0.0.1-1117962007.commit-cd75435' │
│ 8 │ 100 │ '0.0.1-1117258971.commit-bee96ab' │
│ 9 │ 100 │ '0.0.1-1114103774.commit-cfe9ba9' │
│ 10 │ 100 │ '0.0.1-1114086203.commit-cc86da6' │
│ 11 │ 100 │ '0.0.1-1105802712.commit-80b54a0' │
│ 12 │ 100 │ '0.0.1-1105772932.commit-ff46bfb' │
│ 13 │ 100 │ '0.0.1-1105284880.commit-32d26de' │
│ 14 │ 100 │ '0.0.1-1094578839.commit-e8461eb' │
│ 15 │ 100 │ '0.0.1-1092142520.commit-746716e' │
│ 16 │ 100 │ '0.0.1-1091984380.commit-77a1383' │
└─────────┴────────────┴───────────────────────────────────┘