Desktop app for managing Solana wallets inside an encrypted vault (.wlvlt). The UI is a Nuxt single-page app hosted inside Tauri 2; all vault I/O and crypto run in Rust via vaultwallet-core, which implements a KDBX 4.1–compatible on-disk format (same binary layout as KeePass 4.x, with a VaultWallet-specific extension and branding).
- Store public keys, private keys, balances, and optional funding metadata in a hierarchical vault (folders and entries), protected by a master password and Argon2 KDF (strength presets from quick to maximum memory cost).
- Never rely on the browser for secrets: opening, saving, and mutating the vault happen through Tauri commands that call
vaultwallet-coreon the native side. - Optionally enrich entries with Solana RPC data: derive a public key from a private key, refresh balances, and run a lightweight funding trace to label where funds may have come from (using curated exchange hot-wallet lists in
vaultwallet/config/exchange-wallets.json).
flowchart LR
subgraph ui [Nuxt UI]
Pages[Pages and composables]
end
subgraph tauri [Tauri shell]
IPC[invoke / events]
end
subgraph rust [Rust]
Lib[lib.rs commands]
Core[vaultwallet-core]
Sol[solana module + reqwest]
end
Pages --> IPC
IPC --> Lib
Lib --> Core
Lib --> Sol
Core --> FS[(.wlvlt file)]
Sol --> RPC[(Solana JSON-RPC)]
- Gate screen — You open an existing
.wlvltor create one (path + password + KDF preset). The password is kept in memory for the session so the UI can re-invoke save operations; it is not written to disk by the front end. - Vault tree — Groups map to folders; entries hold string fields (
Title,PublicKey,PrivateKey,Balance,Funding, plus any custom keys). The Rust side loads the database, applies changes, and atomically saves back to disk. - Solana helpers — Commands such as
solana_fetch_balanceandsolana_trace_fundingcall your configured RPC URL from the Nuxt public runtime config (see below). Tracing compares incoming transfer sources against known exchange deposit addresses to populate human-readable funding labels in the UI.
| Path | Role |
|---|---|
vaultwallet/ |
Nuxt 4 + Vue 3 + Tailwind; Tauri app manifest and src-tauri/ Rust crate |
vaultwallet-core/ |
GPL-3.0 Rust library: KDBX4-compatible open / save, encryption, XML inner format |
vaultwallet/config/exchange-wallets.json |
Exchange name → Solana address list used for funding hints |
- Rust (stable) and platform Tauri deps (prerequisites)
- Bun (or another package manager compatible with the lockfile)
cd vaultwallet
bun install
bun run tauri devThis starts the Nuxt dev server and opens the Tauri window. For web-only UI work (no native APIs):
cd vaultwallet
bun install
bun run devcd vaultwallet
bun install
bun run tauri buildBundled artifacts are produced under vaultwallet/src-tauri/target/release/bundle/ (per Tauri defaults).
- Solana RPC — Set
NUXT_PUBLIC_SOLANA_RPC_URL(e.g. invaultwallet/.env) to point at your RPC provider. If unset, the app falls back to the public mainnet endpoint (fine for testing; use a dedicated provider for production).
- Treat private keys and your master password as highly sensitive. The app is a local tool; you are responsible for backup, malware protection, and safe RPC providers.
- The
vaultwallet-corecrate is GPL-3.0. If you distribute binaries that link it, comply with the GPL. Seevaultwallet-core/README.mdfor format details and licensing context.
- vaultwallet-core README — file extension
.wlvlt, API sketch, format status - Tauri 2 — desktop packaging and security capabilities
- Nuxt 4 — UI framework used by the shell