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,600 @@
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>Running on Raspberry Pi - YAKMESH Tutorials</title>
10
+ <meta name="description" content="Set up a dedicated always-on YAKMESH node on a Raspberry Pi. Complete hardware and software guide.">
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-accent-hover:hover { color: #34d399; }
18
+ .theme-badge { background: rgba(16, 185, 129, 0.2); color: #34d399; }
19
+ .theme-border { border-color: #10b981; }
20
+ .theme-callout { background: rgba(16, 185, 129, 0.1); border-color: #059669; }
21
+ .active-link { background: rgba(16, 185, 129, 0.2) !important; color: #34d399 !important; }
22
+ .tutorial-card { background: rgba(30, 41, 59, 0.5); border: 1px solid #334155; border-radius: 0.75rem; padding: 1.5rem; margin-bottom: 1.5rem; }
23
+ .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; flex-shrink: 0; }
24
+ .step-header { display: flex; align-items: center; margin-bottom: 1rem; }
25
+ </style>
26
+ </head>
27
+ <body class="bg-mountain-900 text-white min-h-screen">
28
+
29
+ <nav class="docs-sidebar" id="sidebar">
30
+ <a href="../index.html" class="sidebar-logo">
31
+ <span class="logo-icon">🏔️</span>
32
+ <span class="logo-text">Yakmesh</span>
33
+ </a>
34
+ <a href="/dashboard" class="sidebar-dashboard-link"><span>📊</span> <span>Dashboard</span></a>
35
+ <ul class="sidebar-nav">
36
+ <li><a href="../index.html"><span>🏠</span> <span>Overview</span></a></li>
37
+ <li><a href="../getting-started.html"><span>🚀</span> <span>Getting Started</span></a></li>
38
+ <li><a href="../tutorials.html"><span>📖</span> <span>Tutorials</span></a></li>
39
+ <li><a href="../yak-protocol.html"><span class="yak-icon"></span> <span>YAK://</span></a></li>
40
+ <li><a href="../annex.html"><span>🌉</span> <span>ANNEX</span></a></li>
41
+ <li><a href="../nakpak.html"><span>🎒</span> <span>NAKPAK</span></a></li>
42
+ <li><a href="../namche.html"><span>🚪</span> <span>NAMCHE</span></a></li>
43
+ <li><a href="../doko.html"><span>🧺</span> <span>DOKO</span></a></li>
44
+ <li><a href="../sherpa.html"><span>🧗</span> <span>SHERPA</span></a></li>
45
+ <li><a href="../mandala.html"><span>🌐</span> <span>MANDALA</span></a></li>
46
+ <li><a href="../mantra.html"><span>🕉️</span> <span>MANTRA</span></a></li>
47
+ <li><a href="../gumba.html"><span>🛕</span> <span>GUMBA</span></a></li>
48
+ <li><a href="../yurt.html"><span>🏕️</span> <span>YURT</span></a></li>
49
+ <li><a href="../katha.html"><span>💬</span> <span>KATHA</span></a></li>
50
+ <li><a href="../vani.html"><span>🎙️</span> <span>VANI</span></a></li>
51
+ <li><a href="../darshan.html"><span>👁️</span> <span>DARSHAN</span></a></li>
52
+ <li><a href="../stupa.html"><span>🛕</span> <span>STUPA</span></a></li>
53
+ <li><a href="../lama.html"><span>🔮</span> <span>LAMA</span></a></li>
54
+ <li><a href="../mani.html"><span>⏱️</span> <span>MANI</span></a></li>
55
+ <li><a href="../karma.html"><span>☯️</span> <span>KARMA</span></a></li>
56
+ <li><a href="../tattva.html"><span>🔯</span> <span>TATTVA</span></a></li>
57
+ <li><a href="../tribhuj.html"><span>🔺</span> <span>TRIBHUJ</span></a></li>
58
+ <li><a href="../ypc27.html"><span>🔐</span> <span>YPC-27</span></a></li>
59
+ <li><a href="../sakshi.html"><span>👁️</span> <span>SAKSHI</span></a></li>
60
+ <li><a href="../geo-proof.html"><span>🌍</span> <span>PRAMAAN</span></a></li>
61
+ <li><a href="../trust-security.html"><span>🔒</span> <span>SURAKSHA</span></a></li>
62
+ <li><a href="../docs-bundle.html"><span>📚</span> <span>GRANTH</span></a></li>
63
+ <li><a href="../api.html"><span>📡</span> <span>API</span></a></li>
64
+ <li><a href="../adapters.html"><span>🔌</span> <span>Adapters</span></a></li>
65
+ <li><a href="../studio.html"><span>🎨</span> <span>Studio</span></a></li>
66
+ <li><a href="../quick-reference.html"><span>📋</span> <span>Quick Ref</span></a></li>
67
+ </ul>
68
+ </nav>
69
+
70
+ <button class="sidebar-toggle" id="sidebarToggle" title="Toggle sidebar">
71
+ <svg xmlns="http://www.w3.org/2000/svg" fill="none" viewBox="0 0 24 24" stroke="currentColor">
72
+ <path stroke-linecap="round" stroke-linejoin="round" stroke-width="2" d="M11 19l-7-7 7-7m8 14l-7-7 7-7" />
73
+ </svg>
74
+ </button>
75
+
76
+ <div class="sidebar-overlay" id="sidebarOverlay"></div>
77
+
78
+ <main class="docs-main" id="mainContent">
79
+ <div class="docs-content">
80
+
81
+ <!-- Breadcrumb -->
82
+ <nav class="mb-6">
83
+ <a href="../tutorials.html" class="text-mountain-400 hover:text-white transition">← Back to Tutorials</a>
84
+ </nav>
85
+
86
+ <!-- Page Header -->
87
+ <div class="mb-8">
88
+ <div class="flex items-center gap-3 mb-2">
89
+ <span class="text-4xl">🍓</span>
90
+ <h1 class="text-4xl font-bold">Running on Raspberry Pi</h1>
91
+ <span class="theme-badge text-xs px-2 py-1 rounded-full">20 min</span>
92
+ </div>
93
+ <p class="theme-accent text-lg">Set up a dedicated always-on YAKMESH node</p>
94
+ <p class="text-mountain-300 mt-2">
95
+ Turn a Raspberry Pi into a 24/7 YAKMESH node. Low power, always connected, perfect for mesh networking.
96
+ </p>
97
+ </div>
98
+
99
+ <!-- What You'll Learn -->
100
+ <div class="tutorial-card">
101
+ <h2 class="text-xl font-bold mb-4">📋 What You'll Learn</h2>
102
+ <ul class="space-y-2 text-mountain-300">
103
+ <li>• Choose the right Raspberry Pi hardware</li>
104
+ <li>• Install and configure Raspberry Pi OS</li>
105
+ <li>• Install Node.js on ARM architecture</li>
106
+ <li>• Install and configure YAKMESH</li>
107
+ <li>• Set up auto-start on boot with systemd</li>
108
+ <li>• Optimize for low power and reliability</li>
109
+ </ul>
110
+ </div>
111
+
112
+ <!-- Hardware Requirements -->
113
+ <div class="tutorial-card">
114
+ <div class="step-header">
115
+ <span class="step-number">1</span>
116
+ <h2 class="text-xl font-bold">Hardware Requirements</h2>
117
+ </div>
118
+
119
+ <h3 class="font-semibold text-lg mb-3">Recommended Hardware</h3>
120
+ <div class="overflow-x-auto mb-6">
121
+ <table class="w-full text-sm">
122
+ <thead>
123
+ <tr class="border-b border-mountain-700">
124
+ <th class="text-left py-2 px-3">Component</th>
125
+ <th class="text-left py-2 px-3">Minimum</th>
126
+ <th class="text-left py-2 px-3">Recommended</th>
127
+ </tr>
128
+ </thead>
129
+ <tbody class="text-mountain-300">
130
+ <tr class="border-b border-mountain-800">
131
+ <td class="py-2 px-3 font-semibold">Raspberry Pi Model</td>
132
+ <td class="py-2 px-3">Pi 3B+ (1GB)</td>
133
+ <td class="py-2 px-3 theme-accent">Pi 4 (4GB) or Pi 5</td>
134
+ </tr>
135
+ <tr class="border-b border-mountain-800">
136
+ <td class="py-2 px-3 font-semibold">Storage</td>
137
+ <td class="py-2 px-3">16GB microSD</td>
138
+ <td class="py-2 px-3 theme-accent">32GB+ microSD or SSD</td>
139
+ </tr>
140
+ <tr class="border-b border-mountain-800">
141
+ <td class="py-2 px-3 font-semibold">Power Supply</td>
142
+ <td class="py-2 px-3">5V 2.5A</td>
143
+ <td class="py-2 px-3 theme-accent">5V 3A (USB-C for Pi 4/5)</td>
144
+ </tr>
145
+ <tr class="border-b border-mountain-800">
146
+ <td class="py-2 px-3 font-semibold">Cooling</td>
147
+ <td class="py-2 px-3">Heatsinks</td>
148
+ <td class="py-2 px-3 theme-accent">Active fan or case with fan</td>
149
+ </tr>
150
+ <tr class="border-b border-mountain-800">
151
+ <td class="py-2 px-3 font-semibold">Network</td>
152
+ <td class="py-2 px-3">WiFi</td>
153
+ <td class="py-2 px-3 theme-accent">Ethernet (more reliable)</td>
154
+ </tr>
155
+ </tbody>
156
+ </table>
157
+ </div>
158
+
159
+ <div class="theme-callout rounded-lg p-4 border">
160
+ <p class="font-semibold theme-accent mb-1">💡 Why Pi 4 with 4GB+?</p>
161
+ <p class="text-sm text-mountain-300">
162
+ YAKMESH uses post-quantum cryptography which requires more memory than classical crypto.
163
+ The Pi 4's improved CPU and RAM handle ML-DSA-65 signatures efficiently.
164
+ </p>
165
+ </div>
166
+ </div>
167
+
168
+ <!-- OS Setup -->
169
+ <div class="tutorial-card">
170
+ <div class="step-header">
171
+ <span class="step-number">2</span>
172
+ <h2 class="text-xl font-bold">Install Raspberry Pi OS</h2>
173
+ </div>
174
+
175
+ <h3 class="font-semibold text-lg mb-3">Download and Flash</h3>
176
+ <ol class="list-decimal list-inside space-y-3 text-mountain-300 mb-4">
177
+ <li>Download <a href="https://www.raspberrypi.com/software/" class="theme-accent theme-accent-hover" target="_blank">Raspberry Pi Imager</a></li>
178
+ <li>Insert your microSD card into your computer</li>
179
+ <li>Open Raspberry Pi Imager and select:
180
+ <ul class="list-disc list-inside ml-6 mt-2 space-y-1">
181
+ <li><strong>OS:</strong> Raspberry Pi OS Lite (64-bit) - no desktop needed</li>
182
+ <li><strong>Storage:</strong> Your microSD card</li>
183
+ </ul>
184
+ </li>
185
+ <li>Click the gear icon (⚙️) for advanced options:
186
+ <ul class="list-disc list-inside ml-6 mt-2 space-y-1">
187
+ <li>Set hostname: <code class="bg-mountain-800 px-1 rounded">yakmesh-node</code></li>
188
+ <li>Enable SSH with password or public key</li>
189
+ <li>Set username and password</li>
190
+ <li>Configure WiFi (if not using Ethernet)</li>
191
+ <li>Set locale and timezone</li>
192
+ </ul>
193
+ </li>
194
+ <li>Click Write and wait for completion</li>
195
+ </ol>
196
+
197
+ <h3 class="font-semibold text-lg mb-3">First Boot</h3>
198
+ <pre class="language-bash mb-4"><code># Insert SD card into Pi and power on
199
+ # Wait 2-3 minutes for first boot to complete
200
+ # Find your Pi's IP address from your router, or use:
201
+ ping yakmesh-node.local
202
+
203
+ # SSH into your Pi
204
+ ssh pi@yakmesh-node.local
205
+ # Enter your password when prompted</code></pre>
206
+
207
+ <h3 class="font-semibold text-lg mb-3">Initial System Update</h3>
208
+ <pre class="language-bash"><code># Update package lists and upgrade
209
+ sudo apt update && sudo apt upgrade -y
210
+
211
+ # Install essential tools
212
+ sudo apt install -y curl git build-essential
213
+
214
+ # Reboot to apply any kernel updates
215
+ sudo reboot</code></pre>
216
+ </div>
217
+
218
+ <!-- Install Node.js -->
219
+ <div class="tutorial-card">
220
+ <div class="step-header">
221
+ <span class="step-number">3</span>
222
+ <h2 class="text-xl font-bold">Install Node.js on ARM</h2>
223
+ </div>
224
+ <p class="text-mountain-300 mb-4">
225
+ YAKMESH requires Node.js 20 or later. We'll use NodeSource for the latest ARM builds.
226
+ </p>
227
+
228
+ <h3 class="font-semibold text-lg mb-3">Install Node.js 22 LTS</h3>
229
+ <pre class="language-bash mb-4"><code># Add NodeSource repository for Node.js 22
230
+ curl -fsSL https://deb.nodesource.com/setup_22.x | sudo -E bash -
231
+
232
+ # Install Node.js
233
+ sudo apt install -y nodejs
234
+
235
+ # Verify installation
236
+ node --version # Should show v22.x.x
237
+ npm --version # Should show 10.x.x</code></pre>
238
+
239
+ <h3 class="font-semibold text-lg mb-3">Alternative: Using nvm (Node Version Manager)</h3>
240
+ <pre class="language-bash"><code># Install nvm
241
+ curl -o- https://raw.githubusercontent.com/nvm-sh/nvm/v0.39.7/install.sh | bash
242
+
243
+ # Reload shell
244
+ source ~/.bashrc
245
+
246
+ # Install Node.js 22
247
+ nvm install 22
248
+ nvm use 22
249
+ nvm alias default 22</code></pre>
250
+
251
+ <div class="theme-callout rounded-lg p-4 border mt-4">
252
+ <p class="font-semibold theme-accent mb-1">⚠️ ARM Architecture Note</p>
253
+ <p class="text-sm text-mountain-300">
254
+ Raspberry Pi uses ARM64 (aarch64) architecture. All npm packages with native bindings
255
+ will be compiled during installation, which may take longer than on x86.
256
+ </p>
257
+ </div>
258
+ </div>
259
+
260
+ <!-- Install YAKMESH -->
261
+ <div class="tutorial-card">
262
+ <div class="step-header">
263
+ <span class="step-number">4</span>
264
+ <h2 class="text-xl font-bold">Install YAKMESH</h2>
265
+ </div>
266
+
267
+ <h3 class="font-semibold text-lg mb-3">Create Project Directory</h3>
268
+ <pre class="language-bash mb-4"><code># Create a dedicated directory
269
+ mkdir -p ~/yakmesh
270
+ cd ~/yakmesh
271
+
272
+ # Initialize npm project
273
+ npm init -y
274
+
275
+ # Install YAKMESH
276
+ npm install yakmesh</code></pre>
277
+
278
+ <h3 class="font-semibold text-lg mb-3">Initialize Node</h3>
279
+ <pre class="language-bash mb-4"><code># Generate node identity and config
280
+ npx yakmesh init
281
+
282
+ # This creates:
283
+ # - yakmesh.config.js (configuration)
284
+ # - data/ directory (node data and keys)</code></pre>
285
+
286
+ <h3 class="font-semibold text-lg mb-3">Configure for Pi</h3>
287
+ <p class="text-mountain-300 mb-3">
288
+ Edit <code class="bg-mountain-800 px-2 py-1 rounded">yakmesh.config.js</code> for optimal Pi performance:
289
+ </p>
290
+ <pre class="language-javascript"><code>// yakmesh.config.js - Raspberry Pi optimized
291
+ export default {
292
+ node: {
293
+ name: 'pi-yakmesh-node',
294
+ },
295
+
296
+ server: {
297
+ host: '0.0.0.0', // Accept connections from network
298
+ port: 3000,
299
+ },
300
+
301
+ websocket: {
302
+ port: 9001,
303
+ },
304
+
305
+ // Reduce memory usage on constrained devices
306
+ performance: {
307
+ maxPeers: 50, // Limit peer connections
308
+ cacheSize: '256mb', // Reduce cache for 1GB Pi
309
+ gcInterval: 300000, // Garbage collect every 5 min
310
+ },
311
+
312
+ // Enable logging to file for debugging
313
+ logging: {
314
+ level: 'info',
315
+ file: './data/yakmesh.log',
316
+ },
317
+ };</code></pre>
318
+
319
+ <h3 class="font-semibold text-lg mb-3">Test Run</h3>
320
+ <pre class="language-bash"><code># Start YAKMESH to verify it works
321
+ npx yakmesh start
322
+
323
+ # You should see the startup messages
324
+ # Press Ctrl+C to stop for now</code></pre>
325
+ </div>
326
+
327
+ <!-- Auto-start with systemd -->
328
+ <div class="tutorial-card">
329
+ <div class="step-header">
330
+ <span class="step-number">5</span>
331
+ <h2 class="text-xl font-bold">Auto-Start on Boot (systemd)</h2>
332
+ </div>
333
+ <p class="text-mountain-300 mb-4">
334
+ Create a systemd service so YAKMESH starts automatically when the Pi boots.
335
+ </p>
336
+
337
+ <h3 class="font-semibold text-lg mb-3">Create Service File</h3>
338
+ <pre class="language-bash mb-4"><code># Create the systemd service file
339
+ sudo nano /etc/systemd/system/yakmesh.service</code></pre>
340
+
341
+ <p class="text-mountain-300 mb-3">Paste this content:</p>
342
+ <pre class="language-bash mb-4"><code>[Unit]
343
+ Description=YAKMESH Node
344
+ Documentation=https://yakmesh.com/docs
345
+ After=network-online.target
346
+ Wants=network-online.target
347
+
348
+ [Service]
349
+ Type=simple
350
+ User=pi
351
+ WorkingDirectory=/home/pi/yakmesh
352
+ ExecStart=/usr/bin/npx yakmesh start
353
+ Restart=always
354
+ RestartSec=10
355
+
356
+ # Security hardening
357
+ NoNewPrivileges=true
358
+ ProtectSystem=strict
359
+ ProtectHome=read-only
360
+ ReadWritePaths=/home/pi/yakmesh/data
361
+
362
+ # Resource limits
363
+ MemoryMax=1G
364
+ CPUQuota=80%
365
+
366
+ # Environment
367
+ Environment=NODE_ENV=production
368
+
369
+ [Install]
370
+ WantedBy=multi-user.target</code></pre>
371
+
372
+ <h3 class="font-semibold text-lg mb-3">Enable and Start Service</h3>
373
+ <pre class="language-bash mb-4"><code># Reload systemd to recognize new service
374
+ sudo systemctl daemon-reload
375
+
376
+ # Enable auto-start on boot
377
+ sudo systemctl enable yakmesh
378
+
379
+ # Start the service now
380
+ sudo systemctl start yakmesh
381
+
382
+ # Check status
383
+ sudo systemctl status yakmesh</code></pre>
384
+
385
+ <h3 class="font-semibold text-lg mb-3">Useful Service Commands</h3>
386
+ <pre class="language-bash"><code># View logs
387
+ sudo journalctl -u yakmesh -f
388
+
389
+ # Restart service
390
+ sudo systemctl restart yakmesh
391
+
392
+ # Stop service
393
+ sudo systemctl stop yakmesh
394
+
395
+ # Disable auto-start
396
+ sudo systemctl disable yakmesh</code></pre>
397
+ </div>
398
+
399
+ <!-- Power and Networking -->
400
+ <div class="tutorial-card">
401
+ <div class="step-header">
402
+ <span class="step-number">6</span>
403
+ <h2 class="text-xl font-bold">Power and Networking Tips</h2>
404
+ </div>
405
+
406
+ <h3 class="font-semibold text-lg mb-3">Stable Power Supply</h3>
407
+ <ul class="space-y-2 text-mountain-300 mb-4">
408
+ <li>• Use the official Raspberry Pi power supply (5V 3A for Pi 4/5)</li>
409
+ <li>• Avoid USB hubs or phone chargers - they may cause undervoltage</li>
410
+ <li>• Consider a UPS HAT for power outage protection</li>
411
+ <li>• Check for undervoltage warnings: <code class="bg-mountain-800 px-1 rounded">vcgencmd get_throttled</code></li>
412
+ </ul>
413
+
414
+ <h3 class="font-semibold text-lg mb-3">Network Reliability</h3>
415
+ <ul class="space-y-2 text-mountain-300 mb-4">
416
+ <li>• <strong>Use Ethernet</strong> whenever possible - WiFi can be unreliable for 24/7 operation</li>
417
+ <li>• If using WiFi, configure a static IP to prevent DHCP issues</li>
418
+ <li>• Consider a powered USB Ethernet adapter for gigabit speeds on Pi 3</li>
419
+ </ul>
420
+
421
+ <h3 class="font-semibold text-lg mb-3">Static IP Configuration</h3>
422
+ <pre class="language-bash mb-4"><code># Edit dhcpcd configuration
423
+ sudo nano /etc/dhcpcd.conf
424
+
425
+ # Add at the end (adjust for your network):
426
+ interface eth0
427
+ static ip_address=192.168.1.100/24
428
+ static routers=192.168.1.1
429
+ static domain_name_servers=1.1.1.1 8.8.8.8
430
+
431
+ # Restart networking
432
+ sudo systemctl restart dhcpcd</code></pre>
433
+
434
+ <h3 class="font-semibold text-lg mb-3">Firewall Configuration</h3>
435
+ <pre class="language-bash"><code># Install and configure ufw
436
+ sudo apt install -y ufw
437
+
438
+ # Allow SSH (important - don't lock yourself out!)
439
+ sudo ufw allow ssh
440
+
441
+ # Allow YAKMESH ports
442
+ sudo ufw allow 3000/tcp # Dashboard
443
+ sudo ufw allow 9001/tcp # WebSocket
444
+
445
+ # Enable firewall
446
+ sudo ufw enable
447
+
448
+ # Check status
449
+ sudo ufw status</code></pre>
450
+ </div>
451
+
452
+ <!-- Performance Considerations -->
453
+ <div class="tutorial-card">
454
+ <div class="step-header">
455
+ <span class="step-number">7</span>
456
+ <h2 class="text-xl font-bold">Performance Considerations</h2>
457
+ </div>
458
+
459
+ <h3 class="font-semibold text-lg mb-3">Temperature Monitoring</h3>
460
+ <p class="text-mountain-300 mb-3">
461
+ Post-quantum crypto is CPU-intensive. Monitor temperatures to prevent throttling:
462
+ </p>
463
+ <pre class="language-bash mb-4"><code># Check current temperature
464
+ vcgencmd measure_temp
465
+
466
+ # Monitor continuously
467
+ watch -n 1 vcgencmd measure_temp
468
+
469
+ # Install htop for system monitoring
470
+ sudo apt install -y htop</code></pre>
471
+
472
+ <div class="theme-callout rounded-lg p-4 border mb-4">
473
+ <p class="font-semibold theme-accent mb-1">🌡️ Temperature Guidelines</p>
474
+ <ul class="text-sm text-mountain-300 space-y-1">
475
+ <li>• <strong>&lt;60°C:</strong> Normal operation</li>
476
+ <li>• <strong>60-80°C:</strong> Warm but acceptable with cooling</li>
477
+ <li>• <strong>&gt;80°C:</strong> Throttling begins - improve cooling</li>
478
+ <li>• <strong>&gt;85°C:</strong> Heavy throttling - add active cooling</li>
479
+ </ul>
480
+ </div>
481
+
482
+ <h3 class="font-semibold text-lg mb-3">SSD for Better Performance</h3>
483
+ <p class="text-mountain-300 mb-3">
484
+ For maximum reliability and speed, boot from an SSD instead of microSD:
485
+ </p>
486
+ <pre class="language-bash mb-4"><code># Check if your Pi supports USB boot (Pi 4/5)
487
+ vcgencmd bootloader_version
488
+
489
+ # Use Raspberry Pi Imager to flash OS to SSD
490
+ # Then update boot order in raspi-config:
491
+ sudo raspi-config
492
+ # Advanced Options → Boot Order → USB Boot</code></pre>
493
+
494
+ <h3 class="font-semibold text-lg mb-3">Memory Optimization</h3>
495
+ <pre class="language-bash"><code># Reduce GPU memory (headless server doesn't need it)
496
+ sudo nano /boot/config.txt
497
+
498
+ # Add or modify:
499
+ gpu_mem=16
500
+
501
+ # Enable zram for better memory management
502
+ sudo apt install -y zram-tools
503
+ sudo systemctl enable zramswap
504
+ sudo reboot</code></pre>
505
+ </div>
506
+
507
+ <!-- Access Dashboard -->
508
+ <div class="tutorial-card">
509
+ <h2 class="text-xl font-bold mb-4">✅ Access Your Node</h2>
510
+ <p class="text-mountain-300 mb-4">
511
+ Once running, access your YAKMESH dashboard from any device on your network:
512
+ </p>
513
+ <pre class="language-bash mb-4"><code># From your computer's browser, go to:
514
+ http://yakmesh-node.local:3000/dashboard
515
+
516
+ # Or use the IP address:
517
+ http://192.168.1.100:3000/dashboard</code></pre>
518
+
519
+ <h3 class="font-semibold text-lg mb-3">Verify Node Health</h3>
520
+ <pre class="language-bash"><code># Check node status via API
521
+ curl http://yakmesh-node.local:3000/health
522
+
523
+ # Expected response:
524
+ {
525
+ "status": "healthy",
526
+ "network": "your-network-name",
527
+ "algorithm": "ML-DSA-65",
528
+ "peers": 5,
529
+ "uptime": "2h 15m"
530
+ }</code></pre>
531
+ </div>
532
+
533
+ <!-- Success -->
534
+ <div class="bg-emerald-900/30 border border-emerald-600 rounded-xl p-6 mb-8">
535
+ <h2 class="text-xl font-bold mb-2 text-emerald-400">🎉 Your Pi Node is Ready!</h2>
536
+ <p class="text-mountain-300 mb-4">
537
+ Your Raspberry Pi is now running a dedicated YAKMESH node 24/7. It will:
538
+ </p>
539
+ <ul class="space-y-1 text-mountain-300">
540
+ <li>• Automatically start when the Pi boots</li>
541
+ <li>• Restart if it crashes</li>
542
+ <li>• Connect to peers and participate in the mesh</li>
543
+ <li>• Serve your dashboard on port 3000</li>
544
+ </ul>
545
+ </div>
546
+
547
+ <!-- Maintenance Tips -->
548
+ <div class="tutorial-card">
549
+ <h2 class="text-xl font-bold mb-4">🔧 Maintenance Tips</h2>
550
+ <div class="space-y-4">
551
+ <div>
552
+ <p class="font-semibold text-white mb-1">Keep software updated</p>
553
+ <pre class="language-bash text-sm"><code>sudo apt update && sudo apt upgrade -y
554
+ cd ~/yakmesh && npm update yakmesh</code></pre>
555
+ </div>
556
+ <div>
557
+ <p class="font-semibold text-white mb-1">Backup your node identity</p>
558
+ <pre class="language-bash text-sm"><code># Copy to your computer
559
+ scp -r pi@yakmesh-node.local:~/yakmesh/data ./yakmesh-backup</code></pre>
560
+ </div>
561
+ <div>
562
+ <p class="font-semibold text-white mb-1">Check logs for issues</p>
563
+ <pre class="language-bash text-sm"><code>sudo journalctl -u yakmesh --since "1 hour ago"</code></pre>
564
+ </div>
565
+ </div>
566
+ </div>
567
+
568
+ <!-- Navigation Footer -->
569
+ <div class="border-t border-mountain-700 mt-12 pt-8">
570
+ <div class="flex flex-col sm:flex-row gap-4">
571
+ <a href="domain-setup.html" class="flex-1 block bg-mountain-800 border border-mountain-700 rounded-xl p-4 hover:border-emerald-500 transition group">
572
+ <div class="text-xs text-mountain-400 mb-1">← Previous</div>
573
+ <div class="flex items-center gap-2">
574
+ <span class="text-xl">🌍</span>
575
+ <span class="font-semibold group-hover:text-emerald-400">Using with a Domain Name</span>
576
+ </div>
577
+ </a>
578
+ <a href="mobile-access.html" class="flex-1 block bg-mountain-800 border border-mountain-700 rounded-xl p-4 hover:border-emerald-500 transition group">
579
+ <div class="text-xs text-mountain-400 mb-1">Next →</div>
580
+ <div class="flex items-center gap-2">
581
+ <span class="text-xl">📱</span>
582
+ <span class="font-semibold group-hover:text-emerald-400">Mobile Access</span>
583
+ </div>
584
+ </a>
585
+ </div>
586
+ </div>
587
+
588
+ </div>
589
+ </main>
590
+
591
+ <footer class="docs-footer">
592
+ <p>© 2026 YAKMESH™</p>
593
+ </footer>
594
+
595
+ <script src="../prism.min.js"></script>
596
+ <script src="../prism-bash.min.js"></script>
597
+ <script src="../prism-javascript.min.js"></script>
598
+ <script src="../docs.js"></script>
599
+ </body>
600
+ </html>