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,166 @@
1
+ # time.yakmesh.dev — Self-Hosted Deployment Guide
2
+
3
+ **Date**: 2026-02-22
4
+ **Architecture**: Home-hosted — DNS points to home IP, AX3000 port-forwards to LAN
5
+ **Domain**: `time.yakmesh.dev` (single domain for NTP + HTTPS + API)
6
+
7
+ ---
8
+
9
+ ## Architecture Overview
10
+
11
+ ```
12
+ Internet
13
+
14
+ ├─ UDP 123 ──→ AX3000 ──→ MA-902 (192.168.1.30) NTP responses
15
+ │ Stratum 1 GPS hardware
16
+
17
+ └─ TCP 443 ──→ AX3000 ──→ Yakmesh Node (LAN server) HTTPS
18
+ ├─ Caddy (TLS termination)
19
+ ├─ website/time/index.html (landing page)
20
+ └─ time-api.js :3099 (GPS telemetry API)
21
+ └─ SNMP → MA-902 (192.168.1.30)
22
+ ```
23
+
24
+ **Key insight**: The yakmesh node and MA-902 are on the same LAN. The node can poll
25
+ the MA-902 via SNMP and serve live satellite telemetry over HTTPS. Same domain,
26
+ same DNS record, two protocols (UDP for NTP, TCP for HTTPS) — no conflict.
27
+
28
+ ---
29
+
30
+ ## 1. DNS — Point time.yakmesh.dev to Home IP
31
+
32
+ In **Hostinger hPanel → DNS Zone Editor** for `yakmesh.dev`:
33
+
34
+ | Type | Name | Value | TTL |
35
+ |------|--------|------------------|------|
36
+ | A | time | `<your-home-IP>` | 3600 |
37
+
38
+ Find your home IP: `curl ifconfig.me` from the LAN server.
39
+
40
+ > **CGNAT check**: Your router's WAN IP must match `ifconfig.me`.
41
+ > If they differ, you're behind carrier-grade NAT and need Workaround 2
42
+ > (tunnel via external VPS). See `ntp server.md` for details.
43
+
44
+ > **Dynamic IP**: If your ISP changes your IP, set up a cron job or script
45
+ > to update the A record via Hostinger's API. Or use a DDNS service.
46
+
47
+ ---
48
+
49
+ ## 2. AX3000 Port Forwarding
50
+
51
+ In the TP-Link AX3000 admin panel (typically `192.168.1.1`):
52
+
53
+ **Advanced → NAT Forwarding → Port Forwarding** (or Virtual Servers):
54
+
55
+ | Service | Protocol | External Port | Internal IP | Internal Port |
56
+ |-----------|----------|---------------|----------------|---------------|
57
+ | NTP | UDP | 123 | 192.168.1.30 | 123 |
58
+ | HTTPS | TCP | 443 | `<node-IP>` | 443 |
59
+
60
+ - **NTP** goes directly to the MA-902 — it speaks NTPv4 natively
61
+ - **HTTPS** goes to the yakmesh node running Caddy (which terminates TLS and
62
+ proxies `/api/*` to `time-api.js` on port 3099, serves static HTML for everything else)
63
+
64
+ Optional — also forward **TCP 80** (HTTP) to the node so Caddy can handle ACME
65
+ challenges for Let's Encrypt certificate provisioning and HTTP→HTTPS redirects.
66
+
67
+ ---
68
+
69
+ ## 3. Start time-api.js on the Node
70
+
71
+ The time API bridges MA-902 SNMP telemetry to HTTP/JSON endpoints.
72
+
73
+ ```bash
74
+ # From the yakmesh-node directory
75
+ node oracle/time-api.js
76
+ ```
77
+
78
+ Or integrate into the main node startup (server/index.js):
79
+
80
+ ```js
81
+ import { startTimeApi } from '../oracle/time-api.js';
82
+ await startTimeApi(); // Starts on port 3099
83
+ ```
84
+
85
+ **Endpoints served:**
86
+ - `GET /api/time` — Full time + satellite telemetry
87
+ - `GET /api/time/simple` — Minimal `{ t, s, q }`
88
+ - `GET /api/health` — MA-902 health + alarm status
89
+ - `HEAD /api/time` — Headers only, `X-Yakmesh-Time`
90
+
91
+ ---
92
+
93
+ ## 4. Start Caddy
94
+
95
+ ```bash
96
+ cd yakmesh-node
97
+ caddy run --config deploy/Caddyfile
98
+ ```
99
+
100
+ Caddy will:
101
+ - Auto-provision Let's Encrypt TLS cert for `time.yakmesh.dev`
102
+ - Serve `website/time/index.html` for browser requests
103
+ - Reverse proxy `/api/*` to `localhost:3099` (time-api.js)
104
+ - Handle CORS, compression, security headers
105
+
106
+ > **Override static root**: Set `YAKMESH_TIME_ROOT` env var if the website files
107
+ > are in a different location than `./website/time`.
108
+
109
+ ---
110
+
111
+ ## 5. Verify
112
+
113
+ ```bash
114
+ # NTP — should get a time response from the MA-902
115
+ ntpdate -q time.yakmesh.dev
116
+ # or
117
+ w32tm /stripchart /computer:time.yakmesh.dev /samples:3
118
+
119
+ # HTTPS landing page
120
+ curl -I https://time.yakmesh.dev/
121
+
122
+ # Time API
123
+ curl https://time.yakmesh.dev/api/time | jq .
124
+
125
+ # Health
126
+ curl https://time.yakmesh.dev/api/health | jq .
127
+ ```
128
+
129
+ ---
130
+
131
+ ## 6. Hostinger — Banner on Main Site
132
+
133
+ The main `yakmesh.dev` site on Hostinger gets a small banner/badge promoting
134
+ the time server. No time-specific pages need to be hosted on Hostinger.
135
+
136
+ Hostinger subdomains `ntp.yakmesh.dev` and `nts.yakmesh.dev` can either:
137
+ - Point DNS to home IP (same as `time.yakmesh.dev`)
138
+ - Stay on Hostinger serving simple redirect pages (`website/ntp/`, `website/nts/`)
139
+
140
+ ---
141
+
142
+ ## Firewall Checklist
143
+
144
+ | Port | Protocol | Direction | Purpose |
145
+ |----------|----------|-----------|----------------------------------|
146
+ | 123 | UDP | Inbound | NTP → MA-902 |
147
+ | 443 | TCP | Inbound | HTTPS → Caddy → landing + API |
148
+ | 80 | TCP | Inbound | HTTP → Caddy (ACME + redirect) |
149
+ | 161 | UDP | LAN only | SNMP v2c → MA-902 (never WAN) |
150
+
151
+ **Never expose SNMP (UDP 161) to the internet.** The MA-902 SNMP interface
152
+ is LAN-only; `time-api.js` bridges it to sanitized JSON over HTTPS.
153
+
154
+ ---
155
+
156
+ ## Future Enhancements
157
+
158
+ - **NTS (Network Time Security)**: When chrony 4.0+ is integrated, enable NTS-KE
159
+ on port 4460 for tamper-proof authenticated NTP (RFC 8915)
160
+ - **WireGuard tunnel**: If migrating to a VPS, tunnel NTP traffic from VPS → home
161
+ via WireGuard, keeping the MA-902 as the Stratum 1 source
162
+ - **DDNS automation**: Script to update Hostinger A record on IP change
163
+
164
+ ---
165
+
166
+ *Created: 2026-02-22 | Architecture: Self-hosted (Home-Base method)*