Skip to main content

Run it before you install it

The fastest way to see the shape is the tour — the real router, manifest and unified receive against in-memory stub adapters. No node, no credentials, no network, no protocol SDKs.
It prints the capability manifest, routes three destinations, builds a BIP321 URI, and collapses four balances into lite mode. Swapping the stub adapters for createWdkRegistry is the only change between that and a wallet that moves funds.

Installation

Requirements

  • Node.js 20 or higher
  • TypeScript 5.x recommended
  • ESM only

Protocol SDKs are optional peer dependencies

The only hard dependencies are the pure-crypto primitives (@noble/*, @scure/*). Every protocol SDK is an optional peerDependency — install only the ones whose adapters you use. Importing the root barrel pulls in no protocol SDK, and each adapter lazy-loads its SDK inside connect(), so a missing peer only errors when you actually load that adapter’s subpath. This is what lets an MV3 extension host import the engine without carrying every L2 SDK.
Migration (≤ beta.53 → beta.54): protocol SDKs moved from dependencies to optional peerDependencies. They are no longer installed transitively — add the packages for the adapters you use to your own package.json.

Your first wallet

Inject your platform

The engine never touches platform APIs. Each host injects storage, a CSPRNG and a clock once at startup, which is what lets the same engine run unchanged on React Native (SecureStore/MMKV), the extension (chrome.storage) and Node.

Next

Core Concepts

How routing, unified receive and disclosure actually work.

Add a Protocol

Implement the contract, add one manifest entry, done.