# Operate a project

These commands run against a live project. Each command that writes to the chain uses a
[signing lane](../quickstart.md#who-signs) and accepts `--dry-run`.

## Ownership and payouts

- `abx transfer <address> --to 0x... [--token <id>]`: move a token to a new holder.
- `abx set-royalty <address> --bps <0-10000> [--receiver 0x...]`: change the royalty.
- `abx set-admin <address> --to 0x...`: hand over contract ownership.

## Metadata and hosting

- `abx set-token-uri <address> --uri <base>`: re-point token metadata to a resolver base. Use `--override <uri> --token <id>` to pin one token to a fixed locator.
- `abx set-contract-uri <address> --uri <base>`: re-point the collection metadata.
- `abx set-renderer <address>`: toggle URI resolution between on-chain and off-chain. `--off` clears to off-chain.
- `abx refresh <address> [--token <id>]`: ask marketplaces to re-index. ABX emits ERC-4906 on a metadata change; this nudges a marketplace to read it.

## Data plane

- `abx attach <address> <key> <uri>`: attach a named, typed file to the token's [data plane](../../protocol/data-plane.md). `--file <path>` stores small bytes on-chain instead of a URI. Use `--collection` or `--token <id>`.
- `abx set-field <address> --field <name> ...`: set an on-chain metadata field directly.

## Freezing

- `abx lock-field <address> --field <name>`: freeze a field permanently.
- `abx lock-uri <address>`: freeze the URI configuration permanently. With the fields also locked, the metadata cannot change.

## Moving and removing

- `abx migrate <address> --from <url> --to <url>`: move off-chain state to a new resolver, verifying parity first. See [Self-hosting](../self-hosting.md#migrating).
- `abx forget <address>`: drop the local registration and projection. The chain is untouched.
