Secure identity + payments wallet for the BSV ecosystem, built with Tauri and React. This project is open for contributors who want to improve the wallet experience, security, and developer tooling.
Peacock is named for the handicap principle: a signal is credible when it is costly to fake. The product applies that idea to verified identity, explicit permission grants, and payments users can review before committing. The feather-and-eye mark represents visible, inspectable trust rather than decoration alone.
Website and signed downloads · Latest release
- Offer a trustworthy BSV wallet that speaks modern protocols (BRC-100, Wallet Wire) and handles identity, permissions, and simple recovery by design.
- Provide an approachable codebase for contributors: Tauri for native, Vite + React + MUI on the frontend, Rust for the glue.
- Make it easy for app developers to integrate—JSON API over TCP/3321 today, Wallet Wire on TCP/3301 coming up.
- Prereqs: Node 18+, Rust toolchain, Tauri CLI (
npm i -g @tauri-apps/cliif needed). - Install:
npm i - Run dev:
npm run tauri dev - Log in: Generate or paste your private key or seed phrase. Simple as that.
- Build prod:
npm run build(frontend) ornpm run tauri build(native bundle).
If you hit macOS build issues for Rollup, install npm i -g @rollup/rollup-darwin-x64.
src/— React app (routes underpages, shared UI undercomponents, theme incomponents/Theme.tsx, context inWalletContext.tsxandUserContext.tsx).src-tauri/— Tauri host, TLS helper, updater, and native integrations.public/— Static assets for the Vite app.scripts/— Dev helpers (toolbox links, versioning).docs/— Static docs site.binaries-site/frontend/— Product marketing site, signed downloads, release metadata, and privacy-bounded UserCom measurement, deployed with CARS by the release workflow.- CI/CD with GitHub Actions.
- Type check & lint:
npm run lint - Frontend build:
npm run build - Marketing site checks:
npm run test:marketing-site - Native run:
npm run tauri dev - Native build:
npm run tauri build - Format:
npm run format
Peacock defaults to mainnet. Users can select Mainnet or TerraTestNet from the unlock screen or under Settings → Advanced Settings → Network & services. Switching profiles reloads Peacock, keeps local unlock state isolated by network, and clears cached wallet views plus pending app connections before the new network starts.
Developers can seed the initial profile with VITE_WALLET_ENVIRONMENT; a user's saved
selection takes precedence on later starts:
VITE_WALLET_ENVIRONMENT=teratestnet npm run tauri dev
VITE_WALLET_ENVIRONMENT=teratestnet npm run tauri buildSupported values are mainnet and teratestnet (with main, ttn, and terratestnet
accepted as aliases). The TerraTestNet profile uses:
- wallet chain
ttnand the SDK's isolatedteratestnetSHIP/SLAP roots; https://staging-storage.babbage.systemsfor wallet storage;https://staging-chaintracks.babbage.systemsfor CORS-safe Atomic BEEF proof validation;https://arcade-v2-ttn-us-1.bsvblockchain.techfor transaction broadcasting;https://staging-messagebox.babbage.systemsfor Message Box and PeerPay;- the same
teratestnetresolver for registry, identity, and UHRP lookups.
Staging WAB and staging CARS applications connect to Peacock through its normal wallet bridge;
they are not wallet backend endpoints and therefore do not require Peacock-side host settings.
TerraTestNet development funds are available from https://faucet-ttn.bsvblockchain.tech/.
We love thoughtful contributions. A great PR usually:
- Opens an issue (or comments on one) describing the change and risk areas.
- Keeps scope tight (one concern per PR).
- Includes tests or manual test notes.
- Documents any config/env changes.
- Screenshots for UI tweaks.
Please file bugs with clear repro steps and platform info. For security-related findings, contact us privately first.
- Stick to the Peacock Wallet palette and typography (see
components/Theme.tsx). - Prefer accessible components and keyboard-friendly interactions.
- Add concise comments only where logic isn’t obvious.
- TypeScript strictness: favor explicit types for public APIs.
- Avoid silent catches; surface actionable errors to the UI/toast where relevant.
- Keep modules cohesive; extract helpers over adding one-off inline lambdas.
- Open a GitHub issue for bugs or feature requests.
- For wallet behavior questions, include logs and platform (macOS/Windows/Linux) plus steps to reproduce.
- Wallet Wire support on TCP/3301
- Better permissions that don't annoy users
- Consider the ability to port / log-in with WAB-based accounts.
The license for the code in this repository is the Open BSV License.
This patch includes published @bsv/sdk 2.8.4. Existing action histories may
contain empty descriptions on generated change or empty unassigned baskets;
these values now pass result validation without rewriting stored records.
BRC100 calls, wire bytes, permissions and BRC-38/39 recovery behavior are
unchanged. New-action input validation and transaction/script/value checks
remain in force.
This patch includes published @bsv/sdk 2.8.5, which increases HTTP client
header capacity fourfold and allows valid larger payment proofs within the
aggregate transport budget. BRC100 calls, wallet records, permissions and
BRC-38/39 recovery formats remain unchanged. No account migration is needed.
This patch uses published SDK 2.8.6 to derive the recipient-owned BRC-29 child key when accepting PeerPay payments and refunds. Valid payments are accepted without weakening wrong-recipient rejection. BRC100 calls, wallet records, permissions and BRC-38/39 recovery formats remain compatible; no account migration is required.
This patch consumes Wallet Toolbox Client 2.14.1 so internal exact-spend metadata no longer causes an error after creating or signing an application transaction. Service charges and spending permissions remain enforced. BRC100 apps, wallet data, BRC-38/39 files and account recovery require no migration. Check wallet activity before repeating a creation that reported an error on an older version: the transaction may already have completed. The regression tests exercise completed and partial actions through the real binary codec without spending funds, and verify that denial still aborts before signing.
This release uses published SDK 2.8.7, Wallet Toolbox Client 2.14.2 and Message Box Client 2.5.4. It includes corrected identity lookup matching and retains the BRC-29 payment/refund and binary createAction response fixes. BRC100 calls, wallet permissions, account snapshots and BRC-38/39 recovery formats remain compatible; no application or account migration is required. Identity searches use complete public-name/username tokens or a named field; language-specific stemming remains unsupported.
This candidate pins Toolbox Client 2.14.6, SDK 3.1.0 and Message Box Client 2.6.0. It includes confirmed UMP update lineage and pin continuity, plus locally authorized storage fee outputs for faucet redemption. Providers need Overlay 2.6.4 or later together with a retained-history lookup selector. The refresh preserves wallet data and BRC100 interfaces. The lock also uses source-map-js 1.2.2 to repair its high-severity indexed source-map advisory without changing its existing compatible range. The existing release workflow publishes signed installers after source, security and native validation. Mainnet and TerraTestNet frontend configurations are checked separately before release.
