abx.
Reference

CLI

A compact index of ABX commands.

Install the CLI globally or run it through npx:

npm install --global @artblocks/abx-cli
abx help

Use abx <command> --help for every flag and example. This page is a map, not a second copy of the built-in help.

Start and inspect

CommandUse
demoDeploy, index, and serve a test 1/1
doctorCheck Node, RPC, factories, storage, skill version, and optional signing setup
capabilitiesPrint supported project types and irreversible choices
stateRead owner-controlled settings and parameter schemas
verifyCheck canonical deployment, byte commitments, and render freshness
tokenuri / contracturiRead and optionally fetch the committed metadata URI
tokensList token state from the contract
statusShow resolver indexing state
version / helpShow the installed version or command help

Deploy

CommandUse
deployDeploy a 1/1 image or single-work edition
deploy-seriesDeploy an image Series or multi-work image edition
deploy-codeDeploy a code Series or code edition
inspectCheck a script and recommend a deployment lane
scaffold solidityCreate a Foundry workspace for renderers and hooks
predictPredict a deterministic address from a pinned salt
add / indexRegister or index a deployed project
serveRun a local resolver
render / effectsRender once or run the effects worker

Sell and operate

CommandUse
mintMint the next token or copies of an edition ID
minter configureSet fixed-price sale terms
minter showRead sale terms
minter buyBuy through the shared fixed-price minter
mint-pageScaffold a small mint site
submit-appSubmit a deployed collection to the optional ABX App Store
pause / unpauseClose or open non-owner minting
set-minterSet the authorized minter
set-primary-payeeSet the primary-sale recipient
set-max-invocationsLower the ERC-721 supply cap or edition ID-space cap
set-max-supplyLower an edition ID's copy cap
set-royaltySet royalty receiver and basis points
set-royalty-capLower the project's royalty ceiling
set-transfer-validatorManage an enrolled transfer validator
transferTransfer a token or edition copies
set-adminTransfer project ownership

Metadata and code

CommandUse
set-field / attachSet metadata or attach a named artifact
set-token-uri / set-contract-uriChange URI pointers
set-rendererChoose onchain or resolver metadata
set-gatewayChange the HTTP gateway for IPFS or Arweave locators
lock-field / lock-uriPermanently freeze metadata settings
refresh / ping-uriAsk indexers to refresh metadata
previewRun a code project locally
configure-paramSet a governed parameter
set-schema / retire-paramDefine or permanently retire a parameter
set-param-hooks / lock-param-hooksSet or freeze parameter hooks
set-seed-sourceChange the source for future code-project seeds
set-dependency / remove-last-dependencyEdit code dependencies
set-dependency-registryChange the dependency registry
replace-scriptSafely replace an unlocked code project's onchain program
lock-dependencies / lock-scriptPermanently freeze code inputs

Storage and hosting

CommandUse
storage showShow the active byte-storage backend
storage upload / storage statusUpload bytes or check retrieval
storage balance / storage topupManage Arweave upload credit
storage backup-keyBack up the managed storage key
deploy-resolver / deploy-effectsDeploy self-hosted services
remoteInspect or test a conforming hosted service
auth login / auth logoutManage the first-party hosted-service key
feedbackPreview or file an ABX report; nothing sends without --yes
migrateCheck parity while moving between resolvers
forgetRemove a local or remote projection without touching the chain

Signing lanes

Every write uses one lane:

FlagBehavior
--signOpen a browser wallet
--sendSign with the configured hot key
--unsignedPrint an unsigned transaction
--dry-runSimulate without sending

Browser signing is the safest default for an interactive launch. Never paste a private key into a chat or prompt.

A deploy preview reports the wallet approvals it will need. A predicted address is stable only when you reuse the displayed salt with --salt.

Structured deploy plan (--dry-run --json)

Every deploy / deploy-series / deploy-code emit — preview and real send alike, across every product lane (1/1, editions, Series, code) and deploy-code --resume — carries a plan object alongside the existing fields, versioned with a schemaVersion so it can evolve without breaking a consumer that pins a version. It covers what the human preview already prints, structured for a script instead of scraped from prose: the wallet transaction/approval count and ordered signing stages (always ending with "deploy" itself when non-null), expected signer/owner/royalty/minter/ payee roles, custody and URI-resolution choices (including the on-chain renderer address and, for a single-file --onchain-image lane, that file's byte size/staged size/MIME type/keccak256), the mint plan, a cost estimate where one is genuinely computed, and every warning that run raised. A field a given lane has no answer for is reported as null, never silently absent.

{
  "command": "deploy-code",
  "address": null,
  "plan": {
    "schemaVersion": 2,
    "family": "code",
    "lane": "send",
    "transactions": {"approvals": 2, "legs": ["chunks", "onchain-uri", "mints", "deploy"]},
    "roles": {"signer": "0x...", "owner": "0x...", "royaltyReceiver": "0x...", "primaryPayee": null, "minter": null},
    "royalty": {"bps": 500, "capBps": 1000, "burnable": false},
    "custody": {"onChainUri": true, "imageOnChain": null, "backend": null, "tokenUriBase": null, "contractUriBase": null, "renderer": "0x...", "image": null},
    "mint": {"deferred": false, "count": 1, "amountPerId": null, "recipient": "0x..."},
    "estimate": {"ethApprox": "0.00058", "gasApprox": "546712"},
    "warnings": [],
    "surfaces": {"thumbnail": {"ok": false, "detail": "..."}, "traits": {"ok": true, "detail": "..."}, "postParams": {"ok": true, "detail": "..."}},
    "dependencies": {"count": 0, "registry": null},
    "resume": null
  }
}

custody.image is populated only on the single-file image lanes (deploy --onchain-image, with or without --copies) — a Series/Series-edition stages one file PER token, so no single-file shape fits and it stays null there even with imageOnChain: true.

A deploy-code setup (the script chunks, PostParam schemas, dependency declarations, on-chain-URI legs, and reserve mints) rides one combined transaction when it fits — the example above. A large on-chain script splits that setup into several gas-bounded transactions instead of failing against the eth_estimateGas allowance, ordered chunks, then config, then mints strictly last (chunk writes and config setters are idempotent, so --resume finishes an interruption at any split point; a mint is not, which is why it always rides last). transactions.approvals always reports the real transaction count for the whole plan — read it rather than assuming 2 — and legs still names the GROUPS riding it, not a literal per-transaction count.

This is deliberately NOT a rewrite of the human preview: the prose above it is unchanged, byte for byte, and is still the primary surface for a person reading a terminal. The plan object is an additional, machine-checkable projection of the same facts, kept in sync by a CI test that fails if a future change adds a value to the prose without adding it to the plan.

Agent skill and updates

abx skill install installs the version-matched agent skill. abx doctor reports drift between the skill and CLI.

The CLI may print a notice when a newer npm release exists. It never upgrades itself. Set ABX_NO_UPDATE_CHECK=1 to disable the check.

On this page