BSV application infrastructure in TypeScript
Reference packages, protocol specs, infrastructure contracts, and conformance vectors for building wallet-aware BSV applications. Use it as an app developer, a wallet implementer, or the baseline another language implementation must match.
Choose your entry pointts-stack
This repository is the TypeScript reference stack for BSV application development. It contains:
- Packages:
@bsv/sdk, wallet tooling, overlays, messaging, middleware, and helper APIs. - Infrastructure specs: deployable services such as Wallet Infra, Message Box, overlays, UHRP, WAB, and Chaintracks.
- Protocol references: human-readable pages backed by JSON Schema, OpenAPI, and AsyncAPI artifacts in
specs/. - Conformance assets: vectors in
conformance/vectors/that other implementations can run to prove compatibility.
Start Here
| You are | Use first | Why |
|---|---|---|
| Web application developer | @bsv/simple/browser | Connects to a local BRC-100 wallet without putting keys in app code. |
| Developer coming from another chain | @bsv/wallet-helper | Builds explicit transactions with a fluent builder while the wallet keeps keys and signing. |
| Backend or automation developer | @bsv/simple/server | Runs a self-custodial server wallet from a private key and storage endpoint. |
| Wallet developer | @bsv/wallet-toolbox | Reference components for building a BRC-100 wallet. |
| Protocol engineer | @bsv/sdk | Core crypto, scripts, transactions, BEEF, BUMP, and wallet interface types. |
| Technical evaluator | Architecture and Conformance | Shows boundaries, current coverage, and what other implementations must match. |
Minimal App Example
typescript
import { createWallet } from '@bsv/simple/browser'
const wallet = await createWallet()
const recipientIdentityKey = '025706528f0f6894b2ba505007267ccff1133e004452a1f6b72ac716f246216366'
const result = await wallet.pay({
to: recipientIdentityKey,
satoshis: 1000
})
console.log(result.txid)For raw BRC-100 work, use WalletClient from @bsv/sdk and call methods such as createAction, signAction, and listOutputs directly.
Package Domains
| Domain | Packages | What they cover |
|---|---|---|
| SDK | @bsv/sdk | Crypto, scripts, transactions, BEEF/BUMP, BRC-100 types, wallet substrates. |
| Wallet | @bsv/wallet-toolbox, BTMS, permission module, wallet relay | Wallet implementation, storage, signing, permissions, token flows, mobile pairing. |
| Overlays | @bsv/overlay, @bsv/overlay-express, topics, discovery, GASP | Shared on-chain context, topic validation, lookup services, sync. |
| Messaging | Message Box, Authsocket, Paymail | Store-and-forward messages, live authenticated channels, identity-based addressing. |
| Middleware | Auth, HTTP 402, payment express | Express middleware for identity and payment-gated APIs. |
| Helpers | @bsv/simple, @bsv/wallet-helper, templates, DID, amount utilities | Higher-level developer ergonomics, including wallet-aware app helpers and fluent transaction building. |
Important References
- BRC-100 Wallet Interface - linkable method reference with request and response shapes.
- Choose Your Stack - which package to start with for each use case.
- Stack Layers - how packages and infrastructure fit together.
- Infrastructure - service status and deployed endpoint names.
- Vector Catalog - current conformance coverage and file paths.
Source Discipline
Examples in this docs tree should be backed by one of:
packages/*/*/docs/package documentation.packages/sdk/src/wallet/Wallet.interfaces.tsandspecs/sdk/brc-100-wallet.json.packages/wallet/wallet-toolbox-examples/src/for wallet action flows.conformance/META.jsonandconformance/vectors/for compatibility claims.bsva-infra-fluxdeployment manifests for public infrastructure endpoint names.