yakmesh 2.9.0 → 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/Caddyfile +77 -0
- package/README.md +119 -29
- package/content/api.js +50 -41
- package/content/index.js +1 -2
- package/content/store.js +323 -177
- 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 +274 -114
- 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 +4 -1
- package/mesh/darshan.js +17 -5
- package/mesh/gumba.js +47 -13
- package/mesh/jhilke.js +651 -0
- package/mesh/katha.js +5 -2
- package/mesh/nakpak-routing.js +8 -5
- package/mesh/network.js +724 -34
- package/mesh/pulse-sync.js +4 -1
- 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/yurt.js +72 -17
- 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/packet-checksum.js +201 -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 +6 -5
- 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-sidebar.cjs +164 -0
- package/security/crypto-config.js +4 -3
- package/security/dharma-moderation.js +4 -3
- 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 +18 -5
- package/security/namche-gateway.js +298 -69
- package/security/sakshi.js +102 -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/scripts/update-docs-nav.cjs +0 -194
- package/update-docs-nav.cjs +0 -18
- package/update-nav.ps1 +0 -16
- 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
package/docs/TME-FAQ.md
ADDED
|
@@ -0,0 +1,221 @@
|
|
|
1
|
+
# TME Technical FAQ
|
|
2
|
+
|
|
3
|
+
## Frequently Asked Questions about Temporal Matrix Encoding
|
|
4
|
+
|
|
5
|
+
---
|
|
6
|
+
|
|
7
|
+
### Q1: How is YAKMESH TME different from Walrus/Red Stuff?
|
|
8
|
+
|
|
9
|
+
**Short Answer:** Walrus encodes data across **space** (multiple storage nodes). YAKMESH TME encodes data across **time** (multiple temporal slices).
|
|
10
|
+
|
|
11
|
+
**Detailed Answer:**
|
|
12
|
+
|
|
13
|
+
| Aspect | Walrus (Red Stuff) | YAKMESH (TME) |
|
|
14
|
+
|--------|-------------------|---------------|
|
|
15
|
+
| **Encoding Dimension** | 2D spatial grid | 1D temporal chain |
|
|
16
|
+
| **Purpose** | Long-term storage | Real-time transmission |
|
|
17
|
+
| **Recovery Trigger** | Node failure/churn | Packet loss/interference |
|
|
18
|
+
| **Sync Requirement** | Asynchronous (tolerates drift) | Atomic (nanosecond precision) |
|
|
19
|
+
| **Data Lifetime** | Epochs (days/weeks) | Milliseconds |
|
|
20
|
+
| **Recovery Latency** | Full download from quorum | Zero (parity from adjacent slices) |
|
|
21
|
+
|
|
22
|
+
Walrus treats the network like a **Hard Drive** — data lives across spatial nodes.
|
|
23
|
+
YAKMESH treats the network like a **Synthesizer** — data flows across temporal intervals.
|
|
24
|
+
|
|
25
|
+
---
|
|
26
|
+
|
|
27
|
+
### Q2: Why can't I just use Reed-Solomon or other erasure codes?
|
|
28
|
+
|
|
29
|
+
Traditional erasure coding (Reed-Solomon, LDPC, etc.) was designed for:
|
|
30
|
+
- Storage systems with slow failure detection
|
|
31
|
+
- Known, static topology
|
|
32
|
+
- Time-insensitive recovery
|
|
33
|
+
|
|
34
|
+
TME is designed for:
|
|
35
|
+
- Real-time networks where retransmission kills latency
|
|
36
|
+
- Dynamic mesh topology with unknown paths
|
|
37
|
+
- Time-critical recovery (sub-millisecond)
|
|
38
|
+
|
|
39
|
+
**The Key Difference:** Erasure codes don't leverage timing. TME uses the **atomic clock synchronization** as a recovery mechanism itself.
|
|
40
|
+
|
|
41
|
+
---
|
|
42
|
+
|
|
43
|
+
### Q3: What is "Cryptographic Time Binding"?
|
|
44
|
+
|
|
45
|
+
Each temporal slice contains a `temporalHash` computed from:
|
|
46
|
+
|
|
47
|
+
```javascript
|
|
48
|
+
temporalHash = SHA256(
|
|
49
|
+
data + // The actual payload
|
|
50
|
+
timestamp + // Nanosecond-precision BigInt
|
|
51
|
+
sequenceNumber + // Position in stream
|
|
52
|
+
streamId + // Unique stream identifier
|
|
53
|
+
prevTemporalHash + // Hash of previous slice
|
|
54
|
+
meshPosition // [x, y, z] topology coordinates
|
|
55
|
+
)
|
|
56
|
+
```
|
|
57
|
+
|
|
58
|
+
This creates an **immutable temporal chain**:
|
|
59
|
+
- If any slice is tampered with, the chain breaks
|
|
60
|
+
- Missing slices can be verified via `prevTemporalHash` in the next slice
|
|
61
|
+
- Timing proofs from neighbors can attest to a slice's existence
|
|
62
|
+
|
|
63
|
+
---
|
|
64
|
+
|
|
65
|
+
### Q4: What are "Timing Proofs"?
|
|
66
|
+
|
|
67
|
+
When a packet is lost, instead of requesting retransmission, the receiver asks mesh neighbors:
|
|
68
|
+
|
|
69
|
+
> "Did you see Slice N with hash X at time T?"
|
|
70
|
+
|
|
71
|
+
If multiple independent nodes agree (consensus), the receiver:
|
|
72
|
+
1. Knows the slice existed and wasn't fabricated
|
|
73
|
+
2. Can request the specific slice from a trusted neighbor
|
|
74
|
+
3. Can verify the slice's integrity via its temporal hash
|
|
75
|
+
|
|
76
|
+
This is faster than round-trip retransmission and provides Byzantine fault tolerance.
|
|
77
|
+
|
|
78
|
+
---
|
|
79
|
+
|
|
80
|
+
### Q5: Why does TME require atomic clock synchronization?
|
|
81
|
+
|
|
82
|
+
Without atomic sync, temporal encoding is impossible:
|
|
83
|
+
|
|
84
|
+
| Timing | Problem for TME |
|
|
85
|
+
|--------|-----------------|
|
|
86
|
+
| NTP (~10ms jitter) | Can't distinguish "late packet" from "wrong slice" |
|
|
87
|
+
| PTP (~100ns) | Borderline — works for coarse slicing |
|
|
88
|
+
| Atomic (~1ns) | Optimal — unambiguous slice identification |
|
|
89
|
+
|
|
90
|
+
With traditional timing, if a packet arrives 5ms late, is it:
|
|
91
|
+
- Slice N arriving late?
|
|
92
|
+
- Slice N+1 arriving early?
|
|
93
|
+
- A replay attack?
|
|
94
|
+
|
|
95
|
+
With atomic sync, all nodes share **Universal Mesh Time**. A packet's slice membership is deterministic based on its timestamp.
|
|
96
|
+
|
|
97
|
+
---
|
|
98
|
+
|
|
99
|
+
### Q6: Can TME be used without post-quantum cryptography?
|
|
100
|
+
|
|
101
|
+
Yes, but you lose quantum resistance. The components are separable:
|
|
102
|
+
|
|
103
|
+
| Component | Can Use Without PQ? |
|
|
104
|
+
|-----------|---------------------|
|
|
105
|
+
| Temporal slicing | ✅ Yes |
|
|
106
|
+
| Cryptographic chaining | ✅ Yes (use SHA-256) |
|
|
107
|
+
| Timing proofs | ✅ Yes |
|
|
108
|
+
| Packet signing | ⚠️ Yes, but vulnerable to HNDL |
|
|
109
|
+
|
|
110
|
+
YAKMESH uses ML-DSA-65 (FIPS 204) for signatures. If you swap in ECDSA, TME still works — but an adversary with a quantum computer could forge signatures in the future.
|
|
111
|
+
|
|
112
|
+
---
|
|
113
|
+
|
|
114
|
+
### Q7: What's the overhead of TME?
|
|
115
|
+
|
|
116
|
+
**Per-Slice Overhead:**
|
|
117
|
+
- Timestamp: 8 bytes (BigInt)
|
|
118
|
+
- Sequence number: 4 bytes
|
|
119
|
+
- Stream ID: 32 bytes (first slice only, then 0)
|
|
120
|
+
- Prev temporal hash: 32 bytes
|
|
121
|
+
- Temporal hash: 32 bytes
|
|
122
|
+
- Mesh position: 12 bytes (3x float32)
|
|
123
|
+
|
|
124
|
+
**Total:** ~88 bytes per slice (excluding payload)
|
|
125
|
+
|
|
126
|
+
For a 1KB slice size, that's ~8.5% overhead.
|
|
127
|
+
For a 4KB slice size, that's ~2.1% overhead.
|
|
128
|
+
|
|
129
|
+
**Computational Overhead:**
|
|
130
|
+
- 1 SHA-256 hash per slice (fast)
|
|
131
|
+
- BigInt timestamp handling (minimal)
|
|
132
|
+
|
|
133
|
+
---
|
|
134
|
+
|
|
135
|
+
### Q8: How does TME handle out-of-order delivery?
|
|
136
|
+
|
|
137
|
+
TME is **designed** for out-of-order delivery:
|
|
138
|
+
|
|
139
|
+
1. Each slice has a `sequenceNumber`
|
|
140
|
+
2. The receiver buffers slices by sequence
|
|
141
|
+
3. Missing sequences are detected immediately
|
|
142
|
+
4. Chain verification happens after buffering
|
|
143
|
+
|
|
144
|
+
```
|
|
145
|
+
Received: [0] [3] [1] [2]
|
|
146
|
+
Buffer: [0] [_] [_] [_] → [0] [_] [_] [3] → [0] [1] [_] [3] → [0] [1] [2] [3]
|
|
147
|
+
Chain verification: hash(0) → hash(1) → hash(2) → hash(3) ✓
|
|
148
|
+
```
|
|
149
|
+
|
|
150
|
+
---
|
|
151
|
+
|
|
152
|
+
### Q9: What percentage of slices must arrive for reconstruction?
|
|
153
|
+
|
|
154
|
+
Default threshold: **60%** (configurable via `TME_CONFIG.minSlicesForReconstruction`)
|
|
155
|
+
|
|
156
|
+
With 60% of slices:
|
|
157
|
+
- Chain gaps are detectable
|
|
158
|
+
- Timing proofs can verify missing slices existed
|
|
159
|
+
- Neighbors can supply specific missing slices
|
|
160
|
+
|
|
161
|
+
Below 60%:
|
|
162
|
+
- Too many gaps for reliable chain verification
|
|
163
|
+
- Reconstruction degrades to traditional request/retry
|
|
164
|
+
|
|
165
|
+
---
|
|
166
|
+
|
|
167
|
+
### Q10: Is TME patented?
|
|
168
|
+
|
|
169
|
+
TME (Temporal Matrix Encoding) is a **proprietary technology** of the YAKMESH project.
|
|
170
|
+
|
|
171
|
+
It is **not** covered by the Walrus/Red Stuff patents because:
|
|
172
|
+
1. Different encoding dimension (time vs. space)
|
|
173
|
+
2. Different recovery mechanism (timing proofs vs. quorum download)
|
|
174
|
+
3. Different hardware requirements (atomic sync vs. asynchronous)
|
|
175
|
+
|
|
176
|
+
YAKMESH™ itself has USPTO Serial No. 99594620.
|
|
177
|
+
|
|
178
|
+
---
|
|
179
|
+
|
|
180
|
+
### Q11: Can I use TME in my project?
|
|
181
|
+
|
|
182
|
+
TME is available in the `yakmesh` npm package under MIT license:
|
|
183
|
+
|
|
184
|
+
```bash
|
|
185
|
+
npm install yakmesh
|
|
186
|
+
```
|
|
187
|
+
|
|
188
|
+
```javascript
|
|
189
|
+
import { TemporalMeshEncoder } from 'yakmesh/mesh/temporal-encoder.js';
|
|
190
|
+
|
|
191
|
+
const encoder = new TemporalMeshEncoder();
|
|
192
|
+
const { streamId, slices, metadata } = encoder.encode('Hello TME!');
|
|
193
|
+
```
|
|
194
|
+
|
|
195
|
+
---
|
|
196
|
+
|
|
197
|
+
### Q12: What's the relationship between TME and the Yielding Atomic Kernel?
|
|
198
|
+
|
|
199
|
+
The **Yielding Atomic Kernel (YAK)** is the core system that provides:
|
|
200
|
+
- Atomic clock synchronization
|
|
201
|
+
- Post-quantum cryptography (ML-DSA-65)
|
|
202
|
+
- Byzantine fault tolerance
|
|
203
|
+
|
|
204
|
+
**TME** is a protocol that runs on top of YAK, exploiting its unique capabilities:
|
|
205
|
+
- Uses atomic timing for temporal slicing
|
|
206
|
+
- Uses PQ signatures for slice authentication
|
|
207
|
+
- Uses reputation systems for timing proof validation
|
|
208
|
+
|
|
209
|
+
TME without YAK is like HTTPS without TLS — technically possible, but missing the security guarantees.
|
|
210
|
+
|
|
211
|
+
---
|
|
212
|
+
|
|
213
|
+
## Still have questions?
|
|
214
|
+
|
|
215
|
+
- **GitHub:** https://github.com/yakmesh/yakmesh
|
|
216
|
+
- **Website:** https://yakmesh.dev
|
|
217
|
+
- **npm:** https://www.npmjs.com/package/yakmesh
|
|
218
|
+
|
|
219
|
+
---
|
|
220
|
+
|
|
221
|
+
*Powered by TME — The world's first temporal-erasure protocol for atomically-synced mesh networks.*
|