# Quickstart

Deploy a live, self-hosted digital asset on testnet. The `abx` CLI is the toolkit's front door: you run
it directly, or a coding agent runs it (see [Agent + skill](agent-and-skill.md)).

## Prerequisites

- **Node 22.5 or newer** (the toolkit uses the built-in `node:sqlite`).
- A **browser wallet** with Base Sepolia test ETH. Base Sepolia is the default chain. Get test ETH from a faucet.
- Optionally, your own **RPC endpoint**. A public one is used by default.

## 1. Check your environment

```bash
npx abx doctor
```

`doctor` checks your RPC connection, the canonical factory, and your storage configuration. Fix anything
it flags before deploying.

## 2. Run the demo

```bash
npx abx demo --sign
```

`demo` deploys a token to Base Sepolia, indexes it from the chain, and serves it locally. The `--sign`
flag opens a browser wallet to sign the transaction, so no private key is stored anywhere. Open
**http://localhost:8787** and click **Re-index from chain**: the resolver rebuilds the token's state
from the event logs.

## 3. Deploy something real

A digital asset can be a single piece, a collection, or a generative program. These are variations of
one flow along the [on-chain spectrum](../protocol/index.md). The
[Deploy a digital asset](guides/deploy-a-digital-asset.md) guide covers all three. The entry points are:

```bash
npx abx deploy --sign                      # a single asset
npx abx deploy-series --dir ./art --sign   # a collection from a folder
npx abx deploy-code --sign                 # a generative or code project
```

Then serve and inspect:

```bash
npx abx serve      # the resolver: re-indexes from the chain and serves metadata and images
npx abx state      # a snapshot of on-chain state: owner, supply, minter, payee, royalty, renderer
```

## Who signs

Every command that writes to the chain runs in one of three signing lanes:

- **`--sign`**: sign in a browser wallet. Recommended to start; nothing is stored.
- **`--send`**: sign and broadcast with a hot key from the environment.
- **`--unsigned`**: print the raw transaction to sign elsewhere.

Add `--dry-run` to any write command to preview it without sending.

## Read next

- [Agent + skill](agent-and-skill.md): let an agent run all of this.
- [The Protocol](../protocol/index.md): the model behind these commands.
- [Storage](guides/storage.md): choose where your bytes live before a real launch.
- [CLI reference](../reference/cli.md): every command, grouped.
