This commit is contained in:
thePR0M3TH3AN committed 2025-07-06 12:48:06 -04:00
1 parent 0d0b123ae8
commit f53d1f2c68
3 files changed
+47

No files matched your search

+46
View File
@@ -0,0 +1,46 @@
---
config:
layout: fixed
theme: neo-dark
look: classic
---
flowchart TD
subgraph subGraph0["Local Storage"]
direction TB
V["Vault<br>(password_manager.Vault)<br>• encrypted index<br>• config"]
end
subgraph subGraph1["Backup Pipeline"]
direction TB
BK1["Incremental Backups<br>(BackupManager)"]
BK2["Portable Backup<br>(portable_backup.py)<br>.json.enc"]
BK3["Nostr Snapshot<br>(nostr.client)<br>gzip chunks"]
end
subgraph Restore["Restore"]
direction TB
R1["Local Backup File"]
R2["Nostr Snapshot"]
R3["Portable Backup"]
R4["Vault Restore<br>(Vault / BackupManager)"]
end
A["Parent Seed<br>(BIP-39 Mnemonic)"] --> B["Seed Bytes<br>(BIP-39 → 512-bit)"]
B --> C["BIP-85 Derivation<br>(local_bip85.BIP85)"]
C --> D1["Password Entropy<br>(password_generation)"] & D2["TOTP Secret<br>(utils.key_derivation.derive_totp_secret)"] & D3["SSH Key Entropy<br>(password_generation.derive_ssh_key)"] & D4["PGP Key Entropy<br>(entry_management.add_pgp_key)"] & D5["Child Mnemonic<br>(BIP-85 derive_mnemonic)"] & D6["Nostr Key Entropy<br>(nostr.KeyManager)"]
D1 --> E1["Passwords"]
D2 --> E2["2FA Codes"]
D3 --> E3["SSH Key Pair"]
D4 --> E4["PGP Key"]
D5 --> E5["Seed Phrase"]
D6 --> E6["Nostr Keys<br>(npub / nsec)"]
E1 --> V
E2 --> V
E3 --> V
E4 --> V
E5 --> V
E6 --> V
V --> BK1 & BK2 & BK3
R1 --> R4
R2 --> R4
R3 --> R4
R4 --> V
A -. "Same seed ⇒ re-derive any artifact on demand" .- E1
A -.-> E2 & E3 & E4 & E5 & E6
Binary file not shown.

After

Width:  |  Height:  |  Size: 302 KiB

+1
View File
@@ -0,0 +1 @@
<svg id="export-svg" width="100%" xmlns="http://www.w3.org/2000/svg" class="flowchart" style="max-width: 2367.07px; background: rgb(23, 23, 25);" viewBox="-0.0001220703125 0 2367.068359375 991" role="graphics-document document" aria-roledescription="flowchart-v2"><style xmlns="http://www.w3.org/1999/xhtml">@import url("https://cdnjs.cloudflare.com/ajax/libs/font-awesome/6.2.0/css/all.min.css"); p {margin: 0;}</style><style>#export-svg{font-family:arial,sans-serif;font-size:14px;fill:#ccc;}@keyframes edge-animation-frame{from{stroke-dashoffset:0;}}@keyframes dash{to{stroke-dashoffset:0;}}#export-svg .edge-animation-slow{stroke-dasharray:9,5!important;stroke-dashoffset:900;animation:dash 50s linear infinite;stroke-linecap:round;}#export-svg .edge-animation-fast{stroke-dasharray:9,5!important;stroke-dashoffset:900;animation:dash 20s linear infinite;stroke-linecap:round;}#export-svg .error-icon{fill:hsl(20, 1.5873015873%, 12.3529411765%);}#export-svg .error-text{fill:rgb(222.9999999999, 223.6666666666, 223.9999999999);stroke:rgb(222.9999999999, 223.6666666666, 223.9999999999);}#export-svg .edge-thickness-normal{stroke-width:1px;}#export-svg .edge-thickness-thick{stroke-width:3.5px;}#export-svg .edge-pattern-solid{stroke-dasharray:0;}#export-svg .edge-thickness-invisible{stroke-width:0;fill:none;}#export-svg .edge-pattern-dashed{stroke-dasharray:3;}#export-svg .edge-pattern-dotted{stroke-dasharray:2;}#export-svg .marker{fill:#cccccc;stroke:#cccccc;}#export-svg .marker.cross{stroke:#cccccc;}#export-svg svg{font-family:arial,sans-serif;font-size:14px;}#export-svg p{margin:0;}#export-svg .label{font-family:arial,sans-serif;color:#e0dfdf;}#export-svg .cluster-label text{fill:rgb(222.9999999999, 223.6666666666, 223.9999999999);}#export-svg .cluster-label span{color:rgb(222.9999999999, 223.6666666666, 223.9999999999);}#export-svg .cluster-label span p{background-color:transparent;}#export-svg .label text,#export-svg span{fill:#e0dfdf;color:#e0dfdf;}#export-svg .node rect,#export-svg .node circle,#export-svg .node ellipse,#export-svg .node polygon,#export-svg .node path{fill:#2a2020;stroke:#ccc;stroke-width:1px;}#export-svg .rough-node .label text,#export-svg .node .label text,#export-svg .image-shape .label,#export-svg .icon-shape .label{text-anchor:middle;}#export-svg .node .katex path{fill:#000;stroke:#000;stroke-width:1px;}#export-svg .rough-node .label,#export-svg .node .label,#export-svg .image-shape .label,#export-svg .icon-shape .label{text-align:center;}#export-svg .node.clickable{cursor:pointer;}#export-svg .root .anchor path{fill:#cccccc!important;stroke-width:0;stroke:#cccccc;}#export-svg .arrowheadPath{fill:#cccccc;}#export-svg .edgePath .path{stroke:#cccccc;stroke-width:1px;}#export-svg .flowchart-link{stroke:#cccccc;fill:none;}#export-svg .edgeLabel{background-color:hsl(180, 1.5873015873%, 28.3529411765%);text-align:center;}#export-svg .edgeLabel p{background-color:hsl(180, 1.5873015873%, 28.3529411765%);}#export-svg .edgeLabel rect{opacity:0.5;background-color:hsl(180, 1.5873015873%, 28.3529411765%);fill:hsl(180, 1.5873015873%, 28.3529411765%);}#export-svg .labelBkg{background-color:rgba(71.1523809525, 73.4476190477, 73.4476190477, 0.5);}#export-svg .cluster rect{fill:hsl(20, 1.5873015873%, 12.3529411765%);stroke:hsl(20, 0%, 2.3529411765%);stroke-width:1px;}#export-svg .cluster text{fill:rgb(222.9999999999, 223.6666666666, 223.9999999999);}#export-svg .cluster span{color:rgb(222.9999999999, 223.6666666666, 223.9999999999);}#export-svg div.mermaidTooltip{position:absolute;text-align:center;max-width:200px;padding:2px;font-family:arial,sans-serif;font-size:12px;background:hsl(20, 1.5873015873%, 12.3529411765%);border:1px solid rgba(255, 255, 255, 0.25);border-radius:2px;pointer-events:none;z-index:100;}#export-svg .flowchartTitleText{text-anchor:middle;font-size:18px;fill:#ccc;}#export-svg rect.text{fill:none;stroke-width:0;}#export-svg .icon-shape,#export-svg .image-shape{background-color:hsl(180, 1.5873015873%, 28.3529411765%);text-align:center;}#export-svg .icon-shape p,#export-svg .image-shape p{background-color:hsl(180, 1.5873015873%, 28.3529411765%);padding:2px;}#export-svg .icon-shape rect,#export-svg .image-shape rect{opacity:0.5;background-color:hsl(180, 1.5873015873%, 28.3529411765%);fill:hsl(180, 1.5873015873%, 28.3529411765%);}#export-svg .node .neo-node{stroke:#ccc;}#export-svg [data-look="neo"].node rect,#export-svg [data-look="neo"].cluster rect,#export-svg [data-look="neo"].node polygon{stroke:url(#export-svg-gradient);filter:drop-shadow( 1px 2px 2px rgba(185,185,185,0.2));}#export-svg [data-look="neo"].node path{stroke:url(#export-svg-gradient);stroke-width:1;}#export-svg [data-look="neo"].node .outer-path{filter:drop-shadow( 1px 2px 2px rgba(185,185,185,0.2));}#export-svg [data-look="neo"].node .neo-line path{stroke:#ccc;filter:none;}#export-svg [data-look="neo"].node circle{stroke:url(#export-svg-gradient);filter:drop-shadow( 1px 2px 2px rgba(185,185,185,0.2));}#export-svg [data-look="Line truncated

After

Width:  |  Height:  |  Size: 59 KiB