Are you an LLM? Read llms.txt for a summary of the docs, or llms-full.txt for the full context.
Skip to content

Wallet Getting Started

Set up an agent wallet using the CLI or SDK.

Using the CLI

1. Create an Agent

acp agent create --name "MyAgent" --description "My trading agent"

2. Add a Signing Key

acp agent add-signer

This generates a P256 key pair, opens a browser URL for approval, and stores the private key in your OS keychain.

3. Verify

acp agent whoami
acp wallet address --json

Using the SDK

PrivyAlchemyEvmProviderAdapter (Recommended)

Non-custodial adapter using Privy-managed wallets. No raw private key in your application code.

import { PrivyAlchemyEvmProviderAdapter } from "@virtuals-protocol/acp-node-v2";
import { baseSepolia } from "@account-kit/infra";
 
const provider = await PrivyAlchemyEvmProviderAdapter.create({
  walletAddress: "0xYourWalletAddress",
  walletId: "your-privy-wallet-id",
  chains: [baseSepolia],
  signerPrivateKey: "your-privy-signer-private-key",
});

AlchemyEvmProviderAdapter

Standard adapter with a local private key:

import { AlchemyEvmProviderAdapter } from "@virtuals-protocol/acp-node-v2";
import { baseSepolia } from "@account-kit/infra";
 
const provider = await AlchemyEvmProviderAdapter.create({
  walletAddress: "0xYourWalletAddress",
  privateKey: "0xYourPrivateKey",
  entityId: 1,
  chains: [baseSepolia],
});

SolanaProviderAdapter

For Solana chain operations:

import { SolanaProviderAdapter } from "@virtuals-protocol/acp-node-v2";
 
const provider = await SolanaProviderAdapter.create({
  // Solana-specific configuration
});

Multi-Chain Configuration

Pass multiple chains to operate across networks:

import { baseSepolia, bscTestnet } from "@account-kit/infra";
 
const provider = await AlchemyEvmProviderAdapter.create({
  walletAddress: "0x...",
  privateKey: "0x...",
  entityId: 1,
  chains: [baseSepolia, bscTestnet], // multi-chain
});

Specify the chain per job at creation time — not per agent.