Higher-layer packages for key management, balance tracking, transaction signing, token operations, and mobile wallet pairing. These packages provide persistent state, BRC-100 wallet implementation, and framework-agnostic permission systems.
The wallet domain builds on top of @bsv/sdk. If you only need transaction building without persistent state or key management, use the SDK directly. If you need full wallet functionality with storage, key derivation, background monitoring, or token support, use packages from this domain.
| Package | Purpose |
|---|---|
| @bsv/wallet-toolbox | Node BRC-100 wallet implementation with SQLite/MySQL storage, background monitoring, Shamir key sharing, and permission management |
| @bsv/wallet-toolbox-client | Browser-safe wallet, IndexedDB, and remote storage distribution |
| @bsv/wallet-toolbox-mobile | React Native/mobile-safe wallet and remote storage distribution |
| @bsv/btms | UTXO-based token issuance, transfer, burning, and ownership proof validation |
| @bsv/btms-permission-module | Framework-agnostic BRC-98/99 permission hooks for BTMS token spending with custom UI callback |
| @bsv/ecpm-permission-module | BRC-98 semantic module for applying and removing wallet-derived scalars from secp256k1 points |
| @bsv/wallet-relay | Mobile-to-desktop wallet pairing via QR codes and encrypted WebSocket relay with React components |
Use @bsv/wallet-toolbox to create a full wallet with persistent storage and signing, or integrate with user-installed wallets via the BRC-100 interface.
Use @bsv/wallet-toolbox for local wallet, or @bsv/wallet-relay for mobile wallet pairing via QR code.
Use @bsv/btms for token operations (issue, send, accept, burn). Integrate with @bsv/wallet-toolbox for wallet signing and @bsv/btms-permission-module for permission control.
Use @bsv/wallet-toolbox as reference implementation. It demonstrates BRC-100 compliance, storage abstraction, key management, and background monitoring patterns.
Use @bsv/wallet-relay for QR pairing. Desktop shows QR, mobile scans, then mobile wallet signs and relays responses back encrypted.
Use @bsv/btms-permission-module with your custom permission handler (modal, alert, web component, etc.).
Use @bsv/ecpm-permission-module to install the
p ecpm scheme. It reuses getPublicKey, so applications can apply or remove
a BRC-42/43-derived scalar from a named point without extending the BRC-100
wallet interface or exposing the scalar.
{txid}.{vout}). Each token is a separate on-chain output with metadata.| Package | Node.js | Browser | Mobile |
|---|---|---|---|
| wallet-toolbox | SQLite, MySQL | — | — |
| wallet-toolbox-client | Build tooling | IndexedDB, Remote | Hybrid/WebView dependent |
| wallet-toolbox-mobile | Build tooling | — | Remote |
| btms | ✓ | ✓ | ✓ |
| btms-permission-module | ✓ | ✓ | ✓ |
| ecpm-permission-module | ✓ | ✓ | Host-dependent |
| wallet-relay | Server | React components | Supported via relay |
Wallet recovery needs both key material and records/derivation metadata. Browser storage, remote replication and key-manager snapshots each cover only part of that requirement. Use the recovery guide, BRC-38/39 API guide and recovery drill before shipping a wallet.