Modular, Local-First Ecash Wallet for Bitcoin & Nostr.
Bey Wallet is a premium, privacy-centric ecash wallet built on the Cashu protocol. It brings together high-speed Bitcoin payments and the censorship-resistant identity of Nostr in a fluid, modern interface.
- Next-Gen Standards: Support for V3 and V4 Cashu tokens (NUT-00, NUT-11 P2PK).
- On-Chain Bitcoin: Fund your wallet via Bitcoin addresses and melt ecash to pay any on-chain transaction directly.
- Mint Management: Add, trust, and monitor multiple community mints from a central dashboard.
- Offline NFC Payments: Send and receive ecash seamlessly by tapping phones, optimized automatically for various coin/proof subsets.
- Total Control: Manage balances across different mints with real-time audit logs and multi-currency fiat conversions.
- Built-in Identity: Generate your
npubdirectly from your wallet seed and claim your free@bey.cashNIP-05 identifier. - Social Payments: Send ecash locked to any receiver's Nostr public key (P2PK) for ultimate security.
- Direct Messages (DMs): Send, receive, and request Ecash instantly via encrypted Nostr Direct Messages (NIP-04/NIP-17). Payments arrive and are detected automatically in the background.
- Contact Management: Built-in address book to save and resolve your friends' Npubs and aliases.
- Local-First Design: Your data stays on your device. Period. Powered by high-performance SQLite.
- Secure Enclave: Your recovery phrase and private keys are protected by hardware-level security.
- Biometric Guard: Face ID, Touch ID, or Passcode protection for every sensitive operation.
- Privacy Mode: Long-press balance to mask/unmask your funds in public.
- Custom display unit: Configurable options to show SATS, local FIAT, or enable the βΏ symbol mode.
- Deterministic Recovery: Restore your entire wallet balance across all mints with just 12 words.
- Optimize Wallet: Consolidate fragmented ecash proofs to optimize wallet speed and transaction compilation.
- Smart Backups: Export and import complete wallet state via encrypted
.beyfiles.
- Engineering: Expo & React Native
- Design System: Tamagui (Dynamic, type-safe styles)
- Logic: Zustand & TanStack Query
- Storage: Expo SQLite
- Core Protocols:
cashu-ts,nostr-tools
- Node.js
- Yarn 4.5.0 (pinned through the
packageManagerfield) - Bun for the cache-clearing development command
- Expo CLI
- EAS CLI (
npm install -g eas-cli)
- Clone the repo:
git clone https://github.com/Bey-Wallet/BeyWallet.git cd BeyWallet - Install dependencies:
yarn install
- Start the app:
yarn start
The source tree is organized by ownership so routes stay small and product logic is easy to locate:
src/
βββ app/ # Thin Expo Router entry files
βββ features/ # Screens and feature-owned components
β βββ payments/ # Send, receive, mint, melt, and swap flows
βββ shared/ # Reusable UI, icons, hooks, utilities, and theme
βββ services/
β βββ wallet/ # Cashu and wallet orchestration
β βββ platform/ # Device and operating-system integrations
β βββ api/ # HTTP and relay-backed integrations
βββ state/ # Zustand stores
βββ storage/sqlite/ # SQLite schema, migrations, and repositories
Internal imports use the ~/* alias. See
docs/folder-structure.md for ownership and dependency rules.
Run the complete local validation suite before submitting a change:
yarn validateThe command runs TypeScript checking, the non-interactive Jest suite, and repository structure checks. Individual commands are also available:
yarn typecheck
yarn test:ci
yarn check:structure
yarn format:checkBey Wallet uses EAS for builds. To build the production APK:
eas build -p android --profile productionWe welcome contributions! Please see our Contributing Guidelines to get started.
Distributed under the Apache License, Version 2.0. See LICENSE for more information.
Made with β€οΈ for the Bitcoin & Nostr communities.