Self-host
Run the ABX resolver and effects worker on your own infrastructure.
ABX ships a resolver and an effects worker. Neither needs an onchain signing key.
Local data directory
ABX stores its SQLite projection, managed Arweave key, and content index together. It chooses one directory per command:
ABX_DATA_DIR, when set..abx-self-hostin the current directory, when present.- For read-only commands, the nearest
.abx-self-hostabove the current directory.
Writes use the first two rules only. If neither matches, they create .abx-self-host in the current
directory. Reads print the path when they find state in a parent directory.
cd my-project/contracts/src
abx status # reads my-project/.abx-self-host
abx add 0xSomeOtherContract # creates ./.abx-self-host hereResolver
Run it locally:
abx serveDeploy it to a supported host:
abx deploy-resolver --provider <fly|render|vps>The resolver replays events, stores project state, and watches for new blocks.
| Route | Result |
|---|---|
/t/{chainId}/{address}/{tokenId} | Token metadata |
/c/{chainId}/{address} | Collection metadata |
/api/project/{address} | Reconstructed project state |
/d/{chainId}/{address} | Project dashboard |
/health | Service health |
Set ABX_RESOLVER_ADMIN_TOKEN on the host to enable registration and reindexing. Keep the same value
locally as ABX_REMOTE_SELF_TOKEN. It controls the index and cannot sign transactions.
Check progress with abx status. The five states are queued, backfilling, live, stale, and
failed.
abx status
abx status 0xYourContractThe reference resolver assumes one trusted operator. Do not share it with unrelated customers without adding tenant isolation, quotas, and rate limits.
SQLite maintenance
The projection lives at .abx-self-host/index.db. Check and reclaim unused pages with:
abx vacuum
abx vacuum convert
abx vacuum incremental [--pages n]abx serve runs bounded incremental cleanup between watch cycles. abx vacuum convert is a manual,
one-time full rewrite for an older database with auto_vacuum: none. It may need twice the database's
disk size. Run it only when abx vacuum recommends it.
Effects worker
The effects worker uses Chromium to render images and traits for code projects.
abx effects
abx effects --once
abx render 0xYourContract
abx deploy-effects --resolver-url https://metadata.example.comSet ABX_EFFECTS_URL on the resolver for immediate notifications. The worker also sweeps for missed
work.
Separate services need shared storage such as S3/R2, IPFS, or Arweave. Filesystem storage works only when both processes share the disk. See Storage.
Move hosts
abx migrate 0xYourContract --from <old-resolver> --to <new-resolver>The migration copies offchain values, verifies hashes, and compares results. It does not change DNS or send a transaction.