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,505 @@
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>Join the Mesh Network - YAKMESH Tutorials</title>
10
+ <meta name="description" content="Learn how to join the YAKMESH mesh network, discover peers, and understand what the mesh provides.">
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
+ .theme-callout { background: rgba(16, 185, 129, 0.1); border: 1px solid #059669; border-radius: 0.75rem; padding: 1.5rem; margin: 1.5rem 0; }
22
+ .warning-callout { background: rgba(245, 158, 11, 0.1); border: 1px solid #d97706; border-radius: 0.75rem; padding: 1.5rem; margin: 1.5rem 0; }
23
+ .info-callout { background: rgba(59, 130, 246, 0.1); border: 1px solid #3b82f6; border-radius: 0.75rem; padding: 1.5rem; margin: 1.5rem 0; }
24
+ .feature-grid { display: grid; grid-template-columns: repeat(auto-fit, minmax(250px, 1fr)); gap: 1rem; }
25
+ .feature-item { background: rgba(30, 41, 59, 0.3); border-radius: 0.5rem; padding: 1rem; }
26
+ </style>
27
+ </head>
28
+ <body class="bg-mountain-900 text-white min-h-screen">
29
+
30
+ <nav class="docs-sidebar" id="sidebar">
31
+ <a href="../index.html" class="sidebar-logo">
32
+ <span class="logo-icon">🏔️</span>
33
+ <span class="logo-text">Yakmesh</span>
34
+ </a>
35
+ <a href="/dashboard" class="sidebar-dashboard-link"><span>📊</span> <span>Dashboard</span></a>
36
+ <ul class="sidebar-nav">
37
+ <li><a href="../index.html"><span>🏠</span> <span>Overview</span></a></li>
38
+ <li><a href="../getting-started.html"><span>🚀</span> <span>Getting Started</span></a></li>
39
+ <li><a href="../tutorials.html"><span>📖</span> <span>Tutorials</span></a></li>
40
+ <li><a href="../yak-protocol.html"><span class="yak-icon"></span> <span>YAK://</span></a></li>
41
+ <li><a href="../annex.html"><span>🌉</span> <span>ANNEX</span></a></li>
42
+ <li><a href="../nakpak.html"><span>🎒</span> <span>NAKPAK</span></a></li>
43
+ <li><a href="../namche.html"><span>🚪</span> <span>NAMCHE</span></a></li>
44
+ <li><a href="../doko.html"><span>🧺</span> <span>DOKO</span></a></li>
45
+ <li><a href="../sherpa.html"><span>🧗</span> <span>SHERPA</span></a></li>
46
+ <li><a href="../mandala.html"><span>🌐</span> <span>MANDALA</span></a></li>
47
+ <li><a href="../mantra.html"><span>🕉️</span> <span>MANTRA</span></a></li>
48
+ <li><a href="../gumba.html"><span>🛕</span> <span>GUMBA</span></a></li>
49
+ <li><a href="../yurt.html"><span>🏕️</span> <span>YURT</span></a></li>
50
+ <li><a href="../katha.html"><span>💬</span> <span>KATHA</span></a></li>
51
+ <li><a href="../vani.html"><span>🎙️</span> <span>VANI</span></a></li>
52
+ <li><a href="../darshan.html"><span>👁️</span> <span>DARSHAN</span></a></li>
53
+ <li><a href="../stupa.html"><span>🛕</span> <span>STUPA</span></a></li>
54
+ <li><a href="../lama.html"><span>🔮</span> <span>LAMA</span></a></li>
55
+ <li><a href="../mani.html"><span>⏱️</span> <span>MANI</span></a></li>
56
+ <li><a href="../karma.html"><span>☯️</span> <span>KARMA</span></a></li>
57
+ <li><a href="../tattva.html"><span>🔯</span> <span>TATTVA</span></a></li>
58
+ <li><a href="../tribhuj.html"><span>🔺</span> <span>TRIBHUJ</span></a></li>
59
+ <li><a href="../ypc27.html"><span>🔐</span> <span>YPC-27</span></a></li>
60
+ <li><a href="../sakshi.html"><span>👁️</span> <span>SAKSHI</span></a></li>
61
+ <li><a href="../geo-proof.html"><span>🌍</span> <span>PRAMAAN</span></a></li>
62
+ <li><a href="../trust-security.html"><span>🔒</span> <span>SURAKSHA</span></a></li>
63
+ <li><a href="../docs-bundle.html"><span>📚</span> <span>GRANTH</span></a></li>
64
+ <li><a href="../api.html"><span>📡</span> <span>API</span></a></li>
65
+ <li><a href="../adapters.html"><span>🔌</span> <span>Adapters</span></a></li>
66
+ <li><a href="../studio.html"><span>🎨</span> <span>Studio</span></a></li>
67
+ <li><a href="../quick-reference.html"><span>📋</span> <span>Quick Ref</span></a></li>
68
+ </ul>
69
+ </nav>
70
+
71
+ <button class="sidebar-toggle" id="sidebarToggle" title="Toggle sidebar">
72
+ <svg xmlns="http://www.w3.org/2000/svg" fill="none" viewBox="0 0 24 24" stroke="currentColor">
73
+ <path stroke-linecap="round" stroke-linejoin="round" stroke-width="2" d="M11 19l-7-7 7-7m8 14l-7-7 7-7" />
74
+ </svg>
75
+ </button>
76
+
77
+ <div class="sidebar-overlay" id="sidebarOverlay"></div>
78
+
79
+ <main class="docs-main" id="mainContent">
80
+ <div class="docs-content">
81
+
82
+ <!-- Breadcrumb -->
83
+ <div class="mb-6">
84
+ <a href="../tutorials.html" class="theme-accent hover:underline">← Back to Tutorials</a>
85
+ </div>
86
+
87
+ <!-- Page Header -->
88
+ <div class="mb-8">
89
+ <div class="flex items-center gap-3 mb-2">
90
+ <span class="text-4xl">🕸️</span>
91
+ <h1 class="text-4xl font-bold">Join the Mesh Network</h1>
92
+ <span class="theme-badge text-xs px-2 py-1 rounded-full">10 min</span>
93
+ </div>
94
+ <p class="theme-accent text-lg">Connect to the decentralized YAKMESH network</p>
95
+ <p class="text-mountain-300 mt-2">
96
+ The mesh network is the backbone of YAKMESH — a fully decentralized peer-to-peer network
97
+ with no central servers. This tutorial shows you how to join, monitor peers, and understand
98
+ what the mesh provides.
99
+ </p>
100
+ </div>
101
+
102
+ <!-- What is the Mesh -->
103
+ <div class="theme-callout mb-8">
104
+ <h3 class="font-bold text-lg mb-3">🌐 What is the Mesh Network?</h3>
105
+ <p class="text-mountain-300 mb-4">
106
+ The YAKMESH network is a <strong>peer-to-peer mesh</strong> where every node connects directly
107
+ to other nodes — no central servers required. Think of it like a spider web: if one strand breaks,
108
+ messages can still travel through other paths.
109
+ </p>
110
+ <div class="feature-grid mt-4">
111
+ <div class="feature-item">
112
+ <div class="text-2xl mb-2">🔐</div>
113
+ <strong class="text-emerald-400">Post-Quantum Secure</strong>
114
+ <p class="text-sm text-mountain-400 mt-1">All connections use quantum-resistant cryptography</p>
115
+ </div>
116
+ <div class="feature-item">
117
+ <div class="text-2xl mb-2">🌍</div>
118
+ <strong class="text-emerald-400">Globally Distributed</strong>
119
+ <p class="text-sm text-mountain-400 mt-1">Peers connect across countries and continents</p>
120
+ </div>
121
+ <div class="feature-item">
122
+ <div class="text-2xl mb-2">🚫</div>
123
+ <strong class="text-emerald-400">No Central Point of Failure</strong>
124
+ <p class="text-sm text-mountain-400 mt-1">Network continues even if nodes go offline</p>
125
+ </div>
126
+ <div class="feature-item">
127
+ <div class="text-2xl mb-2">🔄</div>
128
+ <strong class="text-emerald-400">Self-Healing</strong>
129
+ <p class="text-sm text-mountain-400 mt-1">Automatically routes around failed connections</p>
130
+ </div>
131
+ </div>
132
+ </div>
133
+
134
+ <!-- Step 1: Enable Mesh -->
135
+ <div class="tutorial-card">
136
+ <h3 class="font-bold text-xl mb-4">
137
+ <span class="step-number">1</span>
138
+ Enable Mesh Networking
139
+ </h3>
140
+ <p class="text-mountain-300 mb-4">
141
+ Mesh networking is enabled by default when you start YAKMESH. Verify it's active:
142
+ </p>
143
+ <pre class="language-bash"><code># Check YAKMESH status
144
+ yakmesh status
145
+
146
+ # Output:
147
+ # 🐃 Yakmesh Node Status
148
+ # ──────────────────────
149
+ # Node ID: yak-a7f2x9...
150
+ # Status: Running
151
+ # Uptime: 2h 34m
152
+ #
153
+ # 🕸️ Mesh Network
154
+ # ──────────────────────
155
+ # Status: Connected
156
+ # Network: yakmesh-main
157
+ # Peers: 12 connected
158
+ # DHT: Active (2,847 entries)</code></pre>
159
+
160
+ <p class="text-mountain-300 mt-6 mb-4">
161
+ If mesh is disabled, enable it in your configuration:
162
+ </p>
163
+ <pre class="language-javascript"><code>// yakmesh.config.js
164
+ module.exports = {
165
+ // Enable mesh networking
166
+ enableMesh: true,
167
+
168
+ // Optional: configure mesh behavior
169
+ mesh: {
170
+ // Maximum number of peer connections
171
+ maxPeers: 50,
172
+
173
+ // Enable peer discovery
174
+ enableDHT: true,
175
+ enableMDNS: true, // Local network discovery
176
+
177
+ // Connection settings
178
+ dialTimeout: 30000, // 30 seconds
179
+ keepAlive: 60000, // 1 minute
180
+ }
181
+ };</code></pre>
182
+ </div>
183
+
184
+ <!-- Step 2: Check Peers -->
185
+ <div class="tutorial-card">
186
+ <h3 class="font-bold text-xl mb-4">
187
+ <span class="step-number">2</span>
188
+ Check Your Peers
189
+ </h3>
190
+ <p class="text-mountain-300 mb-4">
191
+ View your current peer connections:
192
+ </p>
193
+ <pre class="language-bash"><code># List connected peers
194
+ yakmesh mesh peers
195
+
196
+ # Output:
197
+ # 🕸️ Connected Peers (12)
198
+ # ─────────────────────────────────────────────────────────
199
+ # ID | Address | Latency | Trust
200
+ # ─────────────────────────────────────────────────────────
201
+ # yak-b3x7f2... | 192.168.1.5:3000 | 2ms | 0.95
202
+ # yak-k9p2m1... | 45.33.21.89:3000 | 47ms | 0.82
203
+ # yak-r7t4w3... | 203.0.113.42:3001 | 112ms | 0.71
204
+ # yak-m2n8v6... | 10.0.0.15:3000 | 1ms | 0.88
205
+ # ... (8 more)</code></pre>
206
+
207
+ <h4 class="font-bold text-lg mt-6 mb-3">Understanding the Output</h4>
208
+ <ul class="text-mountain-300 space-y-2">
209
+ <li><strong>ID:</strong> The peer's unique node identifier (truncated for display)</li>
210
+ <li><strong>Address:</strong> IP address and port of the peer</li>
211
+ <li><strong>Latency:</strong> Round-trip time to the peer in milliseconds</li>
212
+ <li><strong>Trust:</strong> KARMA trust score (0.0 - 1.0) based on behavior history</li>
213
+ </ul>
214
+
215
+ <h4 class="font-bold text-lg mt-6 mb-3">Get Detailed Peer Info</h4>
216
+ <pre class="language-bash"><code># Get details about a specific peer
217
+ yakmesh mesh peer yak-b3x7f2...
218
+
219
+ # Output:
220
+ # Peer: yak-b3x7f2k9p1m4n7...
221
+ # ───────────────────────────
222
+ # Address: 192.168.1.5:3000
223
+ # Connected: 2h 15m ago
224
+ # Latency: 2ms (avg), 1ms (min), 5ms (max)
225
+ # Trust Score: 0.95
226
+ # Data Sent: 145 MB
227
+ # Data Recv: 89 MB
228
+ # Protocols: yak/1.0, doko/1.0, nakpak/1.0</code></pre>
229
+ </div>
230
+
231
+ <!-- Step 3: Discover New Peers -->
232
+ <div class="tutorial-card">
233
+ <h3 class="font-bold text-xl mb-4">
234
+ <span class="step-number">3</span>
235
+ Discover New Peers
236
+ </h3>
237
+ <p class="text-mountain-300 mb-4">
238
+ YAKMESH uses multiple methods to discover peers automatically:
239
+ </p>
240
+
241
+ <div class="bg-mountain-800 rounded-lg p-4 mb-4">
242
+ <ul class="text-mountain-300 space-y-3">
243
+ <li>
244
+ <strong class="text-emerald-400">DOKO DHT:</strong>
245
+ <span class="text-mountain-400">Distributed Hash Table for global peer discovery</span>
246
+ </li>
247
+ <li>
248
+ <strong class="text-emerald-400">mDNS:</strong>
249
+ <span class="text-mountain-400">Local network discovery (finds peers on your LAN)</span>
250
+ </li>
251
+ <li>
252
+ <strong class="text-emerald-400">Peer Exchange (PEX):</strong>
253
+ <span class="text-mountain-400">Connected peers share their peer lists</span>
254
+ </li>
255
+ </ul>
256
+ </div>
257
+
258
+ <h4 class="font-bold text-lg mt-6 mb-3">Manual Peer Connection</h4>
259
+ <p class="text-mountain-300 mb-4">
260
+ You can also connect to a specific peer manually:
261
+ </p>
262
+ <pre class="language-bash"><code># Connect to a peer by address
263
+ yakmesh mesh connect 45.33.21.89:3000
264
+
265
+ # Output:
266
+ # ✓ Connected to yak-k9p2m1...
267
+ # Latency: 47ms
268
+ # Trust: 0.82</code></pre>
269
+
270
+ <h4 class="font-bold text-lg mt-6 mb-3">Programmatic Connection (JavaScript)</h4>
271
+ <pre class="language-javascript"><code>import { createNode } from 'yakmesh';
272
+
273
+ async function connectToPeers() {
274
+ const node = await createNode();
275
+ await node.start();
276
+
277
+ // Get current peers
278
+ const peers = await node.mesh.peers();
279
+ console.log('Connected to', peers.length, 'peers');
280
+
281
+ // Connect to a specific peer
282
+ await node.mesh.connect('45.33.21.89:3000');
283
+
284
+ // Listen for new peer connections
285
+ node.mesh.on('peer:connect', (peer) => {
286
+ console.log('New peer:', peer.id);
287
+ console.log('Address:', peer.address);
288
+ });
289
+
290
+ // Listen for peer disconnections
291
+ node.mesh.on('peer:disconnect', (peer) => {
292
+ console.log('Peer left:', peer.id);
293
+ });
294
+
295
+ // Get peer count
296
+ const count = await node.mesh.peerCount();
297
+ console.log('Total peers:', count);
298
+ }
299
+
300
+ connectToPeers();</code></pre>
301
+ </div>
302
+
303
+ <!-- What the Mesh Provides -->
304
+ <div class="tutorial-card">
305
+ <h3 class="font-bold text-xl mb-4">
306
+ 🎁 What the Mesh Provides
307
+ </h3>
308
+ <p class="text-mountain-300 mb-6">
309
+ Once connected to the mesh, you gain access to these capabilities:
310
+ </p>
311
+
312
+ <div class="space-y-4">
313
+ <div class="bg-mountain-800 rounded-lg p-4">
314
+ <h4 class="font-bold text-emerald-400 mb-2">📡 Content Distribution</h4>
315
+ <p class="text-mountain-300 text-sm">
316
+ Your yak:// content is discoverable by anyone on the mesh. The more peers connected,
317
+ the faster content propagates.
318
+ </p>
319
+ </div>
320
+
321
+ <div class="bg-mountain-800 rounded-lg p-4">
322
+ <h4 class="font-bold text-emerald-400 mb-2">🔍 Decentralized Search</h4>
323
+ <p class="text-mountain-300 text-sm">
324
+ Search for content across the network without relying on centralized search engines.
325
+ Uses DOKO's distributed hash table.
326
+ </p>
327
+ </div>
328
+
329
+ <div class="bg-mountain-800 rounded-lg p-4">
330
+ <h4 class="font-bold text-emerald-400 mb-2">💬 Mesh Messaging</h4>
331
+ <p class="text-mountain-300 text-sm">
332
+ Send encrypted messages to any peer on the network. Messages route through the mesh
333
+ automatically.
334
+ </p>
335
+ </div>
336
+
337
+ <div class="bg-mountain-800 rounded-lg p-4">
338
+ <h4 class="font-bold text-emerald-400 mb-2">☯️ Trust & Reputation</h4>
339
+ <p class="text-mountain-300 text-sm">
340
+ KARMA scores track peer behavior. Good actors earn trust; bad actors are isolated.
341
+ This happens automatically through mesh observations.
342
+ </p>
343
+ </div>
344
+
345
+ <div class="bg-mountain-800 rounded-lg p-4">
346
+ <h4 class="font-bold text-emerald-400 mb-2">⏰ Synchronized Time</h4>
347
+ <p class="text-mountain-300 text-sm">
348
+ MANI provides consensus-based time synchronization across the mesh, independent of
349
+ centralized NTP servers.
350
+ </p>
351
+ </div>
352
+
353
+ <div class="bg-mountain-800 rounded-lg p-4">
354
+ <h4 class="font-bold text-emerald-400 mb-2">🌉 ANNEX Gateway</h4>
355
+ <p class="text-mountain-300 text-sm">
356
+ Bridge to the regular internet. Get public URLs for your content without port forwarding
357
+ or dynamic DNS.
358
+ </p>
359
+ </div>
360
+ </div>
361
+ </div>
362
+
363
+ <!-- Mesh CLI Commands -->
364
+ <div class="tutorial-card">
365
+ <h3 class="font-bold text-xl mb-4">📋 Mesh CLI Commands</h3>
366
+ <p class="text-mountain-300 mb-4">
367
+ Quick reference for mesh-related commands:
368
+ </p>
369
+
370
+ <div class="overflow-x-auto">
371
+ <table class="w-full text-sm">
372
+ <thead>
373
+ <tr class="border-b border-mountain-700">
374
+ <th class="text-left py-2 px-3">Command</th>
375
+ <th class="text-left py-2 px-3">Description</th>
376
+ </tr>
377
+ </thead>
378
+ <tbody class="text-mountain-300">
379
+ <tr class="border-b border-mountain-800">
380
+ <td class="py-2 px-3 font-mono text-emerald-400">yakmesh mesh status</td>
381
+ <td class="py-2 px-3">Show mesh network status</td>
382
+ </tr>
383
+ <tr class="border-b border-mountain-800">
384
+ <td class="py-2 px-3 font-mono text-emerald-400">yakmesh mesh peers</td>
385
+ <td class="py-2 px-3">List all connected peers</td>
386
+ </tr>
387
+ <tr class="border-b border-mountain-800">
388
+ <td class="py-2 px-3 font-mono text-emerald-400">yakmesh mesh peer &lt;id&gt;</td>
389
+ <td class="py-2 px-3">Show details for a specific peer</td>
390
+ </tr>
391
+ <tr class="border-b border-mountain-800">
392
+ <td class="py-2 px-3 font-mono text-emerald-400">yakmesh mesh connect &lt;addr&gt;</td>
393
+ <td class="py-2 px-3">Connect to a peer manually</td>
394
+ </tr>
395
+ <tr class="border-b border-mountain-800">
396
+ <td class="py-2 px-3 font-mono text-emerald-400">yakmesh mesh disconnect &lt;id&gt;</td>
397
+ <td class="py-2 px-3">Disconnect from a peer</td>
398
+ </tr>
399
+ <tr class="border-b border-mountain-800">
400
+ <td class="py-2 px-3 font-mono text-emerald-400">yakmesh mesh ban &lt;id&gt;</td>
401
+ <td class="py-2 px-3">Ban a peer (blocks future connections)</td>
402
+ </tr>
403
+ <tr class="border-b border-mountain-800">
404
+ <td class="py-2 px-3 font-mono text-emerald-400">yakmesh mesh unban &lt;id&gt;</td>
405
+ <td class="py-2 px-3">Unban a previously banned peer</td>
406
+ </tr>
407
+ <tr class="border-b border-mountain-800">
408
+ <td class="py-2 px-3 font-mono text-emerald-400">yakmesh mesh discover</td>
409
+ <td class="py-2 px-3">Trigger peer discovery manually</td>
410
+ </tr>
411
+ <tr>
412
+ <td class="py-2 px-3 font-mono text-emerald-400">yakmesh mesh stats</td>
413
+ <td class="py-2 px-3">Show bandwidth and connection statistics</td>
414
+ </tr>
415
+ </tbody>
416
+ </table>
417
+ </div>
418
+ </div>
419
+
420
+ <!-- Summary -->
421
+ <div class="theme-callout">
422
+ <h3 class="font-bold text-lg mb-3">✅ Summary</h3>
423
+ <p class="text-mountain-300 mb-4">
424
+ You're now part of the YAKMESH mesh network! Here's what you learned:
425
+ </p>
426
+ <ul class="text-mountain-300 space-y-2">
427
+ <li>✓ How the mesh network works</li>
428
+ <li>✓ Enable and verify mesh connectivity</li>
429
+ <li>✓ View and manage peer connections</li>
430
+ <li>✓ Discover new peers automatically and manually</li>
431
+ <li>✓ Understand what capabilities the mesh provides</li>
432
+ </ul>
433
+ <p class="text-mountain-400 text-sm mt-4">
434
+ <strong>Next:</strong> Learn how to share files with friends using yak:// links →
435
+ </p>
436
+ </div>
437
+
438
+ <!-- Troubleshooting -->
439
+ <div class="warning-callout mt-8">
440
+ <h3 class="font-bold text-lg mb-3" style="color: #fbbf24;">🔧 Troubleshooting</h3>
441
+ <ul class="text-mountain-300 space-y-3">
442
+ <li>
443
+ <strong>No peers connecting?</strong><br>
444
+ <span class="text-mountain-400">Check your firewall allows incoming connections on port 3000. Try <code class="bg-mountain-800 px-2 py-1 rounded">yakmesh mesh discover</code></span>
445
+ </li>
446
+ <li>
447
+ <strong>Mesh status shows "Disconnected"?</strong><br>
448
+ <span class="text-mountain-400">Ensure <code class="bg-mountain-800 px-2 py-1 rounded">enableMesh: true</code> in your config and restart the node.</span>
449
+ </li>
450
+ <li>
451
+ <strong>High latency to all peers?</strong><br>
452
+ <span class="text-mountain-400">Check your internet connection. Try enabling <code class="bg-mountain-800 px-2 py-1 rounded">enableMDNS: true</code> to find local peers.</span>
453
+ </li>
454
+ <li>
455
+ <strong>Peers keep disconnecting?</strong><br>
456
+ <span class="text-mountain-400">Increase <code class="bg-mountain-800 px-2 py-1 rounded">mesh.keepAlive</code> timeout in your config.</span>
457
+ </li>
458
+ </ul>
459
+ </div>
460
+
461
+ <!-- Network Visualization -->
462
+ <div class="info-callout mt-8">
463
+ <h3 class="font-bold text-lg mb-3" style="color: #60a5fa;">📊 Visualize Your Network</h3>
464
+ <p class="text-mountain-300 mb-4">
465
+ Want to see a visual map of your mesh connections? Open the dashboard:
466
+ </p>
467
+ <div class="bg-mountain-800 rounded-lg p-4 text-center">
468
+ <a href="http://localhost:3000/dashboard" class="theme-accent text-xl font-mono hover:underline" target="_blank">
469
+ http://localhost:3000/dashboard
470
+ </a>
471
+ </div>
472
+ <p class="text-mountain-400 text-sm mt-4">
473
+ The dashboard shows a real-time network graph, peer locations, bandwidth usage, and more.
474
+ </p>
475
+ </div>
476
+
477
+ <!-- Navigation Footer -->
478
+ <div class="border-t border-mountain-700 mt-12 pt-8">
479
+ <div class="flex flex-col sm:flex-row gap-4">
480
+ <a href="yak-protocol.html" class="flex-1 block bg-mountain-800 border border-mountain-700 rounded-xl p-4 hover:border-emerald-500 transition group">
481
+ <div class="text-xs text-mountain-400 mb-1">← Previous</div>
482
+ <div class="flex items-center gap-2">
483
+ <span class="text-xl">🐃</span>
484
+ <span class="font-semibold group-hover:text-emerald-400">YAK:// Protocol</span>
485
+ </div>
486
+ </a>
487
+ <a href="share-files.html" class="flex-1 block bg-mountain-800 border border-mountain-700 rounded-xl p-4 hover:border-emerald-500 transition group">
488
+ <div class="text-xs text-mountain-400 mb-1">Next →</div>
489
+ <div class="flex items-center gap-2">
490
+ <span class="text-xl">📤</span>
491
+ <span class="font-semibold group-hover:text-emerald-400">Share Files with Friends</span>
492
+ </div>
493
+ </a>
494
+ </div>
495
+ </div>
496
+
497
+ </div>
498
+ </main>
499
+
500
+ <script src="../prism.min.js"></script>
501
+ <script src="../prism-javascript.min.js"></script>
502
+ <script src="../prism-bash.min.js"></script>
503
+ <script src="../docs.js"></script>
504
+ </body>
505
+ </html>