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/sdk installed

Deploy via Dashboard

1

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.

2

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 caseRecommended chain
API payments / HTTP 402Base
Perps trading (GMX)Arbitrum
Perps trading (Ostium)Base
General DeFiArbitrum or Base
TestingBase Sepolia

You can deploy additional vaults on other chains later. The dashboard manages all of them from a single workspace.

3

Configure Vault Settings

Review the deployment configuration:

  • Chain: your selected chain and its factory address
  • Estimated gas cost: shown based on current network conditions
4

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.

5

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:

ChainUSDC Address
Base0x833589fCD6eDb6E08f4c7C32D4f71b54bdA02913
Arbitrum One0xaf88d065e77c8cC2239327C5EDb3A432268e5831
Base Sepolia0x036CbD53842c5426634e7929541eC2318f3dCF7e
6

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 bot
  • maxBotDailyLimit — the highest daily spending limit the operator can assign
  • maxOperatorBots — 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