ABX
How ABX works

Effects

Derived output produced from ABX events and token state.

An effect is an offchain process that watches project events and writes derived output. Rendering a code project to a still image is the reference effect. Effects never hold source files.

Addressing

An effect declares a key, triggers, outputs, and an environment. ABX hashes the content, canonical token data, and environment ID into inputsHash.

{chainId}/{address}/{tokenId}/{effectKey}/{inputsHash}/{outputKey}

The address makes deterministic work idempotent. A restarted worker can ask storage what is missing.

Triggers

ChangeEvent
MintTransfer from zero
Parameter valueTokenParamConfigured or ContractParamConfigured
Parameter schemaParamSchemaConfigured
Owner-sensitive outputTransfer
Manual renderOperator request

Metadata binding

render.image fills image only when the project did not set one. render.traits merges into attributes, with onchain traits winning duplicate names. Other outputs appear in the artifact list.

A worker may post a hash or locator back to an authorized parameter and lock it later. Write-back is optional.

The reference worker loads the live document in Chromium, waits for abx.done() or a configured delay, and captures the image and traits. Run it with abx effects, abx render, or abx deploy-effects.

Renderer capabilities are deployment properties, not protocol guarantees. A service may advertise render.constraints.hardwareAcceleration and render.constraints.maxCaptureDelayMs in its service descriptor. Inspect them with abx remote <name|url> before relying on a managed renderer.

The managed ABX renderer is CPU/headless and does not provide GPU/WebGL hardware acceleration. The default abx deploy-effects Playwright container also does not guarantee a GPU merely because it is self-hosted. Projects that require hardware acceleration need an effects worker deployed on tested, GPU-capable infrastructure.

For software-compatible projects, call abx.done() only after the intended frame and traits are ready. A bounded render.captureDelay can cover slow initialization, but cannot make unavailable GPU features available. A current artifact confirms that bytes were published for the current state; it does not prove the image is visually correct.

Checking currency directly

abx artifacts <address> --token <id> reads a token's artifact set without fetching and parsing the whole served document. It reports the same entries the metadata would serve, plus every registered effect row, current and stale, labeled against the token's active inputsHash. A stale row (a parameter changed since it rendered) is silently absent from the served artifacts list, but stays visible here so a param change that re-addressed a render is diagnosable rather than invisible.

--remote <name|url> reads the hosted resolver instead of this node's local projection. The report identifies which service answered.

On this page