yakmesh 2.8.2 → 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 (232) hide show
  1. package/CHANGELOG.md +637 -0
  2. package/CONTRIBUTING.md +42 -0
  3. package/Caddyfile +77 -0
  4. package/README.md +119 -29
  5. package/adapters/adapter-mlv-bible/README.md +124 -0
  6. package/adapters/adapter-mlv-bible/index.js +400 -0
  7. package/adapters/chat-mod-adapter.js +532 -0
  8. package/adapters/content-adapter.js +273 -0
  9. package/content/api.js +50 -41
  10. package/content/index.js +2 -2
  11. package/content/store.js +355 -173
  12. package/dashboard/index.html +19 -3
  13. package/database/replication.js +117 -37
  14. package/docs/CRYPTO-AGILITY.md +204 -0
  15. package/docs/MTLS-RESEARCH.md +367 -0
  16. package/docs/NAMCHE-SPEC.md +681 -0
  17. package/docs/PEERQUANTA-YAKMESH-INTEGRATION.md +407 -0
  18. package/docs/PRECISION-DISCLOSURE.md +96 -0
  19. package/docs/README.md +76 -0
  20. package/docs/ROADMAP-2.4.0.md +447 -0
  21. package/docs/ROADMAP-2.5.0.md +244 -0
  22. package/docs/SECURITY-AUDIT-REPORT.md +306 -0
  23. package/docs/SST-INTEGRATION.md +712 -0
  24. package/docs/STEADYWATCH-IMPLEMENTATION.md +303 -0
  25. package/docs/TERNARY-AUDIT-REPORT.md +247 -0
  26. package/docs/TME-FAQ.md +221 -0
  27. package/docs/WHITEPAPER.md +623 -0
  28. package/docs/adapters.html +1001 -0
  29. package/docs/advanced-systems.html +1045 -0
  30. package/docs/annex.html +1046 -0
  31. package/docs/api.html +970 -0
  32. package/docs/business/response-templates.md +160 -0
  33. package/docs/c2c.html +1225 -0
  34. package/docs/cli.html +1332 -0
  35. package/docs/configuration.html +1248 -0
  36. package/docs/darshan.html +1085 -0
  37. package/docs/dharma.html +966 -0
  38. package/docs/docs-bundle.html +1075 -0
  39. package/docs/docs.css +3120 -0
  40. package/docs/docs.js +556 -0
  41. package/docs/doko.html +969 -0
  42. package/docs/geo-proof.html +858 -0
  43. package/docs/getting-started.html +840 -0
  44. package/docs/gumba-tutorial.html +1144 -0
  45. package/docs/gumba.html +1098 -0
  46. package/docs/index.html +914 -0
  47. package/docs/jhilke.html +1312 -0
  48. package/docs/karma.html +1100 -0
  49. package/docs/katha.html +1037 -0
  50. package/docs/lama.html +978 -0
  51. package/docs/mandala.html +1067 -0
  52. package/docs/mani.html +964 -0
  53. package/docs/mantra.html +967 -0
  54. package/docs/mesh.html +1409 -0
  55. package/docs/nakpak.html +869 -0
  56. package/docs/namche.html +928 -0
  57. package/docs/nav-order.json +53 -0
  58. package/docs/prahari.html +1043 -0
  59. package/docs/prism-bash.min.js +1 -0
  60. package/docs/prism-javascript.min.js +1 -0
  61. package/docs/prism-json.min.js +1 -0
  62. package/docs/prism-tomorrow.min.css +1 -0
  63. package/docs/prism.min.js +1 -0
  64. package/docs/privacy.html +699 -0
  65. package/docs/quick-reference.html +1181 -0
  66. package/docs/sakshi.html +1402 -0
  67. package/docs/sandboxing.md +386 -0
  68. package/docs/seva.html +911 -0
  69. package/docs/sherpa.html +871 -0
  70. package/docs/studio.html +860 -0
  71. package/docs/stupa.html +995 -0
  72. package/docs/tailwind.min.css +2 -0
  73. package/docs/tattva.html +1332 -0
  74. package/docs/terms.html +686 -0
  75. package/docs/time-server-deployment.md +166 -0
  76. package/docs/time-sources.html +1392 -0
  77. package/docs/tivra.html +1127 -0
  78. package/docs/trademark-policy.html +686 -0
  79. package/docs/tribhuj.html +1183 -0
  80. package/docs/trust-security.html +1029 -0
  81. package/docs/tutorials/backup-recovery.html +654 -0
  82. package/docs/tutorials/dashboard.html +604 -0
  83. package/docs/tutorials/domain-setup.html +605 -0
  84. package/docs/tutorials/host-website.html +456 -0
  85. package/docs/tutorials/mesh-network.html +505 -0
  86. package/docs/tutorials/mobile-access.html +445 -0
  87. package/docs/tutorials/privacy.html +467 -0
  88. package/docs/tutorials/raspberry-pi.html +600 -0
  89. package/docs/tutorials/security-basics.html +539 -0
  90. package/docs/tutorials/share-files.html +431 -0
  91. package/docs/tutorials/troubleshooting.html +637 -0
  92. package/docs/tutorials/trust-karma.html +419 -0
  93. package/docs/tutorials/yak-protocol.html +456 -0
  94. package/docs/tutorials.html +1034 -0
  95. package/docs/vani.html +1270 -0
  96. package/docs/webserver.html +809 -0
  97. package/docs/yak-protocol.html +940 -0
  98. package/docs/yak-timeserver-design.md +475 -0
  99. package/docs/yakapp.html +1015 -0
  100. package/docs/ypc27.html +1069 -0
  101. package/docs/yurt.html +1344 -0
  102. package/embedded-docs/bundle.js +334 -74
  103. package/gossip/protocol.js +247 -27
  104. package/identity/key-resolver.js +262 -0
  105. package/identity/machine-seed.js +632 -0
  106. package/identity/node-key.js +669 -368
  107. package/identity/tribhuj-ratchet.js +506 -0
  108. package/knowledge-base.js +37 -8
  109. package/launcher/yakmesh.bat +62 -0
  110. package/launcher/yakmesh.sh +70 -0
  111. package/mesh/annex.js +462 -108
  112. package/mesh/beacon-broadcast.js +113 -1
  113. package/mesh/darshan.js +1718 -0
  114. package/mesh/gumba.js +1567 -0
  115. package/mesh/jhilke.js +651 -0
  116. package/mesh/katha.js +1012 -0
  117. package/mesh/nakpak-routing.js +8 -5
  118. package/mesh/network.js +724 -34
  119. package/mesh/pulse-sync.js +4 -1
  120. package/mesh/rate-limiter.js +127 -15
  121. package/mesh/seva.js +526 -0
  122. package/mesh/sherpa-discovery.js +89 -8
  123. package/mesh/sybil-defense.js +19 -5
  124. package/mesh/temporal-encoder.js +4 -3
  125. package/mesh/vani.js +1364 -0
  126. package/mesh/yurt.js +1340 -0
  127. package/models/entropy-sentinel.onnx +0 -0
  128. package/models/karma-trust.onnx +0 -0
  129. package/models/manifest.json +43 -0
  130. package/models/sakshi-anomaly.onnx +0 -0
  131. package/oracle/code-proof-protocol.js +7 -6
  132. package/oracle/codebase-lock.js +257 -28
  133. package/oracle/index.js +74 -15
  134. package/oracle/ma902-snmp.js +678 -0
  135. package/oracle/module-sealer.js +5 -3
  136. package/oracle/network-identity.js +16 -0
  137. package/oracle/packet-checksum.js +201 -0
  138. package/oracle/sst.js +579 -0
  139. package/oracle/ternary-144t.js +714 -0
  140. package/oracle/ternary-ml.js +481 -0
  141. package/oracle/time-api.js +239 -0
  142. package/oracle/time-source.js +137 -47
  143. package/oracle/validation-oracle-hardened.js +1111 -1071
  144. package/oracle/validation-oracle.js +4 -2
  145. package/oracle/ypc27.js +211 -0
  146. package/package.json +20 -3
  147. package/protocol/yak-handler.js +35 -9
  148. package/protocol/yak-protocol.js +28 -13
  149. package/reference/cpp/yakmesh_mceliece_shard.cpp +168 -0
  150. package/reference/cpp/yakmesh_ypc27.cpp +179 -0
  151. package/sbom.json +87 -0
  152. package/scripts/security-audit.mjs +264 -0
  153. package/scripts/update-docs-nav.js +194 -0
  154. package/scripts/update-docs-sidebar.cjs +164 -0
  155. package/security/crypto-config.js +4 -3
  156. package/security/dharma-moderation.js +517 -0
  157. package/security/doko-identity.js +193 -143
  158. package/security/domain-consensus.js +86 -85
  159. package/security/fs-hardening.js +620 -0
  160. package/security/hardware-attestation.js +5 -3
  161. package/security/hybrid-trust.js +227 -87
  162. package/security/karma-rate-limiter.js +692 -0
  163. package/security/khata-protocol.js +22 -21
  164. package/security/khata-trust-integration.js +277 -150
  165. package/security/memory-safety.js +635 -0
  166. package/security/mesh-auth.js +11 -10
  167. package/security/mesh-revocation.js +373 -5
  168. package/security/namche-gateway.js +298 -69
  169. package/security/sakshi.js +460 -3
  170. package/security/sangha.js +770 -0
  171. package/security/secure-config.js +473 -0
  172. package/security/silicon-parity.js +13 -10
  173. package/security/steadywatch.js +1142 -0
  174. package/security/strike-system.js +32 -3
  175. package/security/temporal-signing.js +488 -0
  176. package/security/trit-commitment.js +464 -0
  177. package/server/crypto/annex.js +247 -0
  178. package/server/darshan-api.js +343 -0
  179. package/server/index.js +3259 -362
  180. package/server/komm-api.js +668 -0
  181. package/utils/accel.js +2273 -0
  182. package/utils/ternary-id.js +79 -0
  183. package/utils/verify-worker.js +57 -0
  184. package/webserver/index.js +95 -5
  185. package/assets/yakmesh-logo.png +0 -0
  186. package/assets/yakmesh-logo.svg +0 -80
  187. package/assets/yakmesh-logo2.png +0 -0
  188. package/assets/yakmesh-logo2sm.png +0 -0
  189. package/assets/ymsm.png +0 -0
  190. package/website/assets/silhouettes/adapters.svg +0 -107
  191. package/website/assets/silhouettes/api-endpoints.svg +0 -115
  192. package/website/assets/silhouettes/atomic-clock.svg +0 -83
  193. package/website/assets/silhouettes/base-camp.svg +0 -81
  194. package/website/assets/silhouettes/bridge.svg +0 -69
  195. package/website/assets/silhouettes/docs-bundle.svg +0 -113
  196. package/website/assets/silhouettes/doko-basket.svg +0 -70
  197. package/website/assets/silhouettes/fortress.svg +0 -93
  198. package/website/assets/silhouettes/gateway.svg +0 -54
  199. package/website/assets/silhouettes/gears.svg +0 -93
  200. package/website/assets/silhouettes/globe-satellite.svg +0 -67
  201. package/website/assets/silhouettes/karma-wheel.svg +0 -137
  202. package/website/assets/silhouettes/lama-council.svg +0 -141
  203. package/website/assets/silhouettes/mandala-network.svg +0 -169
  204. package/website/assets/silhouettes/mani-stones.svg +0 -149
  205. package/website/assets/silhouettes/mantra-wheel.svg +0 -116
  206. package/website/assets/silhouettes/mesh-nodes.svg +0 -113
  207. package/website/assets/silhouettes/nakpak.svg +0 -56
  208. package/website/assets/silhouettes/peak-lightning.svg +0 -73
  209. package/website/assets/silhouettes/sherpa.svg +0 -69
  210. package/website/assets/silhouettes/stupa-tower.svg +0 -119
  211. package/website/assets/silhouettes/tattva-eye.svg +0 -78
  212. package/website/assets/silhouettes/terminal.svg +0 -74
  213. package/website/assets/silhouettes/webserver.svg +0 -145
  214. package/website/assets/silhouettes/yak.svg +0 -78
  215. package/website/assets/yakmesh-logo.png +0 -0
  216. package/website/assets/yakmesh-logo.webp +0 -0
  217. package/website/assets/yakmesh-logo128x140.webp +0 -0
  218. package/website/assets/yakmesh-logo2.png +0 -0
  219. package/website/assets/yakmesh-logo2.svg +0 -51
  220. package/website/assets/yakmesh-logo40x44.webp +0 -0
  221. package/website/assets/yakmesh.gif +0 -0
  222. package/website/assets/yakmesh.ico +0 -0
  223. package/website/assets/yakmesh.jpg +0 -0
  224. package/website/assets/yakmesh.pdf +0 -0
  225. package/website/assets/yakmesh.png +0 -0
  226. package/website/assets/yakmesh.svg +0 -70
  227. package/website/assets/yakmesh128.webp +0 -0
  228. package/website/assets/yakmesh32.png +0 -0
  229. package/website/assets/yakmesh32.svg +0 -65
  230. package/website/assets/yakmesh32o.ico +0 -2
  231. package/website/assets/yakmesh32o.svg +0 -65
  232. package/website/assets/yakmesh32o.svgz +0 -0
@@ -0,0 +1,431 @@
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>Share Files with Friends - YAKMESH Tutorials</title>
10
+ <meta name="description" content="Learn how to share files and folders with friends using YAKMESH peer-to-peer network. No cloud uploads required - share directly from your device.">
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
+ .tip-box { background: rgba(16, 185, 129, 0.1); border: 1px solid #10b981; border-radius: 0.5rem; padding: 1rem; margin: 1rem 0; }
23
+ .info-box { background: rgba(59, 130, 246, 0.1); border: 1px solid #3b82f6; border-radius: 0.5rem; padding: 1rem; margin: 1rem 0; }
24
+ </style>
25
+ </head>
26
+ <body class="bg-mountain-900 text-white min-h-screen">
27
+
28
+ <nav class="docs-sidebar" id="sidebar">
29
+ <a href="../index.html" class="sidebar-logo">
30
+ <span class="logo-icon">🏔️</span>
31
+ <span class="logo-text">Yakmesh</span>
32
+ </a>
33
+ <a href="/dashboard" class="sidebar-dashboard-link"><span>📊</span> <span>Dashboard</span></a>
34
+ <ul class="sidebar-nav">
35
+ <li><a href="../index.html"><span>🏠</span> <span>Overview</span></a></li>
36
+ <li><a href="../getting-started.html"><span>🚀</span> <span>Getting Started</span></a></li>
37
+ <li><a href="../tutorials.html"><span>📖</span> <span>Tutorials</span></a></li>
38
+ <li><a href="../yak-protocol.html"><span class="yak-icon"></span> <span>YAK://</span></a></li>
39
+ <li><a href="../annex.html"><span>🌉</span> <span>ANNEX</span></a></li>
40
+ <li><a href="../nakpak.html"><span>🎒</span> <span>NAKPAK</span></a></li>
41
+ <li><a href="../namche.html"><span>🚪</span> <span>NAMCHE</span></a></li>
42
+ <li><a href="../doko.html"><span>🧺</span> <span>DOKO</span></a></li>
43
+ <li><a href="../sherpa.html"><span>🧗</span> <span>SHERPA</span></a></li>
44
+ <li><a href="../mandala.html"><span>🌐</span> <span>MANDALA</span></a></li>
45
+ <li><a href="../mantra.html"><span>🕉️</span> <span>MANTRA</span></a></li>
46
+ <li><a href="../gumba.html"><span>🛕</span> <span>GUMBA</span></a></li>
47
+ <li><a href="../yurt.html"><span>🏕️</span> <span>YURT</span></a></li>
48
+ <li><a href="../katha.html"><span>💬</span> <span>KATHA</span></a></li>
49
+ <li><a href="../vani.html"><span>🎙️</span> <span>VANI</span></a></li>
50
+ <li><a href="../darshan.html"><span>👁️</span> <span>DARSHAN</span></a></li>
51
+ <li><a href="../stupa.html"><span>🛕</span> <span>STUPA</span></a></li>
52
+ <li><a href="../lama.html"><span>🔮</span> <span>LAMA</span></a></li>
53
+ <li><a href="../mani.html"><span>⏱️</span> <span>MANI</span></a></li>
54
+ <li><a href="../karma.html"><span>☯️</span> <span>KARMA</span></a></li>
55
+ <li><a href="../tattva.html"><span>🔯</span> <span>TATTVA</span></a></li>
56
+ <li><a href="../tribhuj.html"><span>🔺</span> <span>TRIBHUJ</span></a></li>
57
+ <li><a href="../ypc27.html"><span>🔐</span> <span>YPC-27</span></a></li>
58
+ <li><a href="../sakshi.html"><span>👁️</span> <span>SAKSHI</span></a></li>
59
+ <li><a href="../geo-proof.html"><span>🌍</span> <span>PRAMAAN</span></a></li>
60
+ <li><a href="../trust-security.html"><span>🔒</span> <span>SURAKSHA</span></a></li>
61
+ <li><a href="../docs-bundle.html"><span>📚</span> <span>GRANTH</span></a></li>
62
+ <li><a href="../api.html"><span>📡</span> <span>API</span></a></li>
63
+ <li><a href="../adapters.html"><span>🔌</span> <span>Adapters</span></a></li>
64
+ <li><a href="../studio.html"><span>🎨</span> <span>Studio</span></a></li>
65
+ <li><a href="../quick-reference.html"><span>📋</span> <span>Quick Ref</span></a></li>
66
+ </ul>
67
+ </nav>
68
+
69
+ <button class="sidebar-toggle" id="sidebarToggle" title="Toggle sidebar">☰</button>
70
+ <div class="sidebar-overlay" id="sidebarOverlay"></div>
71
+
72
+ <main class="docs-main" id="mainContent">
73
+ <div class="docs-content">
74
+ <div class="mb-6">
75
+ <a href="../tutorials.html" class="theme-accent hover:underline">← Back to Tutorials</a>
76
+ </div>
77
+
78
+ <!-- Header -->
79
+ <header class="mb-8">
80
+ <div class="flex items-center gap-3 mb-4">
81
+ <span class="text-4xl">📤</span>
82
+ <div>
83
+ <h1 class="text-3xl font-bold">Share Files with Friends</h1>
84
+ <p class="text-gray-400">Learn to share files directly from your device - no cloud uploads required</p>
85
+ </div>
86
+ </div>
87
+ <div class="flex items-center gap-4 text-sm text-gray-400">
88
+ <span class="theme-badge px-3 py-1 rounded-full">Beginner</span>
89
+ <span>⏱️ 5 min read</span>
90
+ <span>📁 DOKO Protocol</span>
91
+ </div>
92
+ </header>
93
+
94
+ <!-- Introduction -->
95
+ <div class="tutorial-card">
96
+ <h2 class="text-xl font-semibold mb-4 theme-accent">What You'll Learn</h2>
97
+ <p class="text-gray-300 mb-4">
98
+ In this tutorial, you'll learn how to share files and folders with friends using YAKMESH's DOKO (Distributed Object Keeper and Organizer) system.
99
+ Unlike traditional file sharing services, YAKMESH doesn't upload your files to any cloud server. Instead, your files stay on your device and are
100
+ shared directly with your friends through an encrypted peer-to-peer connection.
101
+ </p>
102
+ <ul class="list-disc list-inside text-gray-300 space-y-2">
103
+ <li>Share a folder from your computer</li>
104
+ <li>Generate a shareable link</li>
105
+ <li>Send the link to a friend</li>
106
+ <li>Understand how DOKO links work</li>
107
+ </ul>
108
+ </div>
109
+
110
+ <!-- Prerequisites -->
111
+ <div class="tutorial-card">
112
+ <h2 class="text-xl font-semibold mb-4">📋 Before You Start</h2>
113
+ <p class="text-gray-300 mb-4">Make sure you have:</p>
114
+ <ul class="list-disc list-inside text-gray-300 space-y-2">
115
+ <li>YAKMESH installed and running on your computer</li>
116
+ <li>Your node online and connected to the mesh (check your dashboard)</li>
117
+ <li>A folder or file you want to share</li>
118
+ </ul>
119
+ <div class="tip-box mt-4">
120
+ <p class="text-sm"><strong>💡 Tip:</strong> If you haven't set up YAKMESH yet, check out the <a href="../getting-started.html" class="theme-accent hover:underline">Getting Started guide</a> first.</p>
121
+ </div>
122
+ </div>
123
+
124
+ <!-- Step 1 -->
125
+ <div class="tutorial-card">
126
+ <h2 class="text-xl font-semibold mb-4">
127
+ <span class="step-number">1</span>
128
+ Choose What to Share
129
+ </h2>
130
+ <p class="text-gray-300 mb-4">
131
+ First, decide which folder or file you want to share. For this tutorial, let's say you have a folder called
132
+ <code class="bg-gray-800 px-2 py-1 rounded">vacation-photos</code> in your Documents folder that you want to share with a friend.
133
+ </p>
134
+ <p class="text-gray-300 mb-4">
135
+ Open your terminal or command prompt and navigate to the location of your files:
136
+ </p>
137
+ <pre><code class="language-bash"># On Windows
138
+ cd C:\Users\YourName\Documents
139
+
140
+ # On macOS/Linux
141
+ cd ~/Documents</code></pre>
142
+ <p class="text-gray-300 mt-4">
143
+ Verify your folder is there:
144
+ </p>
145
+ <pre><code class="language-bash"># List contents
146
+ ls -la vacation-photos/</code></pre>
147
+ </div>
148
+
149
+ <!-- Step 2 -->
150
+ <div class="tutorial-card">
151
+ <h2 class="text-xl font-semibold mb-4">
152
+ <span class="step-number">2</span>
153
+ Share the Folder with YAKMESH
154
+ </h2>
155
+ <p class="text-gray-300 mb-4">
156
+ Now, use the <code class="bg-gray-800 px-2 py-1 rounded">yakmesh share</code> command to create a shareable link for your folder:
157
+ </p>
158
+ <pre><code class="language-bash"># Share the entire folder
159
+ yakmesh share vacation-photos/</code></pre>
160
+ <p class="text-gray-300 mt-4">
161
+ You'll see output like this:
162
+ </p>
163
+ <pre><code class="language-bash">📤 Sharing: vacation-photos/
164
+ Files: 47 items (234.5 MB total)
165
+
166
+ ✅ Share created successfully!
167
+
168
+ 🔗 Share Link:
169
+ yak://qubit-lattice-prism/vacation-photos
170
+
171
+ 📋 Or use the compact iO code:
172
+ qubit-lattice-prism
173
+
174
+ ⏰ Share expires: Never (persistent)
175
+ 🔒 Encryption: End-to-end encrypted</code></pre>
176
+
177
+ <div class="info-box mt-4">
178
+ <p class="text-sm"><strong>ℹ️ What happened?</strong> YAKMESH indexed your files, created a cryptographic content fingerprint,
179
+ and generated a human-readable <strong>iO name</strong> (like "qubit-lattice-prism") that's easy to share verbally.
180
+ Your files stay on your device - nothing is uploaded anywhere.</p>
181
+ </div>
182
+
183
+ <div class="tip-box mt-4">
184
+ <p class="text-sm"><strong>💡 Why iO names?</strong> Instead of ugly hashes like "QmX7k2n...", YAKMESH uses a 256-word
185
+ quantum-themed wordlist to create memorable 3-word codes. Each word encodes 8 bits of the content fingerprint,
186
+ giving you 24 bits of uniqueness - enough for millions of distinct shares.</p>
187
+ </div>
188
+ </div>
189
+
190
+ <!-- Step 3 -->
191
+ <div class="tutorial-card">
192
+ <h2 class="text-xl font-semibold mb-4">
193
+ <span class="step-number">3</span>
194
+ Customize Your Share (Optional)
195
+ </h2>
196
+ <p class="text-gray-300 mb-4">
197
+ The basic share command works great, but you can customize it with additional options:
198
+ </p>
199
+
200
+ <h3 class="font-semibold mt-6 mb-3 text-gray-200">Set an Expiration Time</h3>
201
+ <pre><code class="language-bash"># Share expires in 7 days
202
+ yakmesh share vacation-photos/ --expires 7d
203
+
204
+ # Share expires in 24 hours
205
+ yakmesh share vacation-photos/ --expires 24h</code></pre>
206
+
207
+ <h3 class="font-semibold mt-6 mb-3 text-gray-200">Limit Number of Downloads</h3>
208
+ <pre><code class="language-bash"># Only allow 3 downloads
209
+ yakmesh share vacation-photos/ --max-downloads 3</code></pre>
210
+
211
+ <h3 class="font-semibold mt-6 mb-3 text-gray-200">Password Protect the Share</h3>
212
+ <pre><code class="language-bash"># Require a password to access
213
+ yakmesh share vacation-photos/ --password "secretcode123"</code></pre>
214
+
215
+ <h3 class="font-semibold mt-6 mb-3 text-gray-200">Combine Options</h3>
216
+ <pre><code class="language-bash"># Expires in 2 days, max 5 downloads, password protected
217
+ yakmesh share vacation-photos/ --expires 2d --max-downloads 5 --password "familytrip"</code></pre>
218
+ </div>
219
+
220
+ <!-- Step 4 -->
221
+ <div class="tutorial-card">
222
+ <h2 class="text-xl font-semibold mb-4">
223
+ <span class="step-number">4</span>
224
+ Send the Link to Your Friend
225
+ </h2>
226
+ <p class="text-gray-300 mb-4">
227
+ Copy the share link and send it to your friend using any messaging app, email, or however you prefer.
228
+ There are two formats you can use:
229
+ </p>
230
+
231
+ <h3 class="font-semibold mt-4 mb-3 text-gray-200">Full yak:// Link</h3>
232
+ <pre><code class="language-bash">yak://qubit-lattice-prism/vacation-photos</code></pre>
233
+ <p class="text-gray-300 mt-2">
234
+ This link can be clicked if your friend has YAKMESH installed - it opens the download automatically.
235
+ The human-readable words ("qubit-lattice-prism") uniquely identify your content.
236
+ </p>
237
+
238
+ <h3 class="font-semibold mt-6 mb-3 text-gray-200">iO Code (for verbal sharing)</h3>
239
+ <pre><code class="language-bash">qubit-lattice-prism</code></pre>
240
+ <p class="text-gray-300 mt-2">
241
+ Just tell your friend these three words! They can fetch it with:
242
+ </p>
243
+ <pre><code class="language-bash">yakmesh fetch qubit-lattice-prism</code></pre>
244
+ <p class="text-gray-300 mt-2">
245
+ No typing long hashes - just memorable quantum words.
246
+ </p>
247
+
248
+ <div class="warning-box mt-4">
249
+ <p class="text-sm"><strong>⚠️ Important:</strong> Your computer must be online and running YAKMESH for your friend to download the files.
250
+ If you shut down your computer, the share will be temporarily unavailable until you come back online.</p>
251
+ </div>
252
+ </div>
253
+
254
+ <!-- Step 5 -->
255
+ <div class="tutorial-card">
256
+ <h2 class="text-xl font-semibold mb-4">
257
+ <span class="step-number">5</span>
258
+ Your Friend Downloads the Files
259
+ </h2>
260
+ <p class="text-gray-300 mb-4">
261
+ When your friend receives the link, they can download the files using these methods:
262
+ </p>
263
+
264
+ <h3 class="font-semibold mt-4 mb-3 text-gray-200">Method A: Click the Link</h3>
265
+ <p class="text-gray-300 mb-2">
266
+ If they have YAKMESH installed, clicking the <code class="bg-gray-800 px-2 py-1 rounded">yakmesh://</code> link
267
+ will open the download interface automatically.
268
+ </p>
269
+
270
+ <h3 class="font-semibold mt-6 mb-3 text-gray-200">Method B: Use the Command Line</h3>
271
+ <pre><code class="language-bash"># Using the iO code (easy to share verbally!)
272
+ yakmesh fetch qubit-lattice-prism
273
+
274
+ # Using the full yak:// link
275
+ yakmesh fetch "yak://qubit-lattice-prism/vacation-photos"
276
+
277
+ # Download to a specific folder
278
+ yakmesh fetch qubit-lattice-prism --output ~/Downloads/vacation-pics/</code></pre>
279
+
280
+ <h3 class="font-semibold mt-6 mb-3 text-gray-200">Method C: Use the Dashboard</h3>
281
+ <p class="text-gray-300">
282
+ Open the YAKMESH dashboard, click "Receive Files", and paste the share link or code.
283
+ </p>
284
+ </div>
285
+
286
+ <!-- Managing Shares -->
287
+ <div class="tutorial-card">
288
+ <h2 class="text-xl font-semibold mb-4">
289
+ <span class="step-number">6</span>
290
+ Manage Your Active Shares
291
+ </h2>
292
+ <p class="text-gray-300 mb-4">
293
+ You can view and manage all your active shares using the <code class="bg-gray-800 px-2 py-1 rounded">yakmesh doko</code> commands:
294
+ </p>
295
+
296
+ <h3 class="font-semibold mt-4 mb-3 text-gray-200">List All Active Shares</h3>
297
+ <pre><code class="language-bash">yakmesh share list</code></pre>
298
+ <p class="text-gray-300 mt-2">Output example:</p>
299
+ <pre><code class="language-bash">📋 Your Active Shares:
300
+
301
+ iO Name Description Size Downloads Expires
302
+ ─────────────────────────────────────────────────────────────────────────
303
+ qubit-lattice-prism vacation-photos 234.5 MB 2/∞ Never
304
+ photon-cipher-node work-documents 12.3 MB 0/5 2d 14h
305
+ fermion-hash-crystal birthday-video 1.2 GB 1/1 Expired
306
+
307
+ Total: 3 shares (1.45 GB)</code></pre>
308
+
309
+ <h3 class="font-semibold mt-6 mb-3 text-gray-200">Get Details About a Specific Share</h3>
310
+ <pre><code class="language-bash">yakmesh share info qubit-lattice-prism</code></pre>
311
+
312
+ <h3 class="font-semibold mt-6 mb-3 text-gray-200">Stop Sharing</h3>
313
+ <pre><code class="language-bash"># Stop a specific share
314
+ yakmesh share remove qubit-lattice-prism
315
+
316
+ # Stop all shares
317
+ yakmesh share clear --all</code></pre>
318
+
319
+ <h3 class="font-semibold mt-6 mb-3 text-gray-200">Extend Expiration</h3>
320
+ <pre><code class="language-bash"># Add 7 more days to an expiring share
321
+ yakmesh share extend photon-cipher-node --add 7d</code></pre>
322
+ </div>
323
+
324
+ <!-- How It Works -->
325
+ <div class="tutorial-card">
326
+ <h2 class="text-xl font-semibold mb-4">🔍 How DOKO Links Work</h2>
327
+ <p class="text-gray-300 mb-4">
328
+ Understanding what happens behind the scenes helps you use YAKMESH more effectively:
329
+ </p>
330
+
331
+ <ol class="list-decimal list-inside text-gray-300 space-y-4">
332
+ <li>
333
+ <strong class="text-white">Content Fingerprinting:</strong> When you share a folder, YAKMESH creates a unique cryptographic
334
+ fingerprint of your content. This is then converted to a human-readable <strong>iO name</strong>
335
+ (like "qubit-lattice-prism") that you can easily share verbally.
336
+ </li>
337
+ <li>
338
+ <strong class="text-white">Mesh Registration:</strong> Your node announces to the mesh network that it has this content
339
+ available. Other nodes record this information but don't download the actual files.
340
+ </li>
341
+ <li>
342
+ <strong class="text-white">Direct Connection:</strong> When your friend requests the files, their node finds yours on the
343
+ mesh and establishes a direct encrypted connection. No middleman servers are involved.
344
+ </li>
345
+ <li>
346
+ <strong class="text-white">Chunk Transfer:</strong> Files are sent in small encrypted chunks. If the connection is interrupted,
347
+ the download can resume where it left off.
348
+ </li>
349
+ <li>
350
+ <strong class="text-white">Verification:</strong> Your friend's node verifies that the received content matches the
351
+ fingerprint in the iO name, ensuring nothing was corrupted or tampered with during transfer.
352
+ </li>
353
+ </ol>
354
+
355
+ <div class="tip-box mt-6">
356
+ <p class="text-sm"><strong>💡 Privacy Note:</strong> Only the content hash is visible on the mesh network.
357
+ File names, folder structure, and actual content are encrypted and only accessible to someone with the share link.</p>
358
+ </div>
359
+ </div>
360
+
361
+ <!-- Troubleshooting -->
362
+ <div class="tutorial-card">
363
+ <h2 class="text-xl font-semibold mb-4">🔧 Troubleshooting</h2>
364
+
365
+ <h3 class="font-semibold mt-4 mb-2 text-gray-200">"Share not found" error</h3>
366
+ <p class="text-gray-300 mb-4">
367
+ This usually means your node is offline. Check that YAKMESH is running with
368
+ <code class="bg-gray-800 px-2 py-1 rounded">yakmesh status</code>.
369
+ </p>
370
+
371
+ <h3 class="font-semibold mt-4 mb-2 text-gray-200">Slow download speeds</h3>
372
+ <p class="text-gray-300 mb-4">
373
+ This depends on your internet upload speed. For large files, consider using
374
+ <code class="bg-gray-800 px-2 py-1 rounded">--replicate</code> to cache copies on other nodes.
375
+ </p>
376
+
377
+ <h3 class="font-semibold mt-4 mb-2 text-gray-200">Friend can't connect</h3>
378
+ <p class="text-gray-300 mb-4">
379
+ Check that both of you are connected to the mesh network. Run
380
+ <code class="bg-gray-800 px-2 py-1 rounded">yakmesh peers</code> to see your connections.
381
+ </p>
382
+
383
+ <h3 class="font-semibold mt-4 mb-2 text-gray-200">Share expired accidentally</h3>
384
+ <p class="text-gray-300 mb-4">
385
+ You can recreate it with the same command. The content hash will be identical since the files haven't changed.
386
+ </p>
387
+ </div>
388
+
389
+ <!-- Summary -->
390
+ <div class="tutorial-card">
391
+ <h2 class="text-xl font-semibold mb-4 theme-accent">🎉 Summary</h2>
392
+ <p class="text-gray-300 mb-4">
393
+ Congratulations! You've learned how to share files with friends using YAKMESH. Here's a quick recap:
394
+ </p>
395
+ <ul class="list-disc list-inside text-gray-300 space-y-2">
396
+ <li><code class="bg-gray-800 px-2 py-1 rounded">yakmesh share [path]</code> - Create a share link</li>
397
+ <li><code class="bg-gray-800 px-2 py-1 rounded">yakmesh doko list</code> - View your active shares</li>
398
+ <li><code class="bg-gray-800 px-2 py-1 rounded">yakmesh fetch [link]</code> - Download shared content</li>
399
+ <li>Files stay on your device - no cloud uploads!</li>
400
+ <li>All transfers are end-to-end encrypted</li>
401
+ </ul>
402
+ </div>
403
+
404
+ <!-- Navigation Footer -->
405
+ <div class="border-t border-mountain-700 mt-12 pt-8">
406
+ <div class="flex flex-col sm:flex-row gap-4">
407
+ <a href="mesh-network.html" class="flex-1 block bg-mountain-800 border border-mountain-700 rounded-xl p-4 hover:border-emerald-500 transition group">
408
+ <div class="text-xs text-mountain-400 mb-1">← Previous</div>
409
+ <div class="flex items-center gap-2">
410
+ <span class="text-xl">🕸️</span>
411
+ <span class="font-semibold group-hover:text-emerald-400">Join the Mesh Network</span>
412
+ </div>
413
+ </a>
414
+ <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">
415
+ <div class="text-xs text-mountain-400 mb-1">Next →</div>
416
+ <div class="flex items-center gap-2">
417
+ <span class="text-xl">📊</span>
418
+ <span class="font-semibold group-hover:text-emerald-400">Understanding the Dashboard</span>
419
+ </div>
420
+ </a>
421
+ </div>
422
+ </div>
423
+ </div>
424
+ </main>
425
+
426
+ <script src="../prism.min.js"></script>
427
+ <script src="../prism-javascript.min.js"></script>
428
+ <script src="../prism-bash.min.js"></script>
429
+ <script src="../docs.js"></script>
430
+ </body>
431
+ </html>