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.
- package/CHANGELOG.md +637 -0
- package/CONTRIBUTING.md +42 -0
- package/Caddyfile +77 -0
- package/README.md +119 -29
- package/adapters/adapter-mlv-bible/README.md +124 -0
- package/adapters/adapter-mlv-bible/index.js +400 -0
- package/adapters/chat-mod-adapter.js +532 -0
- package/adapters/content-adapter.js +273 -0
- package/content/api.js +50 -41
- package/content/index.js +2 -2
- package/content/store.js +355 -173
- package/dashboard/index.html +19 -3
- package/database/replication.js +117 -37
- package/docs/CRYPTO-AGILITY.md +204 -0
- package/docs/MTLS-RESEARCH.md +367 -0
- package/docs/NAMCHE-SPEC.md +681 -0
- package/docs/PEERQUANTA-YAKMESH-INTEGRATION.md +407 -0
- package/docs/PRECISION-DISCLOSURE.md +96 -0
- package/docs/README.md +76 -0
- package/docs/ROADMAP-2.4.0.md +447 -0
- package/docs/ROADMAP-2.5.0.md +244 -0
- package/docs/SECURITY-AUDIT-REPORT.md +306 -0
- package/docs/SST-INTEGRATION.md +712 -0
- package/docs/STEADYWATCH-IMPLEMENTATION.md +303 -0
- package/docs/TERNARY-AUDIT-REPORT.md +247 -0
- package/docs/TME-FAQ.md +221 -0
- package/docs/WHITEPAPER.md +623 -0
- package/docs/adapters.html +1001 -0
- package/docs/advanced-systems.html +1045 -0
- package/docs/annex.html +1046 -0
- package/docs/api.html +970 -0
- package/docs/business/response-templates.md +160 -0
- package/docs/c2c.html +1225 -0
- package/docs/cli.html +1332 -0
- package/docs/configuration.html +1248 -0
- package/docs/darshan.html +1085 -0
- package/docs/dharma.html +966 -0
- package/docs/docs-bundle.html +1075 -0
- package/docs/docs.css +3120 -0
- package/docs/docs.js +556 -0
- package/docs/doko.html +969 -0
- package/docs/geo-proof.html +858 -0
- package/docs/getting-started.html +840 -0
- package/docs/gumba-tutorial.html +1144 -0
- package/docs/gumba.html +1098 -0
- package/docs/index.html +914 -0
- package/docs/jhilke.html +1312 -0
- package/docs/karma.html +1100 -0
- package/docs/katha.html +1037 -0
- package/docs/lama.html +978 -0
- package/docs/mandala.html +1067 -0
- package/docs/mani.html +964 -0
- package/docs/mantra.html +967 -0
- package/docs/mesh.html +1409 -0
- package/docs/nakpak.html +869 -0
- package/docs/namche.html +928 -0
- package/docs/nav-order.json +53 -0
- package/docs/prahari.html +1043 -0
- package/docs/prism-bash.min.js +1 -0
- package/docs/prism-javascript.min.js +1 -0
- package/docs/prism-json.min.js +1 -0
- package/docs/prism-tomorrow.min.css +1 -0
- package/docs/prism.min.js +1 -0
- package/docs/privacy.html +699 -0
- package/docs/quick-reference.html +1181 -0
- package/docs/sakshi.html +1402 -0
- package/docs/sandboxing.md +386 -0
- package/docs/seva.html +911 -0
- package/docs/sherpa.html +871 -0
- package/docs/studio.html +860 -0
- package/docs/stupa.html +995 -0
- package/docs/tailwind.min.css +2 -0
- package/docs/tattva.html +1332 -0
- package/docs/terms.html +686 -0
- package/docs/time-server-deployment.md +166 -0
- package/docs/time-sources.html +1392 -0
- package/docs/tivra.html +1127 -0
- package/docs/trademark-policy.html +686 -0
- package/docs/tribhuj.html +1183 -0
- package/docs/trust-security.html +1029 -0
- package/docs/tutorials/backup-recovery.html +654 -0
- package/docs/tutorials/dashboard.html +604 -0
- package/docs/tutorials/domain-setup.html +605 -0
- package/docs/tutorials/host-website.html +456 -0
- package/docs/tutorials/mesh-network.html +505 -0
- package/docs/tutorials/mobile-access.html +445 -0
- package/docs/tutorials/privacy.html +467 -0
- package/docs/tutorials/raspberry-pi.html +600 -0
- package/docs/tutorials/security-basics.html +539 -0
- package/docs/tutorials/share-files.html +431 -0
- package/docs/tutorials/troubleshooting.html +637 -0
- package/docs/tutorials/trust-karma.html +419 -0
- package/docs/tutorials/yak-protocol.html +456 -0
- package/docs/tutorials.html +1034 -0
- package/docs/vani.html +1270 -0
- package/docs/webserver.html +809 -0
- package/docs/yak-protocol.html +940 -0
- package/docs/yak-timeserver-design.md +475 -0
- package/docs/yakapp.html +1015 -0
- package/docs/ypc27.html +1069 -0
- package/docs/yurt.html +1344 -0
- package/embedded-docs/bundle.js +334 -74
- package/gossip/protocol.js +247 -27
- package/identity/key-resolver.js +262 -0
- package/identity/machine-seed.js +632 -0
- package/identity/node-key.js +669 -368
- package/identity/tribhuj-ratchet.js +506 -0
- package/knowledge-base.js +37 -8
- package/launcher/yakmesh.bat +62 -0
- package/launcher/yakmesh.sh +70 -0
- package/mesh/annex.js +462 -108
- package/mesh/beacon-broadcast.js +113 -1
- package/mesh/darshan.js +1718 -0
- package/mesh/gumba.js +1567 -0
- package/mesh/jhilke.js +651 -0
- package/mesh/katha.js +1012 -0
- package/mesh/nakpak-routing.js +8 -5
- package/mesh/network.js +724 -34
- package/mesh/pulse-sync.js +4 -1
- package/mesh/rate-limiter.js +127 -15
- package/mesh/seva.js +526 -0
- package/mesh/sherpa-discovery.js +89 -8
- package/mesh/sybil-defense.js +19 -5
- package/mesh/temporal-encoder.js +4 -3
- package/mesh/vani.js +1364 -0
- package/mesh/yurt.js +1340 -0
- package/models/entropy-sentinel.onnx +0 -0
- package/models/karma-trust.onnx +0 -0
- package/models/manifest.json +43 -0
- package/models/sakshi-anomaly.onnx +0 -0
- package/oracle/code-proof-protocol.js +7 -6
- package/oracle/codebase-lock.js +257 -28
- package/oracle/index.js +74 -15
- package/oracle/ma902-snmp.js +678 -0
- package/oracle/module-sealer.js +5 -3
- package/oracle/network-identity.js +16 -0
- package/oracle/packet-checksum.js +201 -0
- package/oracle/sst.js +579 -0
- package/oracle/ternary-144t.js +714 -0
- package/oracle/ternary-ml.js +481 -0
- package/oracle/time-api.js +239 -0
- package/oracle/time-source.js +137 -47
- package/oracle/validation-oracle-hardened.js +1111 -1071
- package/oracle/validation-oracle.js +4 -2
- package/oracle/ypc27.js +211 -0
- package/package.json +20 -3
- package/protocol/yak-handler.js +35 -9
- package/protocol/yak-protocol.js +28 -13
- package/reference/cpp/yakmesh_mceliece_shard.cpp +168 -0
- package/reference/cpp/yakmesh_ypc27.cpp +179 -0
- package/sbom.json +87 -0
- package/scripts/security-audit.mjs +264 -0
- package/scripts/update-docs-nav.js +194 -0
- package/scripts/update-docs-sidebar.cjs +164 -0
- package/security/crypto-config.js +4 -3
- package/security/dharma-moderation.js +517 -0
- package/security/doko-identity.js +193 -143
- package/security/domain-consensus.js +86 -85
- package/security/fs-hardening.js +620 -0
- package/security/hardware-attestation.js +5 -3
- package/security/hybrid-trust.js +227 -87
- package/security/karma-rate-limiter.js +692 -0
- package/security/khata-protocol.js +22 -21
- package/security/khata-trust-integration.js +277 -150
- package/security/memory-safety.js +635 -0
- package/security/mesh-auth.js +11 -10
- package/security/mesh-revocation.js +373 -5
- package/security/namche-gateway.js +298 -69
- package/security/sakshi.js +460 -3
- package/security/sangha.js +770 -0
- package/security/secure-config.js +473 -0
- package/security/silicon-parity.js +13 -10
- package/security/steadywatch.js +1142 -0
- package/security/strike-system.js +32 -3
- package/security/temporal-signing.js +488 -0
- package/security/trit-commitment.js +464 -0
- package/server/crypto/annex.js +247 -0
- package/server/darshan-api.js +343 -0
- package/server/index.js +3259 -362
- package/server/komm-api.js +668 -0
- package/utils/accel.js +2273 -0
- package/utils/ternary-id.js +79 -0
- package/utils/verify-worker.js +57 -0
- package/webserver/index.js +95 -5
- package/assets/yakmesh-logo.png +0 -0
- package/assets/yakmesh-logo.svg +0 -80
- package/assets/yakmesh-logo2.png +0 -0
- package/assets/yakmesh-logo2sm.png +0 -0
- package/assets/ymsm.png +0 -0
- package/website/assets/silhouettes/adapters.svg +0 -107
- package/website/assets/silhouettes/api-endpoints.svg +0 -115
- package/website/assets/silhouettes/atomic-clock.svg +0 -83
- package/website/assets/silhouettes/base-camp.svg +0 -81
- package/website/assets/silhouettes/bridge.svg +0 -69
- package/website/assets/silhouettes/docs-bundle.svg +0 -113
- package/website/assets/silhouettes/doko-basket.svg +0 -70
- package/website/assets/silhouettes/fortress.svg +0 -93
- package/website/assets/silhouettes/gateway.svg +0 -54
- package/website/assets/silhouettes/gears.svg +0 -93
- package/website/assets/silhouettes/globe-satellite.svg +0 -67
- package/website/assets/silhouettes/karma-wheel.svg +0 -137
- package/website/assets/silhouettes/lama-council.svg +0 -141
- package/website/assets/silhouettes/mandala-network.svg +0 -169
- package/website/assets/silhouettes/mani-stones.svg +0 -149
- package/website/assets/silhouettes/mantra-wheel.svg +0 -116
- package/website/assets/silhouettes/mesh-nodes.svg +0 -113
- package/website/assets/silhouettes/nakpak.svg +0 -56
- package/website/assets/silhouettes/peak-lightning.svg +0 -73
- package/website/assets/silhouettes/sherpa.svg +0 -69
- package/website/assets/silhouettes/stupa-tower.svg +0 -119
- package/website/assets/silhouettes/tattva-eye.svg +0 -78
- package/website/assets/silhouettes/terminal.svg +0 -74
- package/website/assets/silhouettes/webserver.svg +0 -145
- package/website/assets/silhouettes/yak.svg +0 -78
- package/website/assets/yakmesh-logo.png +0 -0
- package/website/assets/yakmesh-logo.webp +0 -0
- package/website/assets/yakmesh-logo128x140.webp +0 -0
- package/website/assets/yakmesh-logo2.png +0 -0
- package/website/assets/yakmesh-logo2.svg +0 -51
- package/website/assets/yakmesh-logo40x44.webp +0 -0
- package/website/assets/yakmesh.gif +0 -0
- package/website/assets/yakmesh.ico +0 -0
- package/website/assets/yakmesh.jpg +0 -0
- package/website/assets/yakmesh.pdf +0 -0
- package/website/assets/yakmesh.png +0 -0
- package/website/assets/yakmesh.svg +0 -70
- package/website/assets/yakmesh128.webp +0 -0
- package/website/assets/yakmesh32.png +0 -0
- package/website/assets/yakmesh32.svg +0 -65
- package/website/assets/yakmesh32o.ico +0 -2
- package/website/assets/yakmesh32o.svg +0 -65
- 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)*
|