yakmesh 2.9.0 → 3.0.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (225) hide show
  1. package/CHANGELOG.md +637 -0
  2. package/Caddyfile +77 -0
  3. package/README.md +119 -29
  4. package/content/api.js +50 -41
  5. package/content/index.js +1 -2
  6. package/content/store.js +323 -177
  7. package/dashboard/index.html +19 -3
  8. package/database/replication.js +117 -37
  9. package/docs/CRYPTO-AGILITY.md +204 -0
  10. package/docs/MTLS-RESEARCH.md +367 -0
  11. package/docs/NAMCHE-SPEC.md +681 -0
  12. package/docs/PEERQUANTA-YAKMESH-INTEGRATION.md +407 -0
  13. package/docs/PRECISION-DISCLOSURE.md +96 -0
  14. package/docs/README.md +76 -0
  15. package/docs/ROADMAP-2.4.0.md +447 -0
  16. package/docs/ROADMAP-2.5.0.md +244 -0
  17. package/docs/SECURITY-AUDIT-REPORT.md +306 -0
  18. package/docs/SST-INTEGRATION.md +712 -0
  19. package/docs/STEADYWATCH-IMPLEMENTATION.md +303 -0
  20. package/docs/TERNARY-AUDIT-REPORT.md +247 -0
  21. package/docs/TME-FAQ.md +221 -0
  22. package/docs/WHITEPAPER.md +623 -0
  23. package/docs/adapters.html +1001 -0
  24. package/docs/advanced-systems.html +1045 -0
  25. package/docs/annex.html +1046 -0
  26. package/docs/api.html +970 -0
  27. package/docs/business/response-templates.md +160 -0
  28. package/docs/c2c.html +1225 -0
  29. package/docs/cli.html +1332 -0
  30. package/docs/configuration.html +1248 -0
  31. package/docs/darshan.html +1085 -0
  32. package/docs/dharma.html +966 -0
  33. package/docs/docs-bundle.html +1075 -0
  34. package/docs/docs.css +3120 -0
  35. package/docs/docs.js +556 -0
  36. package/docs/doko.html +969 -0
  37. package/docs/geo-proof.html +858 -0
  38. package/docs/getting-started.html +840 -0
  39. package/docs/gumba-tutorial.html +1144 -0
  40. package/docs/gumba.html +1098 -0
  41. package/docs/index.html +914 -0
  42. package/docs/jhilke.html +1312 -0
  43. package/docs/karma.html +1100 -0
  44. package/docs/katha.html +1037 -0
  45. package/docs/lama.html +978 -0
  46. package/docs/mandala.html +1067 -0
  47. package/docs/mani.html +964 -0
  48. package/docs/mantra.html +967 -0
  49. package/docs/mesh.html +1409 -0
  50. package/docs/nakpak.html +869 -0
  51. package/docs/namche.html +928 -0
  52. package/docs/nav-order.json +53 -0
  53. package/docs/prahari.html +1043 -0
  54. package/docs/prism-bash.min.js +1 -0
  55. package/docs/prism-javascript.min.js +1 -0
  56. package/docs/prism-json.min.js +1 -0
  57. package/docs/prism-tomorrow.min.css +1 -0
  58. package/docs/prism.min.js +1 -0
  59. package/docs/privacy.html +699 -0
  60. package/docs/quick-reference.html +1181 -0
  61. package/docs/sakshi.html +1402 -0
  62. package/docs/sandboxing.md +386 -0
  63. package/docs/seva.html +911 -0
  64. package/docs/sherpa.html +871 -0
  65. package/docs/studio.html +860 -0
  66. package/docs/stupa.html +995 -0
  67. package/docs/tailwind.min.css +2 -0
  68. package/docs/tattva.html +1332 -0
  69. package/docs/terms.html +686 -0
  70. package/docs/time-server-deployment.md +166 -0
  71. package/docs/time-sources.html +1392 -0
  72. package/docs/tivra.html +1127 -0
  73. package/docs/trademark-policy.html +686 -0
  74. package/docs/tribhuj.html +1183 -0
  75. package/docs/trust-security.html +1029 -0
  76. package/docs/tutorials/backup-recovery.html +654 -0
  77. package/docs/tutorials/dashboard.html +604 -0
  78. package/docs/tutorials/domain-setup.html +605 -0
  79. package/docs/tutorials/host-website.html +456 -0
  80. package/docs/tutorials/mesh-network.html +505 -0
  81. package/docs/tutorials/mobile-access.html +445 -0
  82. package/docs/tutorials/privacy.html +467 -0
  83. package/docs/tutorials/raspberry-pi.html +600 -0
  84. package/docs/tutorials/security-basics.html +539 -0
  85. package/docs/tutorials/share-files.html +431 -0
  86. package/docs/tutorials/troubleshooting.html +637 -0
  87. package/docs/tutorials/trust-karma.html +419 -0
  88. package/docs/tutorials/yak-protocol.html +456 -0
  89. package/docs/tutorials.html +1034 -0
  90. package/docs/vani.html +1270 -0
  91. package/docs/webserver.html +809 -0
  92. package/docs/yak-protocol.html +940 -0
  93. package/docs/yak-timeserver-design.md +475 -0
  94. package/docs/yakapp.html +1015 -0
  95. package/docs/ypc27.html +1069 -0
  96. package/docs/yurt.html +1344 -0
  97. package/embedded-docs/bundle.js +274 -114
  98. package/gossip/protocol.js +247 -27
  99. package/identity/key-resolver.js +262 -0
  100. package/identity/machine-seed.js +632 -0
  101. package/identity/node-key.js +669 -368
  102. package/identity/tribhuj-ratchet.js +506 -0
  103. package/knowledge-base.js +37 -8
  104. package/launcher/yakmesh.bat +62 -0
  105. package/launcher/yakmesh.sh +70 -0
  106. package/mesh/annex.js +462 -108
  107. package/mesh/beacon-broadcast.js +4 -1
  108. package/mesh/darshan.js +17 -5
  109. package/mesh/gumba.js +47 -13
  110. package/mesh/jhilke.js +651 -0
  111. package/mesh/katha.js +5 -2
  112. package/mesh/nakpak-routing.js +8 -5
  113. package/mesh/network.js +724 -34
  114. package/mesh/pulse-sync.js +4 -1
  115. package/mesh/seva.js +526 -0
  116. package/mesh/sherpa-discovery.js +89 -8
  117. package/mesh/sybil-defense.js +19 -5
  118. package/mesh/temporal-encoder.js +4 -3
  119. package/mesh/yurt.js +72 -17
  120. package/models/entropy-sentinel.onnx +0 -0
  121. package/models/karma-trust.onnx +0 -0
  122. package/models/manifest.json +43 -0
  123. package/models/sakshi-anomaly.onnx +0 -0
  124. package/oracle/code-proof-protocol.js +7 -6
  125. package/oracle/codebase-lock.js +257 -28
  126. package/oracle/index.js +74 -15
  127. package/oracle/ma902-snmp.js +678 -0
  128. package/oracle/module-sealer.js +5 -3
  129. package/oracle/packet-checksum.js +201 -0
  130. package/oracle/ternary-144t.js +714 -0
  131. package/oracle/ternary-ml.js +481 -0
  132. package/oracle/time-api.js +239 -0
  133. package/oracle/time-source.js +137 -47
  134. package/oracle/validation-oracle-hardened.js +1111 -1071
  135. package/oracle/validation-oracle.js +4 -2
  136. package/oracle/ypc27.js +211 -0
  137. package/package.json +20 -3
  138. package/protocol/yak-handler.js +35 -9
  139. package/protocol/yak-protocol.js +6 -5
  140. package/reference/cpp/yakmesh_mceliece_shard.cpp +168 -0
  141. package/reference/cpp/yakmesh_ypc27.cpp +179 -0
  142. package/sbom.json +87 -0
  143. package/scripts/security-audit.mjs +264 -0
  144. package/scripts/update-docs-sidebar.cjs +164 -0
  145. package/security/crypto-config.js +4 -3
  146. package/security/dharma-moderation.js +4 -3
  147. package/security/doko-identity.js +193 -143
  148. package/security/domain-consensus.js +86 -85
  149. package/security/fs-hardening.js +620 -0
  150. package/security/hardware-attestation.js +5 -3
  151. package/security/hybrid-trust.js +227 -87
  152. package/security/karma-rate-limiter.js +692 -0
  153. package/security/khata-protocol.js +22 -21
  154. package/security/khata-trust-integration.js +277 -150
  155. package/security/memory-safety.js +635 -0
  156. package/security/mesh-auth.js +11 -10
  157. package/security/mesh-revocation.js +18 -5
  158. package/security/namche-gateway.js +298 -69
  159. package/security/sakshi.js +102 -3
  160. package/security/sangha.js +770 -0
  161. package/security/secure-config.js +473 -0
  162. package/security/silicon-parity.js +13 -10
  163. package/security/steadywatch.js +1142 -0
  164. package/security/strike-system.js +32 -3
  165. package/security/temporal-signing.js +488 -0
  166. package/security/trit-commitment.js +464 -0
  167. package/server/crypto/annex.js +247 -0
  168. package/server/darshan-api.js +343 -0
  169. package/server/index.js +3259 -362
  170. package/server/komm-api.js +668 -0
  171. package/utils/accel.js +2273 -0
  172. package/utils/ternary-id.js +79 -0
  173. package/utils/verify-worker.js +57 -0
  174. package/webserver/index.js +95 -5
  175. package/assets/yakmesh-logo.png +0 -0
  176. package/assets/yakmesh-logo.svg +0 -80
  177. package/assets/yakmesh-logo2.png +0 -0
  178. package/assets/yakmesh-logo2sm.png +0 -0
  179. package/assets/ymsm.png +0 -0
  180. package/scripts/update-docs-nav.cjs +0 -194
  181. package/update-docs-nav.cjs +0 -18
  182. package/update-nav.ps1 +0 -16
  183. package/website/assets/silhouettes/adapters.svg +0 -107
  184. package/website/assets/silhouettes/api-endpoints.svg +0 -115
  185. package/website/assets/silhouettes/atomic-clock.svg +0 -83
  186. package/website/assets/silhouettes/base-camp.svg +0 -81
  187. package/website/assets/silhouettes/bridge.svg +0 -69
  188. package/website/assets/silhouettes/docs-bundle.svg +0 -113
  189. package/website/assets/silhouettes/doko-basket.svg +0 -70
  190. package/website/assets/silhouettes/fortress.svg +0 -93
  191. package/website/assets/silhouettes/gateway.svg +0 -54
  192. package/website/assets/silhouettes/gears.svg +0 -93
  193. package/website/assets/silhouettes/globe-satellite.svg +0 -67
  194. package/website/assets/silhouettes/karma-wheel.svg +0 -137
  195. package/website/assets/silhouettes/lama-council.svg +0 -141
  196. package/website/assets/silhouettes/mandala-network.svg +0 -169
  197. package/website/assets/silhouettes/mani-stones.svg +0 -149
  198. package/website/assets/silhouettes/mantra-wheel.svg +0 -116
  199. package/website/assets/silhouettes/mesh-nodes.svg +0 -113
  200. package/website/assets/silhouettes/nakpak.svg +0 -56
  201. package/website/assets/silhouettes/peak-lightning.svg +0 -73
  202. package/website/assets/silhouettes/sherpa.svg +0 -69
  203. package/website/assets/silhouettes/stupa-tower.svg +0 -119
  204. package/website/assets/silhouettes/tattva-eye.svg +0 -78
  205. package/website/assets/silhouettes/terminal.svg +0 -74
  206. package/website/assets/silhouettes/webserver.svg +0 -145
  207. package/website/assets/silhouettes/yak.svg +0 -78
  208. package/website/assets/yakmesh-logo.png +0 -0
  209. package/website/assets/yakmesh-logo.webp +0 -0
  210. package/website/assets/yakmesh-logo128x140.webp +0 -0
  211. package/website/assets/yakmesh-logo2.png +0 -0
  212. package/website/assets/yakmesh-logo2.svg +0 -51
  213. package/website/assets/yakmesh-logo40x44.webp +0 -0
  214. package/website/assets/yakmesh.gif +0 -0
  215. package/website/assets/yakmesh.ico +0 -0
  216. package/website/assets/yakmesh.jpg +0 -0
  217. package/website/assets/yakmesh.pdf +0 -0
  218. package/website/assets/yakmesh.png +0 -0
  219. package/website/assets/yakmesh.svg +0 -70
  220. package/website/assets/yakmesh128.webp +0 -0
  221. package/website/assets/yakmesh32.png +0 -0
  222. package/website/assets/yakmesh32.svg +0 -65
  223. package/website/assets/yakmesh32o.ico +0 -2
  224. package/website/assets/yakmesh32o.svg +0 -65
  225. package/website/assets/yakmesh32o.svgz +0 -0
@@ -0,0 +1,654 @@
1
+ <!DOCTYPE html>
2
+ <html lang="en" data-theme="tutorials">
3
+ <head>
4
+ <meta charset="UTF-8">
5
+ <meta name="viewport" content="width=device-width, initial-scale=1.0">
6
+ <link rel="icon" href="../favicon.ico" sizes="32x32">
7
+ <link rel="icon" href="../icon.svg" type="image/svg+xml">
8
+ <link rel="apple-touch-icon" href="../apple-touch-icon.png">
9
+ <title>Backup & Recovery - YAKMESH Tutorials</title>
10
+ <meta name="description" content="Learn how to backup your YAKMESH node identity and data, and restore everything on a new machine. Protect your karma score and cryptographic keys.">
11
+
12
+ <link rel="stylesheet" href="../tailwind.min.css">
13
+ <link rel="stylesheet" href="../prism-tomorrow.min.css">
14
+ <link rel="stylesheet" href="../docs.css">
15
+ <style>
16
+ .theme-accent { color: #10b981; }
17
+ .theme-badge { background: rgba(16, 185, 129, 0.2); color: #34d399; }
18
+ .tutorial-card { background: rgba(30, 41, 59, 0.5); border: 1px solid #334155; border-radius: 0.75rem; padding: 1.5rem; margin-bottom: 1.5rem; }
19
+ .tutorial-card:hover { border-color: #10b981; }
20
+ .step-number { display: inline-flex; align-items: center; justify-content: center; width: 2rem; height: 2rem; background: #10b981; color: white; border-radius: 50%; font-weight: bold; margin-right: 0.75rem; }
21
+ .warning-box { background: rgba(251, 191, 36, 0.1); border: 1px solid #fbbf24; border-radius: 0.5rem; padding: 1rem; margin: 1rem 0; }
22
+ .danger-box { background: rgba(239, 68, 68, 0.1); border: 1px solid #ef4444; border-radius: 0.5rem; padding: 1rem; margin: 1rem 0; }
23
+ .tip-box { background: rgba(16, 185, 129, 0.1); border: 1px solid #10b981; border-radius: 0.5rem; padding: 1rem; margin: 1rem 0; }
24
+ .info-box { background: rgba(59, 130, 246, 0.1); border: 1px solid #3b82f6; border-radius: 0.5rem; padding: 1rem; margin: 1rem 0; }
25
+ .file-list { background: rgba(15, 23, 42, 0.6); border-radius: 0.5rem; padding: 1rem; font-family: monospace; }
26
+ .file-important { color: #f59e0b; }
27
+ .file-optional { color: #6b7280; }
28
+ </style>
29
+ </head>
30
+ <body class="bg-mountain-900 text-white min-h-screen">
31
+
32
+ <nav class="docs-sidebar" id="sidebar">
33
+ <a href="../index.html" class="sidebar-logo">
34
+ <span class="logo-icon">🏔️</span>
35
+ <span class="logo-text">Yakmesh</span>
36
+ </a>
37
+ <a href="/dashboard" class="sidebar-dashboard-link"><span>📊</span> <span>Dashboard</span></a>
38
+ <ul class="sidebar-nav">
39
+ <li><a href="../index.html"><span>🏠</span> <span>Overview</span></a></li>
40
+ <li><a href="../getting-started.html"><span>🚀</span> <span>Getting Started</span></a></li>
41
+ <li><a href="../tutorials.html"><span>📖</span> <span>Tutorials</span></a></li>
42
+ <li><a href="../yak-protocol.html"><span class="yak-icon"></span> <span>YAK://</span></a></li>
43
+ <li><a href="../annex.html"><span>🌉</span> <span>ANNEX</span></a></li>
44
+ <li><a href="../nakpak.html"><span>🎒</span> <span>NAKPAK</span></a></li>
45
+ <li><a href="../namche.html"><span>🚪</span> <span>NAMCHE</span></a></li>
46
+ <li><a href="../doko.html"><span>🧺</span> <span>DOKO</span></a></li>
47
+ <li><a href="../sherpa.html"><span>🧗</span> <span>SHERPA</span></a></li>
48
+ <li><a href="../mandala.html"><span>🌐</span> <span>MANDALA</span></a></li>
49
+ <li><a href="../mantra.html"><span>🕉️</span> <span>MANTRA</span></a></li>
50
+ <li><a href="../gumba.html"><span>🛕</span> <span>GUMBA</span></a></li>
51
+ <li><a href="../yurt.html"><span>🏕️</span> <span>YURT</span></a></li>
52
+ <li><a href="../katha.html"><span>💬</span> <span>KATHA</span></a></li>
53
+ <li><a href="../vani.html"><span>🎙️</span> <span>VANI</span></a></li>
54
+ <li><a href="../darshan.html"><span>👁️</span> <span>DARSHAN</span></a></li>
55
+ <li><a href="../stupa.html"><span>🛕</span> <span>STUPA</span></a></li>
56
+ <li><a href="../lama.html"><span>🔮</span> <span>LAMA</span></a></li>
57
+ <li><a href="../mani.html"><span>⏱️</span> <span>MANI</span></a></li>
58
+ <li><a href="../karma.html"><span>☯️</span> <span>KARMA</span></a></li>
59
+ <li><a href="../tattva.html"><span>🔯</span> <span>TATTVA</span></a></li>
60
+ <li><a href="../tribhuj.html"><span>🔺</span> <span>TRIBHUJ</span></a></li>
61
+ <li><a href="../ypc27.html"><span>🔐</span> <span>YPC-27</span></a></li>
62
+ <li><a href="../sakshi.html"><span>👁️</span> <span>SAKSHI</span></a></li>
63
+ <li><a href="../geo-proof.html"><span>🌍</span> <span>PRAMAAN</span></a></li>
64
+ <li><a href="../trust-security.html"><span>🔒</span> <span>SURAKSHA</span></a></li>
65
+ <li><a href="../docs-bundle.html"><span>📚</span> <span>GRANTH</span></a></li>
66
+ <li><a href="../api.html"><span>📡</span> <span>API</span></a></li>
67
+ <li><a href="../adapters.html"><span>🔌</span> <span>Adapters</span></a></li>
68
+ <li><a href="../studio.html"><span>🎨</span> <span>Studio</span></a></li>
69
+ <li><a href="../quick-reference.html"><span>📋</span> <span>Quick Ref</span></a></li>
70
+ </ul>
71
+ </nav>
72
+
73
+ <button class="sidebar-toggle" id="sidebarToggle" title="Toggle sidebar">☰</button>
74
+ <div class="sidebar-overlay" id="sidebarOverlay"></div>
75
+
76
+ <main class="docs-main" id="mainContent">
77
+ <div class="docs-content">
78
+ <div class="mb-6">
79
+ <a href="../tutorials.html" class="theme-accent hover:underline">← Back to Tutorials</a>
80
+ </div>
81
+
82
+ <!-- Header -->
83
+ <header class="mb-8">
84
+ <div class="flex items-center gap-3 mb-4">
85
+ <span class="text-4xl">💾</span>
86
+ <div>
87
+ <h1 class="text-3xl font-bold">Backup & Recovery</h1>
88
+ <p class="text-gray-400">Protect your node identity and data - restore on any machine</p>
89
+ </div>
90
+ </div>
91
+ <div class="flex items-center gap-4 text-sm text-gray-400">
92
+ <span class="theme-badge px-3 py-1 rounded-full">Essential</span>
93
+ <span>⏱️ 10 min read</span>
94
+ <span>🔐 Security</span>
95
+ </div>
96
+ </header>
97
+
98
+ <!-- Introduction -->
99
+ <div class="tutorial-card">
100
+ <h2 class="text-xl font-semibold mb-4 theme-accent">Why Backup Matters</h2>
101
+ <p class="text-gray-300 mb-4">
102
+ Your YAKMESH node has a unique identity - a set of cryptographic keys that prove you are you
103
+ on the mesh network. If you lose these keys, you lose:
104
+ </p>
105
+ <ul class="list-disc list-inside text-gray-300 space-y-2">
106
+ <li><strong>Your Node ID</strong> - You'll get a new random identity</li>
107
+ <li><strong>Your Karma Score</strong> - All your accumulated reputation</li>
108
+ <li><strong>Your Connections</strong> - Trusted peer relationships</li>
109
+ <li><strong>Your Content Access</strong> - Encrypted content you've received</li>
110
+ </ul>
111
+ <p class="text-gray-300 mt-4">
112
+ This tutorial shows you how to backup everything important and restore it on a new machine.
113
+ It takes about 10 minutes and could save you from starting over from scratch.
114
+ </p>
115
+ </div>
116
+
117
+ <!-- What to Backup -->
118
+ <div class="tutorial-card">
119
+ <h2 class="text-xl font-semibold mb-4">📋 What to Backup</h2>
120
+ <p class="text-gray-300 mb-4">
121
+ There are two main things you need to backup: your <strong>identity</strong> (keys) and your <strong>data</strong> (stored content).
122
+ </p>
123
+
124
+ <h3 class="font-semibold mt-6 mb-3 text-gray-200">Critical Files (Must Backup)</h3>
125
+ <div class="file-list">
126
+ <div class="space-y-2">
127
+ <div><span class="file-important">📁 keys/</span> <span class="text-gray-400">← Your cryptographic identity</span></div>
128
+ <div class="ml-4"><span class="file-important">🔑 node.key</span> <span class="text-gray-400">← Private key (NEVER share this)</span></div>
129
+ <div class="ml-4"><span class="file-important">🔑 node.pub</span> <span class="text-gray-400">← Public key</span></div>
130
+ <div class="ml-4"><span class="file-important">🔑 signing.key</span> <span class="text-gray-400">← Message signing key</span></div>
131
+ <div class="ml-4"><span class="file-important">📄 identity.json</span> <span class="text-gray-400">← Your Node ID and metadata</span></div>
132
+ </div>
133
+ </div>
134
+
135
+ <h3 class="font-semibold mt-6 mb-3 text-gray-200">Important Files (Recommended)</h3>
136
+ <div class="file-list">
137
+ <div class="space-y-2">
138
+ <div><span class="text-white">📁 data/</span> <span class="text-gray-400">← Your stored content</span></div>
139
+ <div class="ml-4"><span class="text-gray-300">📁 shares/</span> <span class="text-gray-400">← Files you're sharing</span></div>
140
+ <div class="ml-4"><span class="text-gray-300">📁 received/</span> <span class="text-gray-400">← Downloaded content</span></div>
141
+ <div class="ml-4"><span class="text-gray-300">📁 blocks/</span> <span class="text-gray-400">← Content chunks</span></div>
142
+ </div>
143
+ </div>
144
+
145
+ <h3 class="font-semibold mt-6 mb-3 text-gray-200">Optional Files</h3>
146
+ <div class="file-list">
147
+ <div class="space-y-2">
148
+ <div><span class="file-optional">📄 config.yaml</span> <span class="text-gray-400">← Custom settings (can be recreated)</span></div>
149
+ <div><span class="file-optional">📁 cache/</span> <span class="text-gray-400">← Temporary files (auto-regenerated)</span></div>
150
+ <div><span class="file-optional">📁 logs/</span> <span class="text-gray-400">← Log files (usually not needed)</span></div>
151
+ </div>
152
+ </div>
153
+
154
+ <div class="danger-box mt-4">
155
+ <p class="text-sm"><strong>🚨 Security Warning:</strong> Your <code class="bg-gray-800 px-2 py-1 rounded">keys/</code> folder
156
+ contains your private keys. Treat backups of this folder like passwords - encrypt them and store them securely.
157
+ Anyone with your keys can impersonate your node.</p>
158
+ </div>
159
+ </div>
160
+
161
+ <!-- Finding Your Data -->
162
+ <div class="tutorial-card">
163
+ <h2 class="text-xl font-semibold mb-4">
164
+ <span class="step-number">1</span>
165
+ Find Your YAKMESH Data Folder
166
+ </h2>
167
+ <p class="text-gray-300 mb-4">
168
+ First, you need to locate where YAKMESH stores its data. The location depends on your operating system:
169
+ </p>
170
+
171
+ <h3 class="font-semibold mt-4 mb-3 text-gray-200">Windows</h3>
172
+ <pre><code class="language-bash"># Default location
173
+ %APPDATA%\yakmesh\
174
+
175
+ # Full path example
176
+ C:\Users\YourName\AppData\Roaming\yakmesh\</code></pre>
177
+
178
+ <h3 class="font-semibold mt-6 mb-3 text-gray-200">macOS</h3>
179
+ <pre><code class="language-bash"># Default location
180
+ ~/Library/Application Support/yakmesh/
181
+
182
+ # Or check with
183
+ ls -la ~/Library/Application\ Support/yakmesh/</code></pre>
184
+
185
+ <h3 class="font-semibold mt-6 mb-3 text-gray-200">Linux</h3>
186
+ <pre><code class="language-bash"># Default location
187
+ ~/.config/yakmesh/
188
+
189
+ # Or following XDG spec
190
+ $XDG_CONFIG_HOME/yakmesh/</code></pre>
191
+
192
+ <h3 class="font-semibold mt-6 mb-3 text-gray-200">Using the CLI</h3>
193
+ <pre><code class="language-bash"># Let YAKMESH tell you where it stores data
194
+ yakmesh config get data_dir
195
+
196
+ # Output example:
197
+ # data_dir: /home/user/.config/yakmesh/</code></pre>
198
+
199
+ <div class="tip-box mt-4">
200
+ <p class="text-sm"><strong>💡 Tip:</strong> If you used a custom installation path, check your
201
+ <code class="bg-gray-800 px-2 py-1 rounded">config.yaml</code> file or run
202
+ <code class="bg-gray-800 px-2 py-1 rounded">yakmesh config get</code> to see all paths.</p>
203
+ </div>
204
+ </div>
205
+
206
+ <!-- Export Identity -->
207
+ <div class="tutorial-card">
208
+ <h2 class="text-xl font-semibold mb-4">
209
+ <span class="step-number">2</span>
210
+ Export Your Node Identity
211
+ </h2>
212
+ <p class="text-gray-300 mb-4">
213
+ YAKMESH provides a convenient command to export your identity in a portable, encrypted format:
214
+ </p>
215
+
216
+ <h3 class="font-semibold mt-4 mb-3 text-gray-200">Quick Export (Encrypted)</h3>
217
+ <pre><code class="language-bash"># Export to an encrypted file
218
+ yakmesh identity export --output my-backup.yak
219
+
220
+ # You'll be prompted for a password:
221
+ # 🔐 Enter backup password: ********
222
+ # 🔐 Confirm password: ********
223
+ # ✅ Identity exported to: my-backup.yak</code></pre>
224
+ <p class="text-gray-300 mt-3">
225
+ This creates a single encrypted file containing your keys and identity. Remember the password -
226
+ you'll need it to restore!
227
+ </p>
228
+
229
+ <h3 class="font-semibold mt-6 mb-3 text-gray-200">Export with Custom Options</h3>
230
+ <pre><code class="language-bash"># Include additional metadata
231
+ yakmesh identity export --output backup.yak --include-config
232
+
233
+ # Use stronger encryption (slower but more secure)
234
+ yakmesh identity export --output backup.yak --encryption-strength high
235
+
236
+ # Export without password (not recommended)
237
+ yakmesh identity export --output backup.yak --no-encrypt</code></pre>
238
+
239
+ <div class="warning-box mt-4">
240
+ <p class="text-sm"><strong>⚠️ Important:</strong> Store your backup password somewhere safe!
241
+ If you forget it, the backup file is useless - encrypted data cannot be recovered without the password.</p>
242
+ </div>
243
+
244
+ <h3 class="font-semibold mt-6 mb-3 text-gray-200">View Export Contents (Without Secrets)</h3>
245
+ <pre><code class="language-bash"># See what's in an export file
246
+ yakmesh identity inspect my-backup.yak
247
+
248
+ # Output:
249
+ # 📦 Backup Contents:
250
+ # Node ID: doko-node-qubit-lattice-pq-a7x9
251
+ # Created: 2025-01-15 14:32:00
252
+ # Includes: keys, identity, peers
253
+ # Encrypted: Yes (AES-256-GCM)
254
+ # Size: 2.4 KB</code></pre>
255
+ </div>
256
+
257
+ <!-- Backup Data Folder -->
258
+ <div class="tutorial-card">
259
+ <h2 class="text-xl font-semibold mb-4">
260
+ <span class="step-number">3</span>
261
+ Backup Your Data Folder
262
+ </h2>
263
+ <p class="text-gray-300 mb-4">
264
+ If you want to backup your stored content (shared files, received files), you'll need to copy
265
+ the entire data folder. This can be large depending on how much content you have.
266
+ </p>
267
+
268
+ <h3 class="font-semibold mt-4 mb-3 text-gray-200">Using YAKMESH Export (Recommended)</h3>
269
+ <pre><code class="language-bash"># Export everything including content
270
+ yakmesh backup create --output full-backup.tar.gz
271
+
272
+ # This creates a compressed archive with:
273
+ # - Your identity (encrypted)
274
+ # - Your configuration
275
+ # - Your shared content
276
+ # - Your received content</code></pre>
277
+
278
+ <h3 class="font-semibold mt-6 mb-3 text-gray-200">Manual Backup (Alternative)</h3>
279
+
280
+ <p class="text-gray-300 mb-2"><strong>Windows (PowerShell):</strong></p>
281
+ <pre><code class="language-bash"># Stop YAKMESH first
282
+ yakmesh stop
283
+
284
+ # Copy the entire folder
285
+ Copy-Item -Recurse "$env:APPDATA\yakmesh" "D:\Backups\yakmesh-backup"
286
+
287
+ # Or create a zip file
288
+ Compress-Archive -Path "$env:APPDATA\yakmesh" -DestinationPath "D:\Backups\yakmesh-backup.zip"</code></pre>
289
+
290
+ <p class="text-gray-300 mt-4 mb-2"><strong>macOS / Linux:</strong></p>
291
+ <pre><code class="language-bash"># Stop YAKMESH first
292
+ yakmesh stop
293
+
294
+ # Create a tarball
295
+ tar -czvf ~/yakmesh-backup.tar.gz ~/.config/yakmesh/
296
+
297
+ # Or for macOS
298
+ tar -czvf ~/yakmesh-backup.tar.gz ~/Library/Application\ Support/yakmesh/</code></pre>
299
+
300
+ <div class="tip-box mt-4">
301
+ <p class="text-sm"><strong>💡 Tip:</strong> Always stop YAKMESH before backing up manually to avoid
302
+ copying files that are being written to. The <code class="bg-gray-800 px-2 py-1 rounded">yakmesh backup create</code>
303
+ command handles this automatically.</p>
304
+ </div>
305
+ </div>
306
+
307
+ <!-- Selective Backup -->
308
+ <div class="tutorial-card">
309
+ <h2 class="text-xl font-semibold mb-4">
310
+ <span class="step-number">4</span>
311
+ Selective Backup (Keys Only)
312
+ </h2>
313
+ <p class="text-gray-300 mb-4">
314
+ If you only care about preserving your identity (Node ID and karma), you can backup just the
315
+ keys folder. This creates a much smaller backup.
316
+ </p>
317
+
318
+ <pre><code class="language-bash"># Export just identity (smallest backup)
319
+ yakmesh identity export --output identity-only.yak
320
+
321
+ # File size: ~2-5 KB
322
+ # Contains: keys, node ID, basic config</code></pre>
323
+
324
+ <p class="text-gray-300 mt-4 mb-4">
325
+ Compare this to a full backup:
326
+ </p>
327
+
328
+ <div class="grid grid-cols-1 md:grid-cols-2 gap-4">
329
+ <div class="bg-gray-800/50 rounded-lg p-4">
330
+ <h4 class="font-semibold text-green-400 mb-2">Identity Only (~5 KB)</h4>
331
+ <ul class="text-sm text-gray-300 space-y-1">
332
+ <li>✅ Your Node ID</li>
333
+ <li>✅ Your Karma Score</li>
334
+ <li>✅ Encryption keys</li>
335
+ <li>❌ Shared files</li>
336
+ <li>❌ Downloaded content</li>
337
+ </ul>
338
+ </div>
339
+ <div class="bg-gray-800/50 rounded-lg p-4">
340
+ <h4 class="font-semibold text-blue-400 mb-2">Full Backup (varies)</h4>
341
+ <ul class="text-sm text-gray-300 space-y-1">
342
+ <li>✅ Your Node ID</li>
343
+ <li>✅ Your Karma Score</li>
344
+ <li>✅ Encryption keys</li>
345
+ <li>✅ Shared files</li>
346
+ <li>✅ Downloaded content</li>
347
+ </ul>
348
+ </div>
349
+ </div>
350
+
351
+ <div class="info-box mt-4">
352
+ <p class="text-sm"><strong>ℹ️ Recommendation:</strong> At minimum, always keep an identity backup.
353
+ Do full backups periodically if you have important content stored locally.</p>
354
+ </div>
355
+ </div>
356
+
357
+ <!-- Restore on New Machine -->
358
+ <div class="tutorial-card">
359
+ <h2 class="text-xl font-semibold mb-4">
360
+ <span class="step-number">5</span>
361
+ Restore from Backup
362
+ </h2>
363
+ <p class="text-gray-300 mb-4">
364
+ Now let's restore your backup on a new machine. First, install YAKMESH on the new computer,
365
+ then restore your identity before starting the node.
366
+ </p>
367
+
368
+ <h3 class="font-semibold mt-4 mb-3 text-gray-200">Step A: Install YAKMESH</h3>
369
+ <pre><code class="language-bash"># Install YAKMESH (don't start it yet!)
370
+ # Use your preferred installation method from the Getting Started guide
371
+
372
+ # Verify installation
373
+ yakmesh --version</code></pre>
374
+
375
+ <h3 class="font-semibold mt-6 mb-3 text-gray-200">Step B: Restore Identity</h3>
376
+ <pre><code class="language-bash"># Restore from encrypted export
377
+ yakmesh identity import my-backup.yak
378
+
379
+ # Enter your backup password when prompted:
380
+ # 🔐 Enter backup password: ********
381
+ #
382
+ # ✅ Identity restored successfully!
383
+ # Node ID: doko-node-qubit-lattice-pq-a7x9
384
+ # Keys: 3 files restored
385
+ # Config: Default settings applied</code></pre>
386
+
387
+ <h3 class="font-semibold mt-6 mb-3 text-gray-200">Step C: Restore Full Backup (Optional)</h3>
388
+ <pre><code class="language-bash"># If you have a full backup with content
389
+ yakmesh backup restore full-backup.tar.gz
390
+
391
+ # This restores:
392
+ # - Identity and keys
393
+ # - Configuration
394
+ # - Shared content
395
+ # - Downloaded files</code></pre>
396
+
397
+ <h3 class="font-semibold mt-6 mb-3 text-gray-200">Step D: Start Your Node</h3>
398
+ <pre><code class="language-bash"># Start YAKMESH with your restored identity
399
+ yakmesh start
400
+
401
+ # Verify it's using your old Node ID
402
+ yakmesh status
403
+
404
+ # 🏔️ YAKMESH Node Status
405
+ # Node ID: doko-node-qubit-lattice-pq-a7x9 ← Same as before!
406
+ # Status: 🟢 Online</code></pre>
407
+
408
+ <div class="tip-box mt-4">
409
+ <p class="text-sm"><strong>💡 Tip:</strong> After restoring, your node will reconnect to old peers
410
+ automatically. Your karma score syncs from the mesh network within a few minutes.</p>
411
+ </div>
412
+ </div>
413
+
414
+ <!-- Manual Restore -->
415
+ <div class="tutorial-card">
416
+ <h2 class="text-xl font-semibold mb-4">
417
+ <span class="step-number">6</span>
418
+ Manual Restore (If Needed)
419
+ </h2>
420
+ <p class="text-gray-300 mb-4">
421
+ If you have a manual backup (copied folder or tarball), here's how to restore it:
422
+ </p>
423
+
424
+ <h3 class="font-semibold mt-4 mb-3 text-gray-200">Windows</h3>
425
+ <pre><code class="language-bash"># Make sure YAKMESH is not running
426
+ yakmesh stop
427
+
428
+ # If the folder exists, back it up first
429
+ Move-Item "$env:APPDATA\yakmesh" "$env:APPDATA\yakmesh-old"
430
+
431
+ # Extract or copy your backup
432
+ Expand-Archive "D:\Backups\yakmesh-backup.zip" -DestinationPath "$env:APPDATA"
433
+
434
+ # Or if you copied a folder
435
+ Copy-Item -Recurse "D:\Backups\yakmesh-backup" "$env:APPDATA\yakmesh"</code></pre>
436
+
437
+ <h3 class="font-semibold mt-6 mb-3 text-gray-200">macOS / Linux</h3>
438
+ <pre><code class="language-bash"># Make sure YAKMESH is not running
439
+ yakmesh stop
440
+
441
+ # Back up existing data (if any)
442
+ mv ~/.config/yakmesh ~/.config/yakmesh-old
443
+
444
+ # Extract tarball
445
+ tar -xzvf ~/yakmesh-backup.tar.gz -C ~/
446
+
447
+ # Start YAKMESH
448
+ yakmesh start</code></pre>
449
+
450
+ <h3 class="font-semibold mt-6 mb-3 text-gray-200">Restore Keys Only (Minimal)</h3>
451
+ <pre><code class="language-bash"># If you only have the keys folder backed up
452
+ mkdir -p ~/.config/yakmesh
453
+ cp -r /path/to/backup/keys ~/.config/yakmesh/
454
+
455
+ # Let YAKMESH recreate other files
456
+ yakmesh start</code></pre>
457
+ </div>
458
+
459
+ <!-- Important Files Detail -->
460
+ <div class="tutorial-card">
461
+ <h2 class="text-xl font-semibold mb-4">📁 Important Files Explained</h2>
462
+ <p class="text-gray-300 mb-4">
463
+ Here's a deeper look at what each important file does:
464
+ </p>
465
+
466
+ <div class="space-y-4">
467
+ <div class="bg-gray-800/50 rounded-lg p-4">
468
+ <h4 class="font-semibold text-amber-400 mb-2">🔑 keys/node.key</h4>
469
+ <p class="text-sm text-gray-300">
470
+ Your private key. This is the most important file - it proves your identity on the network.
471
+ It's used to sign messages and decrypt content sent to you. <strong>NEVER share this file.</strong>
472
+ </p>
473
+ </div>
474
+
475
+ <div class="bg-gray-800/50 rounded-lg p-4">
476
+ <h4 class="font-semibold text-amber-400 mb-2">🔑 keys/signing.key</h4>
477
+ <p class="text-sm text-gray-300">
478
+ Used for cryptographic signatures on messages you send. This is derived from your main key
479
+ but kept separate for security reasons.
480
+ </p>
481
+ </div>
482
+
483
+ <div class="bg-gray-800/50 rounded-lg p-4">
484
+ <h4 class="font-semibold text-amber-400 mb-2">📄 keys/identity.json</h4>
485
+ <p class="text-sm text-gray-300">
486
+ Contains your public Node ID, creation date, and protocol version. This information is
487
+ public - it's what other nodes see when they connect to you.
488
+ </p>
489
+ </div>
490
+
491
+ <div class="bg-gray-800/50 rounded-lg p-4">
492
+ <h4 class="font-semibold text-gray-200 mb-2">📁 data/shares/</h4>
493
+ <p class="text-sm text-gray-300">
494
+ Index of files you're currently sharing. The actual files stay in their original locations;
495
+ this folder contains metadata and content hashes.
496
+ </p>
497
+ </div>
498
+
499
+ <div class="bg-gray-800/50 rounded-lg p-4">
500
+ <h4 class="font-semibold text-gray-200 mb-2">📁 data/blocks/</h4>
501
+ <p class="text-sm text-gray-300">
502
+ Content-addressed storage chunks. Files are split into blocks and stored here by their hash.
503
+ Can be regenerated from shares/received if lost.
504
+ </p>
505
+ </div>
506
+ </div>
507
+ </div>
508
+
509
+ <!-- Best Practices -->
510
+ <div class="tutorial-card">
511
+ <h2 class="text-xl font-semibold mb-4">✅ Backup Best Practices</h2>
512
+
513
+ <div class="space-y-4">
514
+ <div class="flex items-start gap-3">
515
+ <span class="text-green-400 text-xl">1.</span>
516
+ <div>
517
+ <h4 class="font-semibold text-gray-200">Use Strong Backup Passwords</h4>
518
+ <p class="text-sm text-gray-400">Use a unique, strong password for your identity export.
519
+ Consider using a password manager.</p>
520
+ </div>
521
+ </div>
522
+
523
+ <div class="flex items-start gap-3">
524
+ <span class="text-green-400 text-xl">2.</span>
525
+ <div>
526
+ <h4 class="font-semibold text-gray-200">Store Backups in Multiple Locations</h4>
527
+ <p class="text-sm text-gray-400">Keep copies on an external drive, cloud storage (encrypted),
528
+ and/or a USB drive in a safe place.</p>
529
+ </div>
530
+ </div>
531
+
532
+ <div class="flex items-start gap-3">
533
+ <span class="text-green-400 text-xl">3.</span>
534
+ <div>
535
+ <h4 class="font-semibold text-gray-200">Backup Regularly</h4>
536
+ <p class="text-sm text-gray-400">Identity backups only need to be done once (keys don't change),
537
+ but data backups should be done regularly if you're storing important content.</p>
538
+ </div>
539
+ </div>
540
+
541
+ <div class="flex items-start gap-3">
542
+ <span class="text-green-400 text-xl">4.</span>
543
+ <div>
544
+ <h4 class="font-semibold text-gray-200">Test Your Backups</h4>
545
+ <p class="text-sm text-gray-400">Periodically verify your backups work by using
546
+ <code class="bg-gray-800 px-2 py-1 rounded">yakmesh identity inspect</code> to check
547
+ the backup file is readable.</p>
548
+ </div>
549
+ </div>
550
+
551
+ <div class="flex items-start gap-3">
552
+ <span class="text-green-400 text-xl">5.</span>
553
+ <div>
554
+ <h4 class="font-semibold text-gray-200">Never Share Key Files</h4>
555
+ <p class="text-sm text-gray-400">Your private keys should never be shared, emailed, or
556
+ uploaded unencrypted. The encrypted export file is safe to store anywhere.</p>
557
+ </div>
558
+ </div>
559
+ </div>
560
+ </div>
561
+
562
+ <!-- Troubleshooting -->
563
+ <div class="tutorial-card">
564
+ <h2 class="text-xl font-semibold mb-4">🔧 Troubleshooting</h2>
565
+
566
+ <h3 class="font-semibold mt-4 mb-2 text-gray-200">"Wrong password" error</h3>
567
+ <p class="text-gray-300 mb-4">
568
+ Make sure you're using the exact password from when you created the backup. Passwords are
569
+ case-sensitive. If you've forgotten it, the backup cannot be recovered.
570
+ </p>
571
+
572
+ <h3 class="font-semibold mt-4 mb-2 text-gray-200">"Corrupted backup file" error</h3>
573
+ <p class="text-gray-300 mb-4">
574
+ The backup file may have been damaged during transfer. Check if you have another copy.
575
+ For manual backups, try extracting individual files instead of the whole archive.
576
+ </p>
577
+
578
+ <h3 class="font-semibold mt-4 mb-2 text-gray-200">Node ID changed after restore</h3>
579
+ <p class="text-gray-300 mb-4">
580
+ This means the restore didn't work correctly. Stop YAKMESH, delete the new identity,
581
+ and try the restore again. Make sure you're restoring before first starting the node.
582
+ </p>
583
+
584
+ <h3 class="font-semibold mt-4 mb-2 text-gray-200">Karma score is zero after restore</h3>
585
+ <p class="text-gray-300 mb-4">
586
+ Your karma score is synchronized from the network, not stored in your backup. Give it
587
+ a few minutes after starting your node - it will sync automatically from peer attestations.
588
+ </p>
589
+
590
+ <h3 class="font-semibold mt-4 mb-2 text-gray-200">"Permission denied" on Linux/macOS</h3>
591
+ <pre><code class="language-bash"># Fix permissions on restored files
592
+ chmod 700 ~/.config/yakmesh/keys/
593
+ chmod 600 ~/.config/yakmesh/keys/*</code></pre>
594
+ </div>
595
+
596
+ <!-- Quick Reference -->
597
+ <div class="tutorial-card">
598
+ <h2 class="text-xl font-semibold mb-4 theme-accent">📋 Quick Reference</h2>
599
+
600
+ <h3 class="font-semibold mt-4 mb-3 text-gray-200">Essential Commands</h3>
601
+ <pre><code class="language-bash"># Export identity (encrypted)
602
+ yakmesh identity export --output backup.yak
603
+
604
+ # Import identity from backup
605
+ yakmesh identity import backup.yak
606
+
607
+ # Create full backup
608
+ yakmesh backup create --output full-backup.tar.gz
609
+
610
+ # Restore full backup
611
+ yakmesh backup restore full-backup.tar.gz
612
+
613
+ # Check backup file contents
614
+ yakmesh identity inspect backup.yak
615
+
616
+ # Find your data directory
617
+ yakmesh config get data_dir</code></pre>
618
+
619
+ <h3 class="font-semibold mt-6 mb-3 text-gray-200">Files to Backup</h3>
620
+ <ul class="list-disc list-inside text-gray-300 space-y-1">
621
+ <li><strong>Critical:</strong> <code class="bg-gray-800 px-2 py-1 rounded">keys/</code> folder</li>
622
+ <li><strong>Recommended:</strong> <code class="bg-gray-800 px-2 py-1 rounded">data/</code> folder</li>
623
+ <li><strong>Optional:</strong> <code class="bg-gray-800 px-2 py-1 rounded">config.yaml</code></li>
624
+ </ul>
625
+ </div>
626
+
627
+ <!-- Navigation Footer -->
628
+ <div class="border-t border-mountain-700 mt-12 pt-8">
629
+ <div class="flex flex-col sm:flex-row gap-4">
630
+ <a href="dashboard.html" class="flex-1 block bg-mountain-800 border border-mountain-700 rounded-xl p-4 hover:border-emerald-500 transition group">
631
+ <div class="text-xs text-mountain-400 mb-1">← Previous</div>
632
+ <div class="flex items-center gap-2">
633
+ <span class="text-xl">📊</span>
634
+ <span class="font-semibold group-hover:text-emerald-400">Understanding the Dashboard</span>
635
+ </div>
636
+ </a>
637
+ <a href="trust-karma.html" class="flex-1 block bg-mountain-800 border border-mountain-700 rounded-xl p-4 hover:border-emerald-500 transition group">
638
+ <div class="text-xs text-mountain-400 mb-1">Next →</div>
639
+ <div class="flex items-center gap-2">
640
+ <span class="text-xl">☯️</span>
641
+ <span class="font-semibold group-hover:text-emerald-400">Trust & Reputation</span>
642
+ </div>
643
+ </a>
644
+ </div>
645
+ </div>
646
+ </div>
647
+ </main>
648
+
649
+ <script src="../prism.min.js"></script>
650
+ <script src="../prism-javascript.min.js"></script>
651
+ <script src="../prism-bash.min.js"></script>
652
+ <script src="../docs.js"></script>
653
+ </body>
654
+ </html>