# xoxma1993/umbrellawallet architecture

> Architecture diagram of the GitHub repository xoxma1993/umbrellawallet, generated by GitDiagram from its file tree, README and a sample of source files (last updated 2026-09-25). It is an AI-made overview: check details against the source.

- Interactive diagram: https://gitdiagram.com/xoxma1993/umbrellawallet
- Repository: https://github.com/xoxma1993/umbrellawallet
- Video tour (about a minute): https://gitdiagram.com/xoxma1993/umbrellawallet/video

## Overview

Umbrella Wallet is a self-custody desktop wallet: users create or restore a local vault, derive chain addresses, inspect balances and history, then review privacy risks before sending or swapping. The graph includes major README capabilities such as bundled Tor, configurable counterparties, Monero, and backup. Sampled source confirms app startup, vault and derivation use, and selected network clients; some feature wiring is documented but not visible in the excerpts, so uncertain call edges are omitted.

Main entry points: [`desktop/src/Umbrella.Wallet.App/ViewModels/MainViewModel.cs`](https://github.com/xoxma1993/umbrellawallet/blob/main/desktop/src/Umbrella.Wallet.App/ViewModels/MainViewModel.cs) (Wallet interface), [`desktop/src/Umbrella.Wallet.App/App.axaml.cs`](https://github.com/xoxma1993/umbrellawallet/blob/main/desktop/src/Umbrella.Wallet.App/App.axaml.cs) (App startup), [`desktop/src/Umbrella.Wallet.Infrastructure/Network/PublicChainClients.cs`](https://github.com/xoxma1993/umbrellawallet/blob/main/desktop/src/Umbrella.Wallet.Infrastructure/Network/PublicChainClients.cs) (Chain balances), [`desktop/src/Umbrella.Wallet.Infrastructure/Network/OnChainHistoryClient.cs`](https://github.com/xoxma1993/umbrellawallet/blob/main/desktop/src/Umbrella.Wallet.Infrastructure/Network/OnChainHistoryClient.cs) (Transaction history)

## Diagram (Mermaid)

```mermaid
flowchart TD

subgraph group_app["Desktop app"]
  node_appstart["App startup<br/>[App.axaml.cs]"]
  node_mainvm["Wallet interface<br/>[MainViewModel.cs]"]
end

subgraph group_wallet["Wallet lifecycle"]
  node_registry["Wallet registry<br/>[WalletRegistry.cs]"]
  node_seed["Mnemonic service"]
  node_vault[("Encrypted vault")]
  node_backup["Vault backup<br/>[VaultBackup.cs]"]
end

subgraph group_chains["Chain operations"]
  node_deriver["Address derivation"]
  node_balances["Chain balances"]
  node_history["Transaction history"]
  node_senders["Chain transaction senders<br/>[Network]"]
  node_monero["Monero wallet RPC"]
  node_swap["Swap quotes"]
end

subgraph group_privacy["Privacy and safety"]
  node_safety["Privacy inspection<br/>[Safety]"]
  node_counterparties["Server catalog"]
end

subgraph group_network["Network services"]
  node_tor["Embedded Tor"]
  node_market["Market data"]
end

node_user(("Wallet user"))
node_chain_services(("Chain and market services"))
node_thorchain(("THORChain"))
node_local_monero(("Local Monero RPC"))

node_user -->|"opens wallet"| node_appstart
node_appstart -->|"creates interface"| node_mainvm
node_mainvm -->|"initializes wallet"| node_registry
node_mainvm -->|"creates or unlocks"| node_vault
node_mainvm -->|"validates phrase"| node_seed
node_mainvm -->|"derives addresses"| node_deriver
node_mainvm -->|"backs up or restores"| node_backup
node_mainvm -->|"requests balances"| node_balances
node_mainvm -->|"requests history"| node_history
node_mainvm -->|"submits transfers"| node_senders
node_mainvm -->|"manages Monero wallet"| node_monero
node_mainvm -->|"requests quote"| node_swap
node_mainvm -->|"checks send privacy"| node_safety
node_mainvm -->|"configures servers"| node_counterparties
node_balances -->|"reads chain state"| node_chain_services
node_history -->|"fetches transactions"| node_chain_services
node_senders -->|"broadcasts transactions"| node_chain_services
node_monero -->|"calls loopback RPC"| node_local_monero
node_swap -->|"fetches quotes"| node_thorchain
node_mainvm -.->|"controls Tor"| node_tor
node_market -->|"fetches market data"| node_chain_services

click node_appstart "https://github.com/xoxma1993/umbrellawallet/blob/main/desktop/src/Umbrella.Wallet.App/App.axaml.cs"
click node_mainvm "https://github.com/xoxma1993/umbrellawallet/blob/main/desktop/src/Umbrella.Wallet.App/ViewModels/MainViewModel.cs"
click node_registry "https://github.com/xoxma1993/umbrellawallet/blob/main/desktop/src/Umbrella.Wallet.Infrastructure/WalletRegistry.cs"
click node_seed "https://github.com/xoxma1993/umbrellawallet/blob/main/desktop/src/Umbrella.Wallet.Core/Seed/Bip39MnemonicService.cs"
click node_vault "https://github.com/xoxma1993/umbrellawallet/blob/main/desktop/src/Umbrella.Wallet.Infrastructure/EncryptedFileSeedVault.cs"
click node_backup "https://github.com/xoxma1993/umbrellawallet/blob/main/desktop/src/Umbrella.Wallet.Infrastructure/VaultBackup.cs"
click node_deriver "https://github.com/xoxma1993/umbrellawallet/blob/main/desktop/src/Umbrella.Wallet.Core/Derivation/HdAddressDeriver.cs"
click node_balances "https://github.com/xoxma1993/umbrellawallet/blob/main/desktop/src/Umbrella.Wallet.Infrastructure/Network/PublicChainClients.cs"
click node_history "https://github.com/xoxma1993/umbrellawallet/blob/main/desktop/src/Umbrella.Wallet.Infrastructure/Network/OnChainHistoryClient.cs"
click node_senders "https://github.com/xoxma1993/umbrellawallet/tree/main/desktop/src/Umbrella.Wallet.Infrastructure/Network"
click node_monero "https://github.com/xoxma1993/umbrellawallet/blob/main/desktop/src/Umbrella.Wallet.Infrastructure/Network/MoneroRpcService.cs"
click node_swap "https://github.com/xoxma1993/umbrellawallet/blob/main/desktop/src/Umbrella.Wallet.Infrastructure/Network/ThorchainSwapClient.cs"
click node_safety "https://github.com/xoxma1993/umbrellawallet/tree/main/desktop/src/Umbrella.Wallet.Core/Safety"
click node_counterparties "https://github.com/xoxma1993/umbrellawallet/blob/main/desktop/src/Umbrella.Wallet.Core/Safety/NetworkCounterpartyCatalog.cs"
click node_tor "https://github.com/xoxma1993/umbrellawallet/blob/main/desktop/src/Umbrella.Wallet.Infrastructure/Network/EmbeddedTorService.cs"
click node_market "https://github.com/xoxma1993/umbrellawallet/blob/main/desktop/src/Umbrella.Wallet.Infrastructure/Network/PublicChainClients.cs"

classDef toneNeutral fill:#f8fafc,stroke:#334155,stroke-width:1.5px,color:#0f172a
classDef toneBlue fill:#dbeafe,stroke:#2563eb,stroke-width:1.5px,color:#172554
classDef toneAmber fill:#fef3c7,stroke:#d97706,stroke-width:1.5px,color:#78350f
classDef toneMint fill:#dcfce7,stroke:#16a34a,stroke-width:1.5px,color:#14532d
classDef toneRose fill:#ffe4e6,stroke:#e11d48,stroke-width:1.5px,color:#881337
classDef toneIndigo fill:#e0e7ff,stroke:#4f46e5,stroke-width:1.5px,color:#312e81
classDef toneTeal fill:#ccfbf1,stroke:#0f766e,stroke-width:1.5px,color:#134e4a
class node_appstart,node_mainvm,node_user toneBlue
class node_registry,node_seed,node_vault,node_backup toneAmber
class node_deriver,node_balances,node_history,node_senders,node_monero,node_swap toneMint
class node_safety,node_counterparties toneRose
class node_tor,node_market,node_chain_services,node_thorchain,node_local_monero toneIndigo
```

## Components

### Desktop app

- [App startup](https://github.com/xoxma1993/umbrellawallet/blob/main/desktop/src/Umbrella.Wallet.App/App.axaml.cs): `desktop/src/Umbrella.Wallet.App/App.axaml.cs`
- [Wallet interface](https://github.com/xoxma1993/umbrellawallet/blob/main/desktop/src/Umbrella.Wallet.App/ViewModels/MainViewModel.cs): `desktop/src/Umbrella.Wallet.App/ViewModels/MainViewModel.cs`

### Wallet lifecycle

- [Wallet registry](https://github.com/xoxma1993/umbrellawallet/blob/main/desktop/src/Umbrella.Wallet.Infrastructure/WalletRegistry.cs): `desktop/src/Umbrella.Wallet.Infrastructure/WalletRegistry.cs`
- [Mnemonic service](https://github.com/xoxma1993/umbrellawallet/blob/main/desktop/src/Umbrella.Wallet.Core/Seed/Bip39MnemonicService.cs): `desktop/src/Umbrella.Wallet.Core/Seed/Bip39MnemonicService.cs`
- [Encrypted vault](https://github.com/xoxma1993/umbrellawallet/blob/main/desktop/src/Umbrella.Wallet.Infrastructure/EncryptedFileSeedVault.cs): `desktop/src/Umbrella.Wallet.Infrastructure/EncryptedFileSeedVault.cs`
- [Vault backup](https://github.com/xoxma1993/umbrellawallet/blob/main/desktop/src/Umbrella.Wallet.Infrastructure/VaultBackup.cs): `desktop/src/Umbrella.Wallet.Infrastructure/VaultBackup.cs`

### Chain operations

- [Address derivation](https://github.com/xoxma1993/umbrellawallet/blob/main/desktop/src/Umbrella.Wallet.Core/Derivation/HdAddressDeriver.cs): `desktop/src/Umbrella.Wallet.Core/Derivation/HdAddressDeriver.cs`
- [Chain balances](https://github.com/xoxma1993/umbrellawallet/blob/main/desktop/src/Umbrella.Wallet.Infrastructure/Network/PublicChainClients.cs): `desktop/src/Umbrella.Wallet.Infrastructure/Network/PublicChainClients.cs`
- [Transaction history](https://github.com/xoxma1993/umbrellawallet/blob/main/desktop/src/Umbrella.Wallet.Infrastructure/Network/OnChainHistoryClient.cs): `desktop/src/Umbrella.Wallet.Infrastructure/Network/OnChainHistoryClient.cs`
- [Chain transaction senders](https://github.com/xoxma1993/umbrellawallet/tree/main/desktop/src/Umbrella.Wallet.Infrastructure/Network): `desktop/src/Umbrella.Wallet.Infrastructure/Network`
- [Monero wallet RPC](https://github.com/xoxma1993/umbrellawallet/blob/main/desktop/src/Umbrella.Wallet.Infrastructure/Network/MoneroRpcService.cs): `desktop/src/Umbrella.Wallet.Infrastructure/Network/MoneroRpcService.cs`
- [Swap quotes](https://github.com/xoxma1993/umbrellawallet/blob/main/desktop/src/Umbrella.Wallet.Infrastructure/Network/ThorchainSwapClient.cs): `desktop/src/Umbrella.Wallet.Infrastructure/Network/ThorchainSwapClient.cs`

### Privacy and safety

- [Privacy inspection](https://github.com/xoxma1993/umbrellawallet/tree/main/desktop/src/Umbrella.Wallet.Core/Safety): `desktop/src/Umbrella.Wallet.Core/Safety`
- [Server catalog](https://github.com/xoxma1993/umbrellawallet/blob/main/desktop/src/Umbrella.Wallet.Core/Safety/NetworkCounterpartyCatalog.cs): `desktop/src/Umbrella.Wallet.Core/Safety/NetworkCounterpartyCatalog.cs`

### Network services

- [Embedded Tor](https://github.com/xoxma1993/umbrellawallet/blob/main/desktop/src/Umbrella.Wallet.Infrastructure/Network/EmbeddedTorService.cs): `desktop/src/Umbrella.Wallet.Infrastructure/Network/EmbeddedTorService.cs`
- [Market data](https://github.com/xoxma1993/umbrellawallet/blob/main/desktop/src/Umbrella.Wallet.Infrastructure/Network/PublicChainClients.cs): `desktop/src/Umbrella.Wallet.Infrastructure/Network/PublicChainClients.cs`

### Other components

- **Wallet user**
- **Chain and market services**
- **THORChain**
- **Local Monero RPC**

## Connections

- Wallet user → App startup: opens wallet
- App startup → Wallet interface: creates interface
- Wallet interface → Wallet registry: initializes wallet
- Wallet interface → Encrypted vault: creates or unlocks
- Wallet interface → Mnemonic service: validates phrase
- Wallet interface → Address derivation: derives addresses
- Wallet interface → Vault backup: backs up or restores
- Wallet interface → Chain balances: requests balances
- Wallet interface → Transaction history: requests history
- Wallet interface → Chain transaction senders: submits transfers
- Wallet interface → Monero wallet RPC: manages Monero wallet
- Wallet interface → Swap quotes: requests quote
- Wallet interface → Privacy inspection: checks send privacy
- Wallet interface → Server catalog: configures servers
- Chain balances → Chain and market services: reads chain state
- Transaction history → Chain and market services: fetches transactions
- Chain transaction senders → Chain and market services: broadcasts transactions
- Monero wallet RPC → Local Monero RPC: calls loopback RPC
- Swap quotes → THORChain: fetches quotes
- Wallet interface → Embedded Tor: controls Tor
- Market data → Chain and market services: fetches market data
