<!-- https://zunderlabs.com/docs/start/go-live · Markdown version of the page -->

# Activate mainnet

Confirm the account, protect the API wallet, activate your plan and explicitly start Guard.

## 1. Choose the host and prepare your bot

Run Guard beside your bot. The [setup wizard](https://zunderlabs.com/connect#guard) generates a mainnet command for [macOS](https://zunderlabs.com/docs/deploy/macos), [Windows](https://zunderlabs.com/docs/deploy/windows), [Linux or SSH](https://zunderlabs.com/docs/deploy/ssh), or [Docker on native Linux](https://zunderlabs.com/docs/deploy/docker). These managed services provide an encrypted credential at every restart.

Keep the bot stopped during installation and network changes. For a rehearsal, choose paper and follow the [paper quickstart](https://zunderlabs.com/docs/start/quickstart). Inspect allowed and refused decisions and check your limits and kill switch. Testnet lets you check exchange execution and resting stops with test funds.

AWS launches in **paper mode**. Open the stack's `ConsoleShell`, run `Verify`, and use `PairPaper` if rehearsing. For mainnet, follow the stack's `NextStep` instructions privately on the host. Stack creation proves bootstrap health, not mainnet activation or a connected bot.

## 2. Confirm the mainnet account and limits

The command names `mainnet`. On the host, confirm the public trading account separately, set its trading-equity cap and provide the API wallet key through the hidden prompt. Use an API wallet authorized for that mainnet account, with no withdrawal authority. A testnet wallet is a separate authorization.

The installer verifies the release and prepares its protected service. Follow the activation instructions for your platform: macOS and Windows print management commands; Docker asks for explicit local journal/start confirmations during setup. A fresh Linux setup prints journal/start commands; reconfiguring an existing Linux mainnet installation with a journal can restart its service. Keep bots stopped, and keep the installation’s executable, home and binding paths together.

For an existing installation, preserve configuration and journals. If a paper-to-mainnet reconfiguration explicitly replaces client pairings, reconnect with the newly issued client key. Do not use forced initialization as an upgrade.

## 3. Activate your plan

### Pay per order

Guard charges a **0.02% builder fee on the value of mainnet orders it sends**. Approve it once from the main wallet on the [fee approval page](https://zunderlabs.com/approve). Check the network, builder and rate before signing. A testnet approval does not authorize a mainnet fee. Paper and testnet remain free.

Without a valid flat licence or the required approval, Guard refuses new mainnet entries; closing orders remain available.

### Pro or Fund

[Buy for your public account addresses](https://zunderlabs.com/licence), then [activate the delivered licence](https://zunderlabs.com/docs/start/licence) in the final machine-service installation. The licence changes Guard's fee, not its network or risk limits. Venue fees still apply.

## 4. Admit the journal and start explicitly

If this mainnet account has no journal yet, use the installer’s printed journal command or its explicit journal prompt with the account confirmation and your review note. This establishes the initial risk state. Preserve an existing journal and any halt it contains: installation, renewal and restart never justify deleting or resetting it.

Use the printed Start command or confirm the Docker installer’s `START` and `ACTIVATE` prompts when you are ready. Choose the supported startup behavior deliberately. Installation does not start your bot or submit an order.

## 5. Verify readiness before connecting the bot

On Guard's host, inspect:

```sh
curl -fsS http://127.0.0.1:8547/healthz
curl -fsS http://127.0.0.1:8547/guard/status
```

Confirm the mainnet account, equity cap, risk state, current synchronization, journal readiness and expected fee mode. For Pro or Fund, `"mode":"fee_free"` inside `fee` confirms licence activation. For pay per order, require `fee.approval.state` to be `approved`. A payment receipt, registered service or running process alone does not prove this.

Give the bot its **Guard client key**, never the API wallet key, and point it at Guard's local endpoint. Start the bot only after these checks. Guard never promotes paper or testnet to mainnet automatically and never clears a risk halt on restart.

[Licence activation](https://zunderlabs.com/docs/start/licence) · [Bot integrations](https://zunderlabs.com/docs/integrations) · [Return to setup](https://zunderlabs.com/connect#guard)
