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,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 <id></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 <addr></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 <id></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 <id></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 <id></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>
|