Use external wallet mode when the agent should be tied to an address you control. Abstraxn stores the address on the agent record but does not connect wallet providers, provision a server wallet, or return an accessKey.
The default Agent Kit mode is server (managed Abstraxn wallet). This page covers external only. For Abstraxn server wallet / server-signer flows see SDK quickstart.

When to use external wallet

Prerequisites

  • Node.js 18+
  • @abstraxn/agent-kit v1.0.3+
  • Abstraxn API key (x-api-key)
  • A wallet stack in your app that can expose evmAddress / solanaAddress (and sign txs if you register ERC-8004 identity)

Wallet connection in your app (optional)

Agent Kit only needs the address strings at createAgent() time. How users connect a wallet is entirely up to you — pick any provider below, read their guide, then pass the connected address into Agent Kit.
These links are optional. Abstraxn does not require a specific provider. After the user connects, call createAgent({ evmAddress, … }) (or solanaAddress). For ERC-8004, use the same wallet to sign — see On-chain identity.

Configure the client

getWalletMode() returns 'external' when configured. You can also keep wallet: 'server' on the client and pass wallet: 'external' on a single createAgent() call.

Create an agent

Response shape

Do not expect or store an accessKey for external agents. All on-chain signing is your responsibility.

Validation rules

  • At least one of evmAddress or solanaAddress is required.
  • EVM addresses are normalized to 0x + 40 hex characters (lowercase).
  • createAgentDirect() is equivalent: creates the agent with addresses only (no server-signer).

Per-call override

What external wallet does not do

  • Does not call Abstraxn server-signer or managed wallet provisioning
  • Does not return accessKey or organizationId
  • getServerSigner() is for server wallet integrations only
  • registerAgentIdentity() requires server wallet credentials — use on-chain identity (external) instead
  • MCP transfer and autonomous x402 signing require a server wallet accessKey on your backend

FAQ

Can I use MetaMask instead of a private key in signTransaction? Yes. See On-chain identity (external) for prepare/confirm with MetaMask or WalletConnect. Can I register with Solana only? Yes — pass solanaAddress on createAgent (with or without evmAddress). ERC-8004 registry examples in the SDK are EVM-focused; confirm Solana registry support with your Abstraxn deployment if needed. Why does prepare fail for my chainId? The Agent Kit backend must have IdentityRegistry configured for that chainId. Use a supported chain or contact support.

Next steps

On-chain identity

Register ERC-8004 with your own signer.

API reference

Client config, methods, and types.

SDK quickstart (server wallet)

Default managed wallet + accessKey flow.

ERC-8004 identity

Supported chainIds and registry addresses.