Vultisig SDK
TypeScript SDK for Vultisig MPC wallet operations. See the router skill for an overview of MPC benefits and to choose between CLI and SDK.
Installation
npm install @vultisig/sdk
# or
yarn add @vultisig/sdk
Requirements:
- Node.js 20+
- TypeScript (recommended)
- Platforms: Node.js, Browser (with WASM), React Native, Electron
Quick Start
import { Vultisig, Chain } from '@vultisig/sdk'
// Initialize SDK
const sdk = new Vultisig({
onPasswordRequired: async (vaultId, vaultName) => {
return process.env.VAULT_PASSWORD || ''
},
passwordCache: { defaultTTL: 300000 } // 5 minutes
})
await sdk.initialize()
// Create a FastVault
const vaultId = await sdk.createFastVault({
name: 'agent-wallet',
email: 'agent@example.com',
password: 'SecurePassword123!'
})
// Verify with email code
const vault = await sdk.verifyVault(vaultId, 'verification-code')
// Get address
const address = await vault.address(Chain.Ethereum)
console.log('ETH address:', address)
// Check balance
const balance = await vault.balance(Chain.Ethereum)
console.log(`Balance: ${balance.amount} ${balance.symbol}`)
// Clean up
sdk.dispose()
Vault Types
| Type | Threshold | Signing | Best For |
|---|---|---|---|
| FastVault | 2-of-2 (device + server) | Instant | AI agents, automation |
| SecureVault | N-of-M (configurable) | Multi-device coordination | Teams, high security |
For AI agents, FastVault is recommended - instant signing without coordination.
Core Classes
Vultisig (Main Entry Point)
const sdk = new Vultisig({
storage?: Storage, // Default: FileStorage (Node) / BrowserStorage
defaultChains?: Chain[], // Chains for new vaults
defaultCurrency?: string, // Fiat currency (default: 'USD')
onPasswordRequired?: (id, name) => Promise<string>,
passwordCache?: { defaultTTL: number }
})
// Lifecycle
await sdk.initialize()
sdk.dispose()
// Vault creation
const vaultId = await sdk.createFastVault({ name, email, password })
const vault = await sdk.verifyVault(vaultId, code)
const { vault } = await sdk.createSecureVault({ name, devices, threshold })
// Vault management
const vaults = await sdk.listVaults()
const vault = await sdk.getActiveVault()
await sdk.setActiveVault(vault)
await sdk.deleteVault(vault)
// Import/Export
const vault = await sdk.importVault(vultContent, password)
const isEncrypted = sdk.isVaultEncrypted(vultContent)
// Seedphrase
await sdk.validateSeedphrase(mnemonic)
await sdk.discoverChainsFromSeedphrase(mnemonic, chains?, onProgress?)
await sdk.createFastVaultFromSeedphrase({ mnemonic, name, email, password })
VaultBase (Shared Vault Methods)
// Properties
vault.id: string
vault.name: string
vault.type: 'fast' | 'secure'
vault.isEncrypted: boolean
// Addresses
const address = await vault.address(Chain.Bitcoin)
const addresses = await vault.addresses([Chain.Bitcoin, Chain.Ethereum])
// Balances
const balance = await vault.balance(Chain.Ethereum)
const balances = await vault.balances() // All chains
await vault.updateBalance(Chain.Ethereum) // Force refresh
// Transactions
const payload = await vault.prepareSendTx({ coin, receiver, amount })
const signature = await vault.sign(payload)
const txHash = await vault.broadcastTx({ chain, keysignPayload: payload, signature })
// Swaps
const quote = await vault.getSwapQuote({ fromCoin, toCoin, amount })
const { keysignPayload } = await vault.prepareSwapTx({ fromCoin, toCoin, amount, swapQuote })
// Management
await vault.addChain(Chain.Solana)
await vault.removeChain(Chain.Litecoin)
await vault.rename('New Name')
const { filename, data } = await vault.export(password)
Chain Enum
import { Chain } from '@vultisig/sdk'
// EVM
Chain.Ethereum, Chain.Polygon, Chain.BSC, Chain.Arbitrum, Chain.Optimism,
Chain.Base, Chain.Avalanche, Chain.Blast, Chain.CronosChain, Chain.ZkSync,
Chain.Hyperliquid, Chain.Mantle, Chain.Sei
// UTXO
Chain.Bitcoin, Chain.Litecoin, Chain.Dogecoin, Chain.BitcoinCash,
Chain.Dash, Chain.Zcash
// Cosmos
Chain.Cosmos, Chain.THORChain, Chain.MayaChain, Chain.Osmosis, Chain.Dydx,
Chain.Kujira, Chain.Terra, Chain.TerraClassic, Chain.Noble, Chain.Akash
// Other
Chain.Solana, Chain.Sui, Chain.Polkadot, Chain.Ton, Chain.Ripple,
Chain.Tron, Chain.Cardano
All Capabilities
For full details and code examples, see the SDK Users Guide.
| Capability | Description | Guide Section |
|---|---|---|
| Vault Creation | FastVault (2-of-2) and SecureVault (N-of-M) | Vault Management |
| Seedphrase Import | Validate mnemonics, discover chains, create vaults from seedphrase | Seedphrase |
| Send Transactions | Prepare, sign, broadcast for all 36+ chains | Essential Operations |
| Token Swaps | Cross-chain (THORChain), same-chain (1inch, LiFi), ERC-20 approval handling | Token Swaps |
| Sign Arbitrary Bytes | Custom tx construction with signBytes and broadcastRawTx | Signing |
| Cosmos Signing | SignAmino and SignDirect for Cosmos dApps | Cosmos Signing |
| Gas Estimation | Get gas info per chain via vault.gas(chain) | Gas Estimation |
| Token Discovery | Look up known tokens, discover at address, resolve metadata | Token Registry |
| Price Feeds | CoinGecko token prices via vault.getPrice() | Price Feeds |
| Security Scanning | Site scanning, transaction validation, transaction simulation | Security |
| Fiat On-Ramp | Buy crypto via Banxa integration | Fiat On-Ramp |
| Portfolio Value | Fiat valuations across all chains | Portfolio |
| Password Management | Callbacks, caching, manual lock/unlock | Password Management |
| Event System | Reactive updates for balances, signing, chains, tokens | Events |
| Caching | Address, balance, password, portfolio caching with configurable TTLs | Caching |
| Error Handling | Typed VaultError with error codes (PasswordRequired, InsufficientBalance, etc.) | Quick Reference |
| Stateless Mode | MemoryStorage for serverless, testing, one-off operations | Stateless Usage |
| Multi-Platform | Node.js, Browser (WASM), React Native, Electron | Platform Notes |
| Storage Options | FileStorage, BrowserStorage, MemoryStorage, or custom | Configuration |
Supported Chains
36+ blockchains:
- EVM (13): Ethereum, Polygon, BSC, Arbitrum, Optimism, Base, Avalanche, Blast, Cronos, ZkSync, Hyperliquid, Mantle, Sei
- UTXO (6): Bitcoin, Litecoin, Dogecoin, Bitcoin Cash, Dash, Zcash
- Cosmos (10): Cosmos, THORChain, MayaChain, Osmosis, Dydx, Kujira, Terra, Terra Classic, Noble, Akash
- Other (7): Solana, Sui, Polkadot, TON, Ripple, Tron, Cardano
Resources
- SDK Users Guide - Complete documentation with examples
- GitHub Repository
