Skip to content

Desktop Wallet

The Citizen desktop wallet is a Tauri-based application for macOS, Linux, and Windows with a Rust bridge for backup vault operations.

Installation

From Source

cd wallet/desktop
npm install
npm run tauri dev    # Development
npm run tauri build  # Production build

Prerequisites

  • Rust toolchain (for the Tauri Rust bridge)
  • Node.js 22+
  • Platform-specific dependencies:
    • macOS: Xcode Command Line Tools
    • Linux: webkit2gtk, libgtk-3, libappindicator
    • Windows: WebView2 runtime

Features

Backup Vault Operations

The desktop wallet's key differentiator is the Rust backup vault bridge, which provides:

  • Encrypted wallet export (AES-256-GCM with PBKDF2 210K iterations)
  • Backup vault import and verification
  • Schema-validated backup format (backup-command-envelope.v1.schema.json)
  • Disaster recovery support

Standard Wallet Features

  • Wallet creation and import (BIP39 mnemonic)
  • Transaction signing
  • Hybrid decryption
  • Direct submit to Citizen network endpoints

Architecture

wallet/desktop/
  src/                    # React frontend (UI)
  src-tauri/
    src/
      main.rs             # Tauri entry point
      backup_bridge.rs    # Backup vault Rust bridge
      backup_core_bridge.rs  # Core backup operations
    Cargo.toml            # Rust dependencies
    tauri.conf.json       # Tauri configuration
  scripts/                # Release gate, audit, and smoke scripts

The Rust bridge (backup_bridge.rs) handles the cryptographic operations for backup vault encryption and decryption, keeping sensitive operations in the compiled Rust layer rather than the JavaScript frontend.

Release Process

The desktop wallet includes a comprehensive release gate with:

  • TV3 audit scripts (portable smoke, evidence packs, completion gates)
  • Desktop CLI compatibility matrix checks
  • Alpha/beta promotion thresholds
  • UX signoff completion guidelines