Deploy a Vault
Step-by-step guide to deploying an Axon vault, depositing USDC, and configuring an operator.
Deploy a Vault
An Axon vault is a non-custodial smart contract that holds your funds and executes payments on behalf of your bots. Each vault is deployed via the AxonVaultFactory on your chosen chain. You control it with your owner wallet; Axon cannot access your funds.
This guide covers deployment through both the dashboard and the SDK.
Prerequisites
- A wallet with a small amount of ETH for gas on your target chain (Base, Arbitrum, or Base Sepolia for testnet)
- USDC to deposit after deployment
- For SDK deployment: Node.js 20+ and
@axonfi/sdkinstalled
Deploy via Dashboard
Connect Your Wallet
Go to app.axonfi.xyz and connect your wallet using RainbowKit. This wallet address becomes the vault owner — the only address that can withdraw funds, unpause the vault, and transfer ownership. Use a hardware wallet or multisig for production vaults.
Choose a Chain
Select the chain where your bots will operate. In v1, bots can only pay recipients on the same chain as their vault.
| Use case | Recommended chain |
|---|---|
| API payments / HTTP 402 | Base |
| Perps trading (GMX) | Arbitrum |
| Perps trading (Ostium) | Base |
| General DeFi | Arbitrum or Base |
| Testing | Base Sepolia |
You can deploy additional vaults on other chains later. The dashboard manages all of them from a single workspace.
Configure Vault Settings
Review the deployment configuration:
- Chain: your selected chain and its factory address
- Estimated gas cost: shown based on current network conditions
Deploy
Confirm the transaction in your wallet. The factory deploys your vault and emits a VaultDeployed event. The
dashboard will show your new vault address once the transaction is confirmed.
Deposit USDC
Navigate to your vault's overview page and click Deposit. Enter the USDC amount and confirm the ERC-20 approval and transfer transactions.
USDC addresses by chain:
| Chain | USDC Address |
|---|---|
| Base | 0x833589fCD6eDb6E08f4c7C32D4f71b54bdA02913 |
| Arbitrum One | 0xaf88d065e77c8cC2239327C5EDb3A432268e5831 |
| Base Sepolia | 0x036CbD53842c5426634e7929541eC2318f3dCF7e |
Set an Operator (Optional)
An operator is a hot wallet that can manage bots on your behalf without needing your owner key. Go to Settings > Operator and enter the operator address.
Before saving, set operator ceilings to bound the operator's authority:
maxPerTxAmount— the highest per-transaction limit the operator can assign to any botmaxBotDailyLimit— the highest daily spending limit the operator can assignmaxOperatorBots— how many bots the operator can register (default: 0, meaning none until you set it)vaultDailyAggregate— the total daily outflow across all operator-managed bots
The dashboard displays a Maximum Operator Drain warning showing the worst-case daily exposure if the operator wallet is compromised.
The operator cannot be the same address as the owner. This is enforced by the contract.
Deploy via SDK
You can also deploy a vault programmatically:
import { deployVault, createAxonPublicClient, createAxonWalletClient, Chain, USDC } from '@axonfi/sdk';
const publicClient = createAxonPublicClient(Chain.BaseSepolia, 'https://sepolia.base.org');
const walletClient = createAxonWalletClient('0xOWNER_PRIVATE_KEY', Chain.BaseSepolia);
const vaultAddress = await deployVault(walletClient, publicClient, '0xFACTORY_ADDRESS');
console.log('Vault deployed:', vaultAddress);Deposit USDC
Deposits are direct on-chain calls to the vault contract, not through the SDK client. Use viem or wagmi to call vault.deposit(token, amount, ref):
import { parseUnits } from 'viem';
import { USDC, AxonVaultAbi } from '@axonfi/sdk';
await walletClient.writeContract({
address: vaultAddress,
abi: AxonVaultAbi,
functionName: 'deposit',
args: [USDC[84532], parseUnits('1000', 6), '0x0000000000000000000000000000000000000000000000000000000000000000'],
});Verify On-Chain
After deployment, confirm your vault exists on the block explorer:
- Base:
https://basescan.org/address/YOUR_VAULT_ADDRESS - Arbitrum:
https://arbiscan.io/address/YOUR_VAULT_ADDRESS - Base Sepolia:
https://sepolia.basescan.org/address/YOUR_VAULT_ADDRESS
Check that the contract is verified (Axon factory contracts are verified at deploy time) and that the owner matches your wallet address.
Next Steps
- Register a Bot — whitelist your first bot on the vault
- First Payment — make an end-to-end payment
- Key Concepts — understand operators, ceilings, and policies