Vipr Wallet is a modern Progressive Web App (PWA) that serves as an ecash wallet for Fedimint. It runs seamlessly on both mobile and desktop devices, enabling private and instant lightning transactions wherever you are.
This software is experimental and comes with risks: DO NOT USE with significant amounts of ecash or in production environments
By using this wallet, you acknowledge and accept these risks.
The production release of the wallet is available at app.vipr.cash.
For development and testing, dev.vipr.cash always
tracks the current master branch.
Learn more about the project at vipr.cash.
Vipr is a Fedimint ecash wallet for private, instant payments across Lightning, on-chain Bitcoin, and federation-based ecash.
| Feature area | What Vipr offers | |
|---|---|---|
| ⚡ | Lightning | Send invoices, scan QR codes, pay Lightning addresses, and use LNURL-pay |
| 📥 | Receive | Create Lightning invoices with memo, QR code, copy/share actions, and payment status |
| 🪙 | Ecash | Import and export ecash tokens |
| ₿ | On-chain Bitcoin | Send and receive on-chain payments through supported federations |
| 🏛️ | Federations | Join multiple federations, switch between them, and inspect federation details |
| 🔎 | Discovery | Discover public federations through Nostr recommendations |
| 👥 | Contacts | Sync Nostr contacts from NIP-05 or npub and pay contacts by name |
| 🔐 | Recovery & security | Back up and restore the wallet, protect the app with PIN and Face ID / Touch ID |
| 📱 | PWA | Installable web app with update handling and Docker-based self-hosting |
Vipr helps users understand the federations they join:
- Guardian and module overview
- Federation invite sharing
- Balance and invoice limits
- Gateway and fee information
- Federation UTXOs
- Fedimint Observer links
- Terms of Service and federation messages
Vipr supports common Bitcoin and Lightning payment standards:
| Standard | Support |
|---|---|
| BOLT11 | Send and receive Lightning invoices |
| BIP21 | Read Bitcoin payment URIs for on-chain sends |
| Lightning Address | Pay human-readable Lightning addresses |
| LNURL-pay | Pay LNURL payment requests |
If you want to host the wallet yourself, you can use the Docker image on Docker Hub.
docker pull ngutech21/vipr-wallet:latestRun the latest container from dockerhub locally:
docker run -d \
-p 8080:8080 \
--name vipr-wallet \
ngutech21/vipr-wallet:latestRun the container locally using docker-compose:
docker compose up -dThe wallet will be available at http://localhost:8080
- This project uses Vue 3 with TypeScript
- Quasar Framework provides the UI components
- Pinia is used for state management
- Fedimint-SDK is used for interacting with the fedimint
Make sure you have the following installed:
- Node.js 24+
- pnpm 10+
- Nix with flakes enabled for running end-to-end tests locally
- Clone the repository
git clone https://github.com/ngutech21/vipr-wallet.git
cd vipr-wallet- Install pnpm
npm install -g pnpm@latest-10- Install the dependencies
pnpm install- Run the standard local quality checks
pnpm final-check- Start the app in development mode (hot-code reloading, error reporting, etc.)
pnpm dev- Run end-to-end tests locally
nix develop --accept-flake-config --command pnpm test:e2e- Use
pnpm final-checkbefore opening a pull request. It runs formatting checks, linting, type checks, unit tests, and a production dependency audit. - Use
pnpm buildto verify the production PWA build locally. - Use
pnpm build:dockerif you want to validate the container image build path used by the project. - Lighthouse CI and the main CI workflows are configured in GitHub Actions, so local checks and CI should stay close to each other.
| Command | Description |
|---|---|
pnpm dev |
Start the development server with hot reload |
pnpm dev:e2e |
Start the app on a fixed port for browser-based end-to-end work |
pnpm build |
Build the production PWA |
pnpm build:docker |
Build the Docker image locally |
pnpm lint |
Run ESLint on source files |
pnpm lint:fix |
Run ESLint and automatically fix safe issues |
pnpm format |
Format code with Prettier |
pnpm format:check |
Verify formatting without modifying files |
pnpm typecheck |
Run Vue TypeScript checks |
pnpm typecheck:pwa |
Run TypeScript checks for the PWA service worker code |
pnpm test |
Run unit tests once |
pnpm test:unit:ci |
Run unit tests in CI mode |
pnpm test:unit:ui |
Open the Vitest UI |
pnpm coverage |
Generate the unit test coverage report |
pnpm test:e2e |
Run end-to-end tests from a Nix dev shell |
pnpm test:e2e:headed |
Run Playwright tests with a visible browser |
pnpm final-check |
Run the main local verification suite before pushing changes |


