One wallet API for EVM & Solana

Wativev2.6.2

wative-core gives you HD wallets, byte-faithful signing, and one-call sends across EVM and Solana behind a single API — every key sealed in an encrypted workspace, so your code (and your coding agent) never touches a raw private key.

Built for on-chain market makers — fits any wallet flow, in Node or the browser.

Package

Add wative-core to your project (pnpm or npm).

pnpmpnpm add wative-core
npmnpm install wative-core
View on npm

GitHub

Clone the source to build or contribute.

git clone https://github.com/braady/wative-core.git
View on GitHub

For your AI coding agent

Paste this primer into Claude Code, Cursor, or Copilot and it builds on the real wative-core API from the first prompt. Run npx wative-core init-agent to install the same guidance — plus an ESLint rule and pre-write hooks — into your repo.

Prime your coding agent

Paste into Claude Code, Cursor, or Copilot — it learns wative-core and builds for your use case.

View llms.txt

New here? The 60-second quick start opens a workspace, derives a wallet, and prints your EVM and Solana address — then the API reference covers signing, transactions, and chain dialects.

A few lines to try

const ws = await Workspace.open({ path, password });const account = await ws.accounts.create("main", password, newMnemonic());await account.deriveWallets(1);const addr = account.wallets[0].evm;            // .svm for Solanaawait addr.transfer({ to, amount }).whenConfirmed();
const addr = account.wallets[0].evm;// EIP-712 — chainId is required, returns an object (not a bare string)const { signature, domainSeparator, structHash } =  addr.signTypedData(permit, 1);
const client = new ChainClient(Network.Ethereum);const balance = await client.readContract({  address: usdc,  abi: erc20,  functionName: "balanceOf",  args: [owner],}); // decoded bigint, keyless
const account = await ws.accounts.create("desk", password, newMnemonic());await account.deriveWallets(10_000); // one seed, 10k slotsconst [first] = account.wallets;first.evm; // EVM addressfirst.svm; // Solana address