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,456 @@
|
|
|
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>YAK:// Protocol - YAKMESH Tutorials</title>
|
|
10
|
+
<meta name="description" content="Learn how to use the yak:// protocol to share and retrieve content across the YAKMESH network with cryptographic links.">
|
|
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
|
+
</style>
|
|
25
|
+
</head>
|
|
26
|
+
<body class="bg-mountain-900 text-white min-h-screen">
|
|
27
|
+
|
|
28
|
+
<nav class="docs-sidebar" id="sidebar">
|
|
29
|
+
<a href="../index.html" class="sidebar-logo">
|
|
30
|
+
<span class="logo-icon">🏔️</span>
|
|
31
|
+
<span class="logo-text">Yakmesh</span>
|
|
32
|
+
</a>
|
|
33
|
+
<a href="/dashboard" class="sidebar-dashboard-link"><span>📊</span> <span>Dashboard</span></a>
|
|
34
|
+
<ul class="sidebar-nav">
|
|
35
|
+
<li><a href="../index.html"><span>🏠</span> <span>Overview</span></a></li>
|
|
36
|
+
<li><a href="../getting-started.html"><span>🚀</span> <span>Getting Started</span></a></li>
|
|
37
|
+
<li><a href="../tutorials.html"><span>📖</span> <span>Tutorials</span></a></li>
|
|
38
|
+
<li><a href="../yak-protocol.html" class="active"><span class="yak-icon"></span> <span>YAK://</span></a></li>
|
|
39
|
+
<li><a href="../annex.html"><span>🌉</span> <span>ANNEX</span></a></li>
|
|
40
|
+
<li><a href="../nakpak.html"><span>🎒</span> <span>NAKPAK</span></a></li>
|
|
41
|
+
<li><a href="../namche.html"><span>🚪</span> <span>NAMCHE</span></a></li>
|
|
42
|
+
<li><a href="../doko.html"><span>🧺</span> <span>DOKO</span></a></li>
|
|
43
|
+
<li><a href="../sherpa.html"><span>🧗</span> <span>SHERPA</span></a></li>
|
|
44
|
+
<li><a href="../mandala.html"><span>🌐</span> <span>MANDALA</span></a></li>
|
|
45
|
+
<li><a href="../mantra.html"><span>🕉️</span> <span>MANTRA</span></a></li>
|
|
46
|
+
<li><a href="../gumba.html"><span>🛕</span> <span>GUMBA</span></a></li>
|
|
47
|
+
<li><a href="../yurt.html"><span>🏕️</span> <span>YURT</span></a></li>
|
|
48
|
+
<li><a href="../katha.html"><span>💬</span> <span>KATHA</span></a></li>
|
|
49
|
+
<li><a href="../vani.html"><span>🎙️</span> <span>VANI</span></a></li>
|
|
50
|
+
<li><a href="../darshan.html"><span>👁️</span> <span>DARSHAN</span></a></li>
|
|
51
|
+
<li><a href="../stupa.html"><span>🛕</span> <span>STUPA</span></a></li>
|
|
52
|
+
<li><a href="../lama.html"><span>🔮</span> <span>LAMA</span></a></li>
|
|
53
|
+
<li><a href="../mani.html"><span>⏱️</span> <span>MANI</span></a></li>
|
|
54
|
+
<li><a href="../karma.html"><span>☯️</span> <span>KARMA</span></a></li>
|
|
55
|
+
<li><a href="../tattva.html"><span>🔯</span> <span>TATTVA</span></a></li>
|
|
56
|
+
<li><a href="../tribhuj.html"><span>🔺</span> <span>TRIBHUJ</span></a></li>
|
|
57
|
+
<li><a href="../ypc27.html"><span>🔐</span> <span>YPC-27</span></a></li>
|
|
58
|
+
<li><a href="../sakshi.html"><span>👁️</span> <span>SAKSHI</span></a></li>
|
|
59
|
+
<li><a href="../geo-proof.html"><span>🌍</span> <span>PRAMAAN</span></a></li>
|
|
60
|
+
<li><a href="../trust-security.html"><span>🔒</span> <span>SURAKSHA</span></a></li>
|
|
61
|
+
<li><a href="../docs-bundle.html"><span>📚</span> <span>GRANTH</span></a></li>
|
|
62
|
+
<li><a href="../api.html"><span>📡</span> <span>API</span></a></li>
|
|
63
|
+
<li><a href="../adapters.html"><span>🔌</span> <span>Adapters</span></a></li>
|
|
64
|
+
<li><a href="../studio.html"><span>🎨</span> <span>Studio</span></a></li>
|
|
65
|
+
<li><a href="../quick-reference.html"><span>📋</span> <span>Quick Ref</span></a></li>
|
|
66
|
+
</ul>
|
|
67
|
+
</nav>
|
|
68
|
+
|
|
69
|
+
<button class="sidebar-toggle" id="sidebarToggle" title="Toggle sidebar">
|
|
70
|
+
<svg xmlns="http://www.w3.org/2000/svg" fill="none" viewBox="0 0 24 24" stroke="currentColor">
|
|
71
|
+
<path stroke-linecap="round" stroke-linejoin="round" stroke-width="2" d="M11 19l-7-7 7-7m8 14l-7-7 7-7" />
|
|
72
|
+
</svg>
|
|
73
|
+
</button>
|
|
74
|
+
|
|
75
|
+
<div class="sidebar-overlay" id="sidebarOverlay"></div>
|
|
76
|
+
|
|
77
|
+
<main class="docs-main" id="mainContent">
|
|
78
|
+
<div class="docs-content">
|
|
79
|
+
|
|
80
|
+
<!-- Breadcrumb -->
|
|
81
|
+
<div class="mb-6">
|
|
82
|
+
<a href="../tutorials.html" class="theme-accent hover:underline">← Back to Tutorials</a>
|
|
83
|
+
</div>
|
|
84
|
+
|
|
85
|
+
<!-- Page Header -->
|
|
86
|
+
<div class="mb-8">
|
|
87
|
+
<div class="flex items-center gap-3 mb-2">
|
|
88
|
+
<span class="text-4xl">🐃</span>
|
|
89
|
+
<h1 class="text-4xl font-bold">YAK:// Protocol</h1>
|
|
90
|
+
<span class="theme-badge text-xs px-2 py-1 rounded-full">10 min</span>
|
|
91
|
+
</div>
|
|
92
|
+
<p class="theme-accent text-lg">Share content with cryptographic links that work everywhere</p>
|
|
93
|
+
<p class="text-mountain-300 mt-2">
|
|
94
|
+
The yak:// protocol lets you create permanent, content-addressed links to your files and folders.
|
|
95
|
+
These links are cryptographically verifiable and work across the entire YAKMESH network.
|
|
96
|
+
</p>
|
|
97
|
+
</div>
|
|
98
|
+
|
|
99
|
+
<!-- What is YAK Protocol -->
|
|
100
|
+
<div class="theme-callout mb-8">
|
|
101
|
+
<h3 class="font-bold text-lg mb-3">🐃 What is yak://?</h3>
|
|
102
|
+
<p class="text-mountain-300 mb-4">
|
|
103
|
+
The <code class="bg-mountain-800 px-2 py-1 rounded theme-accent">yak://</code> protocol is YAKMESH's
|
|
104
|
+
content-addressing system. Unlike regular URLs that point to a server location, yak:// links
|
|
105
|
+
point to the <strong>content itself</strong>.
|
|
106
|
+
</p>
|
|
107
|
+
<ul class="text-mountain-300 space-y-2">
|
|
108
|
+
<li>• <strong>Content-addressed:</strong> The link is derived from the content's cryptographic hash</li>
|
|
109
|
+
<li>• <strong>Self-verifying:</strong> If the content changes, the link changes</li>
|
|
110
|
+
<li>• <strong>Decentralized:</strong> Any YAKMESH node can serve the content</li>
|
|
111
|
+
<li>• <strong>Post-quantum secure:</strong> Uses quantum-resistant cryptographic primitives</li>
|
|
112
|
+
</ul>
|
|
113
|
+
</div>
|
|
114
|
+
|
|
115
|
+
<!-- Anatomy of a YAK link -->
|
|
116
|
+
<div class="tutorial-card">
|
|
117
|
+
<h3 class="font-bold text-xl mb-4">Anatomy of a YAK:// Link</h3>
|
|
118
|
+
<p class="text-mountain-300 mb-4">
|
|
119
|
+
YAKMESH uses human-readable <strong>iO names</strong> instead of ugly hashes:
|
|
120
|
+
</p>
|
|
121
|
+
<pre class="language-text"><code>yak://qubit-lattice-prism/path/to/file.txt</code></pre>
|
|
122
|
+
<div class="bg-mountain-800 rounded-lg p-4 mt-4">
|
|
123
|
+
<ul class="text-mountain-300 space-y-2 text-sm">
|
|
124
|
+
<li><code class="text-emerald-400">yak://</code> — Protocol identifier</li>
|
|
125
|
+
<li><code class="text-emerald-400">qubit-lattice-prism</code> — iO name (human-readable content address)</li>
|
|
126
|
+
<li><code class="text-emerald-400">/path/to/file.txt</code> — Optional path within the content</li>
|
|
127
|
+
</ul>
|
|
128
|
+
</div>
|
|
129
|
+
<div class="info-callout mt-4">
|
|
130
|
+
<p class="text-sm text-mountain-300">
|
|
131
|
+
<strong>💡 Why iO names?</strong> Instead of cryptographic hashes like "QmX7k2n9...", YAKMESH derives
|
|
132
|
+
a 3-word name from a 256-word quantum-themed wordlist. The name is deterministic —
|
|
133
|
+
the same content always produces the same iO name. Easy to share verbally!
|
|
134
|
+
</p>
|
|
135
|
+
</div>
|
|
136
|
+
</div>
|
|
137
|
+
|
|
138
|
+
<!-- Step 1: Ensure YAKMESH is Running -->
|
|
139
|
+
<div class="tutorial-card">
|
|
140
|
+
<h3 class="font-bold text-xl mb-4">
|
|
141
|
+
<span class="step-number">1</span>
|
|
142
|
+
Ensure YAKMESH is Running
|
|
143
|
+
</h3>
|
|
144
|
+
<p class="text-mountain-300 mb-4">
|
|
145
|
+
Before using the yak:// protocol, make sure your YAKMESH node is running:
|
|
146
|
+
</p>
|
|
147
|
+
<pre class="language-bash"><code># Check if YAKMESH is running
|
|
148
|
+
yakmesh status
|
|
149
|
+
|
|
150
|
+
# Start if needed
|
|
151
|
+
yakmesh start</code></pre>
|
|
152
|
+
<p class="text-mountain-300 mt-4">
|
|
153
|
+
You should see a status indicating the node is active and connected to the mesh.
|
|
154
|
+
</p>
|
|
155
|
+
</div>
|
|
156
|
+
|
|
157
|
+
<!-- Step 2: Register the Protocol -->
|
|
158
|
+
<div class="tutorial-card">
|
|
159
|
+
<h3 class="font-bold text-xl mb-4">
|
|
160
|
+
<span class="step-number">2</span>
|
|
161
|
+
Register the Protocol Handler
|
|
162
|
+
</h3>
|
|
163
|
+
<p class="text-mountain-300 mb-4">
|
|
164
|
+
To open yak:// links directly from your browser, register YAKMESH as the protocol handler:
|
|
165
|
+
</p>
|
|
166
|
+
<pre class="language-bash"><code># Register yak:// protocol with your system
|
|
167
|
+
yakmesh yak register-handler
|
|
168
|
+
|
|
169
|
+
# Output:
|
|
170
|
+
# ✓ Protocol handler registered
|
|
171
|
+
# You can now open yak:// links in your browser</code></pre>
|
|
172
|
+
|
|
173
|
+
<div class="info-callout mt-4">
|
|
174
|
+
<p class="text-sm text-mountain-300">
|
|
175
|
+
<strong>Note:</strong> On Windows, this adds a registry entry. On macOS/Linux, it registers
|
|
176
|
+
with xdg-open or Launch Services. You may need admin/sudo privileges.
|
|
177
|
+
</p>
|
|
178
|
+
</div>
|
|
179
|
+
</div>
|
|
180
|
+
|
|
181
|
+
<!-- Step 3: Share Content -->
|
|
182
|
+
<div class="tutorial-card">
|
|
183
|
+
<h3 class="font-bold text-xl mb-4">
|
|
184
|
+
<span class="step-number">3</span>
|
|
185
|
+
Share Content
|
|
186
|
+
</h3>
|
|
187
|
+
<p class="text-mountain-300 mb-4">
|
|
188
|
+
You can share files, folders, or entire directories using the yak:// protocol:
|
|
189
|
+
</p>
|
|
190
|
+
|
|
191
|
+
<h4 class="font-bold text-lg mt-6 mb-3">Share a Single File</h4>
|
|
192
|
+
<pre class="language-bash"><code># Register a single file
|
|
193
|
+
yakmesh yak add myfile.txt
|
|
194
|
+
|
|
195
|
+
# Output:
|
|
196
|
+
# ✓ File added to YAK network
|
|
197
|
+
# Link: yak://photon-cipher-node/myfile.txt
|
|
198
|
+
# iO code: photon-cipher-node</code></pre>
|
|
199
|
+
|
|
200
|
+
<h4 class="font-bold text-lg mt-6 mb-3">Share a Directory</h4>
|
|
201
|
+
<pre class="language-bash"><code># Register an entire directory (recursive)
|
|
202
|
+
yakmesh yak add ./my-website/
|
|
203
|
+
|
|
204
|
+
# Output:
|
|
205
|
+
# ✓ Directory added (42 files, 2.3 MB)
|
|
206
|
+
# Link: yak://qubit-lattice-prism/
|
|
207
|
+
#
|
|
208
|
+
# Individual files accessible:
|
|
209
|
+
# yak://qubit-lattice-prism/index.html
|
|
210
|
+
# yak://qubit-lattice-prism/css/style.css
|
|
211
|
+
# yak://qubit-lattice-prism/images/logo.png</code></pre>
|
|
212
|
+
|
|
213
|
+
<h4 class="font-bold text-lg mt-6 mb-3">Programmatic (JavaScript)</h4>
|
|
214
|
+
<pre class="language-javascript"><code>import { createNode } from 'yakmesh';
|
|
215
|
+
|
|
216
|
+
async function shareContent() {
|
|
217
|
+
const node = await createNode();
|
|
218
|
+
await node.start();
|
|
219
|
+
|
|
220
|
+
// Share a file
|
|
221
|
+
const result = await node.yak.add('./document.pdf');
|
|
222
|
+
console.log('File link:', result.yakUrl);
|
|
223
|
+
// yak://fermion-hash-crystal/document.pdf
|
|
224
|
+
console.log('iO code:', result.ioName);
|
|
225
|
+
// fermion-hash-crystal
|
|
226
|
+
|
|
227
|
+
// Share a directory
|
|
228
|
+
const dirResult = await node.yak.add('./my-website/', {
|
|
229
|
+
recursive: true
|
|
230
|
+
});
|
|
231
|
+
console.log('Directory link:', dirResult.yakUrl);
|
|
232
|
+
// yak://qubit-lattice-prism/
|
|
233
|
+
|
|
234
|
+
// Share with metadata
|
|
235
|
+
const richResult = await node.yak.add('./photo.jpg', {
|
|
236
|
+
name: 'Vacation Photo',
|
|
237
|
+
description: 'Beach sunset',
|
|
238
|
+
tags: ['photo', 'vacation', '2025']
|
|
239
|
+
});
|
|
240
|
+
console.log('Share this iO code:', richResult.ioName);
|
|
241
|
+
// Just tell your friend: "hadron-merkle-wave"
|
|
242
|
+
}
|
|
243
|
+
|
|
244
|
+
shareContent();</code></pre>
|
|
245
|
+
</div>
|
|
246
|
+
|
|
247
|
+
<!-- Step 4: Retrieve Content -->
|
|
248
|
+
<div class="tutorial-card">
|
|
249
|
+
<h3 class="font-bold text-xl mb-4">
|
|
250
|
+
<span class="step-number">4</span>
|
|
251
|
+
Retrieve Content
|
|
252
|
+
</h3>
|
|
253
|
+
<p class="text-mountain-300 mb-4">
|
|
254
|
+
Retrieving content from a yak:// link is just as easy:
|
|
255
|
+
</p>
|
|
256
|
+
|
|
257
|
+
<h4 class="font-bold text-lg mt-6 mb-3">Via CLI</h4>
|
|
258
|
+
<pre class="language-bash"><code># Download using iO name (human-readable)
|
|
259
|
+
yakmesh yak get yak://hadron-merkle-wave/myfile.txt
|
|
260
|
+
|
|
261
|
+
# Output:
|
|
262
|
+
# ✓ Resolving iO name: hadron-merkle-wave
|
|
263
|
+
# ✓ Downloading from 3 peers...
|
|
264
|
+
# ✓ Saved to: ./myfile.txt (1.2 KB)
|
|
265
|
+
|
|
266
|
+
# Download to specific location
|
|
267
|
+
yakmesh yak get yak://hadron-merkle-wave/myfile.txt -o ~/Downloads/
|
|
268
|
+
|
|
269
|
+
# Download a directory
|
|
270
|
+
yakmesh yak get yak://qubit-lattice-prism/ -o ./website-copy/</code></pre>
|
|
271
|
+
|
|
272
|
+
<h4 class="font-bold text-lg mt-6 mb-3">Via Browser</h4>
|
|
273
|
+
<p class="text-mountain-300 mb-4">
|
|
274
|
+
If you registered the protocol handler, just paste the yak:// link in your browser:
|
|
275
|
+
</p>
|
|
276
|
+
<div class="bg-mountain-800 rounded-lg p-4 text-center">
|
|
277
|
+
<code class="theme-accent font-mono">yak://hadron-merkle-wave/myfile.txt</code>
|
|
278
|
+
</div>
|
|
279
|
+
<p class="text-mountain-400 text-sm mt-4">
|
|
280
|
+
Your YAKMESH node will intercept the request and serve the content locally.
|
|
281
|
+
</p>
|
|
282
|
+
|
|
283
|
+
<h4 class="font-bold text-lg mt-6 mb-3">Programmatic (JavaScript)</h4>
|
|
284
|
+
<pre class="language-javascript"><code>import { createNode } from 'yakmesh';
|
|
285
|
+
|
|
286
|
+
async function retrieveContent() {
|
|
287
|
+
const node = await createNode();
|
|
288
|
+
await node.start();
|
|
289
|
+
|
|
290
|
+
// Get file content using iO name
|
|
291
|
+
const content = await node.yak.get('yak://hadron-merkle-wave/myfile.txt');
|
|
292
|
+
console.log('Content:', content.toString());
|
|
293
|
+
|
|
294
|
+
// Stream large files
|
|
295
|
+
const stream = await node.yak.getStream('yak://photon-cipher-node/video.mp4');
|
|
296
|
+
stream.pipe(fs.createWriteStream('./video.mp4'));
|
|
297
|
+
|
|
298
|
+
// Get metadata without downloading
|
|
299
|
+
const meta = await node.yak.stat('yak://qubit-lattice-prism/');
|
|
300
|
+
console.log('Size:', meta.size);
|
|
301
|
+
console.log('Files:', meta.files);
|
|
302
|
+
console.log('Peers:', meta.providers.length);
|
|
303
|
+
console.log('iO name:', meta.ioName);
|
|
304
|
+
}
|
|
305
|
+
|
|
306
|
+
retrieveContent();</code></pre>
|
|
307
|
+
</div>
|
|
308
|
+
|
|
309
|
+
<!-- Step 5: Useful CLI Commands -->
|
|
310
|
+
<div class="tutorial-card">
|
|
311
|
+
<h3 class="font-bold text-xl mb-4">
|
|
312
|
+
<span class="step-number">5</span>
|
|
313
|
+
Useful CLI Commands
|
|
314
|
+
</h3>
|
|
315
|
+
<p class="text-mountain-300 mb-4">
|
|
316
|
+
Here's a quick reference of yak:// CLI commands:
|
|
317
|
+
</p>
|
|
318
|
+
|
|
319
|
+
<div class="overflow-x-auto">
|
|
320
|
+
<table class="w-full text-sm">
|
|
321
|
+
<thead>
|
|
322
|
+
<tr class="border-b border-mountain-700">
|
|
323
|
+
<th class="text-left py-2 px-3">Command</th>
|
|
324
|
+
<th class="text-left py-2 px-3">Description</th>
|
|
325
|
+
</tr>
|
|
326
|
+
</thead>
|
|
327
|
+
<tbody class="text-mountain-300">
|
|
328
|
+
<tr class="border-b border-mountain-800">
|
|
329
|
+
<td class="py-2 px-3 font-mono text-emerald-400">yakmesh yak add <path></td>
|
|
330
|
+
<td class="py-2 px-3">Add file/directory and get yak:// link</td>
|
|
331
|
+
</tr>
|
|
332
|
+
<tr class="border-b border-mountain-800">
|
|
333
|
+
<td class="py-2 px-3 font-mono text-emerald-400">yakmesh yak get <link></td>
|
|
334
|
+
<td class="py-2 px-3">Download content from yak:// link</td>
|
|
335
|
+
</tr>
|
|
336
|
+
<tr class="border-b border-mountain-800">
|
|
337
|
+
<td class="py-2 px-3 font-mono text-emerald-400">yakmesh yak stat <link></td>
|
|
338
|
+
<td class="py-2 px-3">Show metadata (size, peers, etc.)</td>
|
|
339
|
+
</tr>
|
|
340
|
+
<tr class="border-b border-mountain-800">
|
|
341
|
+
<td class="py-2 px-3 font-mono text-emerald-400">yakmesh yak ls <link></td>
|
|
342
|
+
<td class="py-2 px-3">List contents of a directory link</td>
|
|
343
|
+
</tr>
|
|
344
|
+
<tr class="border-b border-mountain-800">
|
|
345
|
+
<td class="py-2 px-3 font-mono text-emerald-400">yakmesh yak pin <link></td>
|
|
346
|
+
<td class="py-2 px-3">Pin content locally (prevent garbage collection)</td>
|
|
347
|
+
</tr>
|
|
348
|
+
<tr class="border-b border-mountain-800">
|
|
349
|
+
<td class="py-2 px-3 font-mono text-emerald-400">yakmesh yak unpin <link></td>
|
|
350
|
+
<td class="py-2 px-3">Unpin content (allow garbage collection)</td>
|
|
351
|
+
</tr>
|
|
352
|
+
<tr class="border-b border-mountain-800">
|
|
353
|
+
<td class="py-2 px-3 font-mono text-emerald-400">yakmesh yak pins</td>
|
|
354
|
+
<td class="py-2 px-3">List all pinned content</td>
|
|
355
|
+
</tr>
|
|
356
|
+
<tr>
|
|
357
|
+
<td class="py-2 px-3 font-mono text-emerald-400">yakmesh yak register-handler</td>
|
|
358
|
+
<td class="py-2 px-3">Register yak:// protocol with OS</td>
|
|
359
|
+
</tr>
|
|
360
|
+
</tbody>
|
|
361
|
+
</table>
|
|
362
|
+
</div>
|
|
363
|
+
</div>
|
|
364
|
+
|
|
365
|
+
<!-- How It Works -->
|
|
366
|
+
<div class="tutorial-card">
|
|
367
|
+
<h3 class="font-bold text-xl mb-4">🔬 How It Works</h3>
|
|
368
|
+
<p class="text-mountain-300 mb-4">
|
|
369
|
+
When you share content with yak://:
|
|
370
|
+
</p>
|
|
371
|
+
<ol class="text-mountain-300 space-y-3 ml-4">
|
|
372
|
+
<li>
|
|
373
|
+
<strong>1. Content is hashed:</strong> Your file/directory is processed through NAKPAK
|
|
374
|
+
(YAKMESH's content-addressing system) to generate a unique cryptographic fingerprint.
|
|
375
|
+
</li>
|
|
376
|
+
<li>
|
|
377
|
+
<strong>2. iO name derived:</strong> The hash is converted to a human-readable 3-word name
|
|
378
|
+
using a 256-word quantum-themed wordlist. Same content = same name, always.
|
|
379
|
+
</li>
|
|
380
|
+
<li>
|
|
381
|
+
<strong>3. Announced to the network:</strong> Your node announces that it has this content,
|
|
382
|
+
making it discoverable by other nodes.
|
|
383
|
+
</li>
|
|
384
|
+
<li>
|
|
385
|
+
<strong>4. Verified on retrieval:</strong> When someone fetches the content, their node
|
|
386
|
+
verifies the cryptographic fingerprint matches — guaranteeing integrity.
|
|
387
|
+
</li>
|
|
388
|
+
</ol>
|
|
389
|
+
</div>
|
|
390
|
+
|
|
391
|
+
<!-- Summary -->
|
|
392
|
+
<div class="theme-callout">
|
|
393
|
+
<h3 class="font-bold text-lg mb-3">✅ Summary</h3>
|
|
394
|
+
<p class="text-mountain-300 mb-4">
|
|
395
|
+
You've learned how to use the yak:// protocol to share and retrieve content:
|
|
396
|
+
</p>
|
|
397
|
+
<ul class="text-mountain-300 space-y-2">
|
|
398
|
+
<li>✓ Understand how content-addressed links work</li>
|
|
399
|
+
<li>✓ Register the yak:// protocol handler</li>
|
|
400
|
+
<li>✓ Share files and directories with permanent links</li>
|
|
401
|
+
<li>✓ Retrieve content via CLI, browser, or JavaScript</li>
|
|
402
|
+
<li>✓ Use CLI commands for managing yak:// content</li>
|
|
403
|
+
</ul>
|
|
404
|
+
<p class="text-mountain-400 text-sm mt-4">
|
|
405
|
+
<strong>Next:</strong> Learn how to join the mesh network and connect with peers →
|
|
406
|
+
</p>
|
|
407
|
+
</div>
|
|
408
|
+
|
|
409
|
+
<!-- Troubleshooting -->
|
|
410
|
+
<div class="warning-callout mt-8">
|
|
411
|
+
<h3 class="font-bold text-lg mb-3" style="color: #fbbf24;">🔧 Troubleshooting</h3>
|
|
412
|
+
<ul class="text-mountain-300 space-y-3">
|
|
413
|
+
<li>
|
|
414
|
+
<strong>Link not found / No peers?</strong><br>
|
|
415
|
+
<span class="text-mountain-400">The original node sharing the content must be online. Check with <code class="bg-mountain-800 px-2 py-1 rounded">yakmesh yak stat <link></code></span>
|
|
416
|
+
</li>
|
|
417
|
+
<li>
|
|
418
|
+
<strong>Protocol handler not working?</strong><br>
|
|
419
|
+
<span class="text-mountain-400">Try running <code class="bg-mountain-800 px-2 py-1 rounded">yakmesh yak register-handler</code> with admin privileges.</span>
|
|
420
|
+
</li>
|
|
421
|
+
<li>
|
|
422
|
+
<strong>Download stuck?</strong><br>
|
|
423
|
+
<span class="text-mountain-400">Check your mesh connection: <code class="bg-mountain-800 px-2 py-1 rounded">yakmesh mesh peers</code></span>
|
|
424
|
+
</li>
|
|
425
|
+
</ul>
|
|
426
|
+
</div>
|
|
427
|
+
|
|
428
|
+
<!-- Navigation Footer -->
|
|
429
|
+
<div class="border-t border-mountain-700 mt-12 pt-8">
|
|
430
|
+
<div class="flex flex-col sm:flex-row gap-4">
|
|
431
|
+
<a href="host-website.html" class="flex-1 block bg-mountain-800 border border-mountain-700 rounded-xl p-4 hover:border-emerald-500 transition group">
|
|
432
|
+
<div class="text-xs text-mountain-400 mb-1">← Previous</div>
|
|
433
|
+
<div class="flex items-center gap-2">
|
|
434
|
+
<span class="text-xl">🌐</span>
|
|
435
|
+
<span class="font-semibold group-hover:text-emerald-400">Host a Website</span>
|
|
436
|
+
</div>
|
|
437
|
+
</a>
|
|
438
|
+
<a href="mesh-network.html" class="flex-1 block bg-mountain-800 border border-mountain-700 rounded-xl p-4 hover:border-emerald-500 transition group">
|
|
439
|
+
<div class="text-xs text-mountain-400 mb-1">Next →</div>
|
|
440
|
+
<div class="flex items-center gap-2">
|
|
441
|
+
<span class="text-xl">🕸️</span>
|
|
442
|
+
<span class="font-semibold group-hover:text-emerald-400">Join the Mesh Network</span>
|
|
443
|
+
</div>
|
|
444
|
+
</a>
|
|
445
|
+
</div>
|
|
446
|
+
</div>
|
|
447
|
+
|
|
448
|
+
</div>
|
|
449
|
+
</main>
|
|
450
|
+
|
|
451
|
+
<script src="../prism.min.js"></script>
|
|
452
|
+
<script src="../prism-javascript.min.js"></script>
|
|
453
|
+
<script src="../prism-bash.min.js"></script>
|
|
454
|
+
<script src="../docs.js"></script>
|
|
455
|
+
</body>
|
|
456
|
+
</html>
|