ABX
Use ABX

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:

  1. ABX_DATA_DIR, when set.
  2. .abx-self-host in the current directory, when present.
  3. For read-only commands, the nearest .abx-self-host above 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 here

Resolver

Run it locally:

abx serve

Deploy it to a supported host:

abx deploy-resolver --provider <fly|render|vps>

The resolver replays events, stores project state, and watches for new blocks.

RouteResult
/t/{chainId}/{address}/{tokenId}Token metadata
/c/{chainId}/{address}Collection metadata
/api/project/{address}Reconstructed project state
/d/{chainId}/{address}Project dashboard
/healthService 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 0xYourContract

The 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.com

Set 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.

On this page