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
package/docs/gumba.html
ADDED
|
@@ -0,0 +1,1098 @@
|
|
|
1
|
+
<!DOCTYPE html>
|
|
2
|
+
<html lang="en" data-theme="gumba">
|
|
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>GUMBA - Access Control | YAKMESH Documentation</title>
|
|
10
|
+
<meta name="description" content="GUMBA: Guarded Universal Message Bundle Access. Novel proof-based access control where keys never leave the host.">
|
|
11
|
+
|
|
12
|
+
<link rel="stylesheet" href="tailwind.min.css">
|
|
13
|
+
<link rel="stylesheet" href="prism-tomorrow.min.css" media="print" onload="this.media='all'">
|
|
14
|
+
<noscript><link rel="stylesheet" href="prism-tomorrow.min.css"></noscript>
|
|
15
|
+
<link rel="stylesheet" href="docs.css">
|
|
16
|
+
<style>
|
|
17
|
+
/* Page-specific theme - Warm Temple/Monastery theme (amber/gold) */
|
|
18
|
+
.theme-accent { color: #fbbf24; }
|
|
19
|
+
.theme-accent-hover:hover { color: #fcd34d; }
|
|
20
|
+
.theme-badge { background: rgba(251, 191, 36, 0.2); color: #fbbf24; }
|
|
21
|
+
.theme-border { border-color: #f59e0b; }
|
|
22
|
+
.theme-callout { background: rgba(251, 191, 36, 0.1); border-color: #d97706; }
|
|
23
|
+
.active-link { background: rgba(251, 191, 36, 0.2) !important; color: #fbbf24 !important; }
|
|
24
|
+
.proof-card { background: rgba(30, 41, 59, 0.5); border: 1px solid #334155; border-radius: 0.75rem; padding: 1.5rem; }
|
|
25
|
+
.proof-card:hover { border-color: #f59e0b; }
|
|
26
|
+
.role-badge { display: inline-block; padding: 0.25rem 0.5rem; border-radius: 0.25rem; font-size: 0.75rem; font-weight: 600; }
|
|
27
|
+
.role-owner { background: #7c3aed; color: white; }
|
|
28
|
+
.role-admin { background: #2563eb; color: white; }
|
|
29
|
+
.role-member { background: #059669; color: white; }
|
|
30
|
+
.role-reader { background: #6b7280; color: white; }
|
|
31
|
+
</style>
|
|
32
|
+
|
|
33
|
+
<!-- Open Graph -->
|
|
34
|
+
<meta property="og:type" content="article">
|
|
35
|
+
<meta property="og:site_name" content="Yakmesh Documentation">
|
|
36
|
+
<meta property="og:title" content="GUMBA — Yakmesh">
|
|
37
|
+
<meta property="og:description" content="GUMBA role-based access control — permissions and capabilities for mesh resources.">
|
|
38
|
+
</head>
|
|
39
|
+
<body class="bg-mountain-900 text-white min-h-screen">
|
|
40
|
+
<!-- YAKMESH-ICON-SPRITE-START -->
|
|
41
|
+
<svg xmlns="http://www.w3.org/2000/svg" style="display:none">
|
|
42
|
+
<!--
|
|
43
|
+
Yakmesh Docs Icon Sprite Sheet
|
|
44
|
+
24×24 viewBox — stroke/fill set via .doc-icon CSS
|
|
45
|
+
Usage: <svg class="doc-icon"><use href="#icon-name"/></svg>
|
|
46
|
+
-->
|
|
47
|
+
|
|
48
|
+
<!-- ═══ GUIDES ═══ -->
|
|
49
|
+
|
|
50
|
+
<symbol id="icon-home" viewBox="0 0 24 24">
|
|
51
|
+
<path d="M3 9.5L12 3l9 6.5V20a1 1 0 01-1 1H4a1 1 0 01-1-1V9.5z"/>
|
|
52
|
+
<polyline points="9 22 9 12 15 12 15 22"/>
|
|
53
|
+
</symbol>
|
|
54
|
+
|
|
55
|
+
<symbol id="icon-rocket" viewBox="0 0 24 24">
|
|
56
|
+
<path d="M4.5 16.5c-1.5 1.26-2 5-2 5s3.74-.5 5-2c.71-.84.7-2.13-.09-2.91a2.18 2.18 0 00-2.91-.09z"/>
|
|
57
|
+
<path d="M12 15l-3-3a22 22 0 012-3.95A12.88 12.88 0 0122 2c0 2.72-.78 7.5-6 11a22.35 22.35 0 01-4 2z"/>
|
|
58
|
+
<path d="M9 12H4s.55-3.03 2-4c1.62-1.08 5 0 5 0"/>
|
|
59
|
+
<path d="M12 15v5s3.03-.55 4-2c1.08-1.62 0-5 0-5"/>
|
|
60
|
+
</symbol>
|
|
61
|
+
|
|
62
|
+
<symbol id="icon-book" viewBox="0 0 24 24">
|
|
63
|
+
<path d="M4 19.5A2.5 2.5 0 016.5 17H20"/>
|
|
64
|
+
<path d="M6.5 2H20v20H6.5A2.5 2.5 0 014 19.5v-15A2.5 2.5 0 016.5 2z"/>
|
|
65
|
+
<line x1="8" y1="7" x2="16" y2="7"/>
|
|
66
|
+
<line x1="8" y1="11" x2="13" y2="11"/>
|
|
67
|
+
</symbol>
|
|
68
|
+
|
|
69
|
+
<!-- ═══ PROTOCOL STACK ═══ -->
|
|
70
|
+
|
|
71
|
+
<!-- YAK:// — Content addressing (yak horns) -->
|
|
72
|
+
<symbol id="icon-yak" viewBox="0 0 24 24">
|
|
73
|
+
<path d="M4 4c1 3 3 5 5 6"/>
|
|
74
|
+
<path d="M20 4c-1 3-3 5-5 6"/>
|
|
75
|
+
<circle cx="12" cy="14" r="5"/>
|
|
76
|
+
<circle cx="10" cy="13" r="0.5" fill="currentColor"/>
|
|
77
|
+
<circle cx="14" cy="13" r="0.5" fill="currentColor"/>
|
|
78
|
+
<path d="M10 16c1 1 3 1 4 0"/>
|
|
79
|
+
</symbol>
|
|
80
|
+
|
|
81
|
+
<!-- ANNEX — Encrypted bridge -->
|
|
82
|
+
<symbol id="icon-annex" viewBox="0 0 24 24">
|
|
83
|
+
<path d="M4 18h3a4 4 0 004-4V8"/>
|
|
84
|
+
<path d="M20 18h-3a4 4 0 01-4-4V8"/>
|
|
85
|
+
<circle cx="7" cy="6" r="2"/>
|
|
86
|
+
<circle cx="17" cy="6" r="2"/>
|
|
87
|
+
<line x1="7" y1="8" x2="7" y2="18"/>
|
|
88
|
+
<line x1="17" y1="8" x2="17" y2="18"/>
|
|
89
|
+
</symbol>
|
|
90
|
+
|
|
91
|
+
<!-- JHILKE — Cricket / steganographic key lifecycle -->
|
|
92
|
+
<symbol id="icon-jhilke" viewBox="0 0 24 24">
|
|
93
|
+
<ellipse cx="12" cy="14" rx="4" ry="6"/>
|
|
94
|
+
<path d="M8 10c-2-3-4-6-3-8"/>
|
|
95
|
+
<path d="M16 10c2-3 4-6 3-8"/>
|
|
96
|
+
<line x1="10" y1="20" x2="8" y2="23"/>
|
|
97
|
+
<line x1="14" y1="20" x2="16" y2="23"/>
|
|
98
|
+
<path d="M9 12l-4 2"/>
|
|
99
|
+
<path d="M15 12l4 2"/>
|
|
100
|
+
</symbol>
|
|
101
|
+
|
|
102
|
+
<!-- NAKPAK — Onion layers / backpack -->
|
|
103
|
+
<symbol id="icon-nakpak" viewBox="0 0 24 24">
|
|
104
|
+
<circle cx="12" cy="12" r="10" opacity="0.3"/>
|
|
105
|
+
<circle cx="12" cy="12" r="7" opacity="0.5"/>
|
|
106
|
+
<circle cx="12" cy="12" r="4" opacity="0.8"/>
|
|
107
|
+
<circle cx="12" cy="12" r="1.5" fill="currentColor"/>
|
|
108
|
+
</symbol>
|
|
109
|
+
|
|
110
|
+
<!-- NAMCHE — Gateway door -->
|
|
111
|
+
<symbol id="icon-namche" viewBox="0 0 24 24">
|
|
112
|
+
<rect x="3" y="3" width="18" height="18" rx="2"/>
|
|
113
|
+
<path d="M9 3v18"/>
|
|
114
|
+
<path d="M15 3v18"/>
|
|
115
|
+
<line x1="3" y1="8" x2="9" y2="8"/>
|
|
116
|
+
<line x1="15" y1="8" x2="21" y2="8"/>
|
|
117
|
+
<circle cx="12" cy="14" r="1" fill="currentColor"/>
|
|
118
|
+
</symbol>
|
|
119
|
+
|
|
120
|
+
<!-- DOKO — Basket / certificate -->
|
|
121
|
+
<symbol id="icon-doko" viewBox="0 0 24 24">
|
|
122
|
+
<path d="M6 8l-2 12h16l-2-12"/>
|
|
123
|
+
<path d="M6 8c0-3 2.7-5 6-5s6 2 6 5"/>
|
|
124
|
+
<line x1="8" y1="10" x2="10" y2="18"/>
|
|
125
|
+
<line x1="16" y1="10" x2="14" y2="18"/>
|
|
126
|
+
<line x1="12" y1="10" x2="12" y2="18"/>
|
|
127
|
+
</symbol>
|
|
128
|
+
|
|
129
|
+
<!-- SHERPA — Mountain climber -->
|
|
130
|
+
<symbol id="icon-sherpa" viewBox="0 0 24 24">
|
|
131
|
+
<path d="M4 20L10 6l3 6 3-4 4 12"/>
|
|
132
|
+
<line x1="4" y1="20" x2="20" y2="20"/>
|
|
133
|
+
<circle cx="13" cy="4" r="1.5"/>
|
|
134
|
+
</symbol>
|
|
135
|
+
|
|
136
|
+
<!-- MANDALA — Network topology web -->
|
|
137
|
+
<symbol id="icon-mandala" viewBox="0 0 24 24">
|
|
138
|
+
<circle cx="12" cy="12" r="9"/>
|
|
139
|
+
<circle cx="12" cy="12" r="4.5"/>
|
|
140
|
+
<line x1="12" y1="3" x2="12" y2="21"/>
|
|
141
|
+
<line x1="3" y1="12" x2="21" y2="12"/>
|
|
142
|
+
<line x1="5.6" y1="5.6" x2="18.4" y2="18.4"/>
|
|
143
|
+
<line x1="18.4" y1="5.6" x2="5.6" y2="18.4"/>
|
|
144
|
+
</symbol>
|
|
145
|
+
|
|
146
|
+
<!-- MANTRA — Gossip / prayer wheel -->
|
|
147
|
+
<symbol id="icon-mantra" viewBox="0 0 24 24">
|
|
148
|
+
<circle cx="12" cy="10" r="7"/>
|
|
149
|
+
<path d="M12 3v14"/>
|
|
150
|
+
<path d="M8 7c2 1.5 6 1.5 8 0"/>
|
|
151
|
+
<path d="M8 13c2-1.5 6-1.5 8 0"/>
|
|
152
|
+
<line x1="12" y1="17" x2="12" y2="22"/>
|
|
153
|
+
<line x1="9" y1="22" x2="15" y2="22"/>
|
|
154
|
+
</symbol>
|
|
155
|
+
|
|
156
|
+
<!-- GUMBA — Temple / access control -->
|
|
157
|
+
<symbol id="icon-gumba" viewBox="0 0 24 24">
|
|
158
|
+
<path d="M12 2L3 9h18z"/>
|
|
159
|
+
<line x1="5" y1="9" x2="5" y2="19"/>
|
|
160
|
+
<line x1="9" y1="9" x2="9" y2="19"/>
|
|
161
|
+
<line x1="15" y1="9" x2="15" y2="19"/>
|
|
162
|
+
<line x1="19" y1="9" x2="19" y2="19"/>
|
|
163
|
+
<line x1="3" y1="19" x2="21" y2="19"/>
|
|
164
|
+
<line x1="3" y1="21" x2="21" y2="21"/>
|
|
165
|
+
</symbol>
|
|
166
|
+
|
|
167
|
+
<!-- YURT — Camp / room -->
|
|
168
|
+
<symbol id="icon-yurt" viewBox="0 0 24 24">
|
|
169
|
+
<path d="M3 20L12 4l9 16"/>
|
|
170
|
+
<line x1="3" y1="20" x2="21" y2="20"/>
|
|
171
|
+
<path d="M10 20v-5a2 2 0 014 0v5"/>
|
|
172
|
+
<path d="M6 14h12"/>
|
|
173
|
+
</symbol>
|
|
174
|
+
|
|
175
|
+
<!-- KATHA — Chat / story scroll -->
|
|
176
|
+
<symbol id="icon-katha" viewBox="0 0 24 24">
|
|
177
|
+
<path d="M21 15a2 2 0 01-2 2H7l-4 4V5a2 2 0 012-2h14a2 2 0 012 2z"/>
|
|
178
|
+
<line x1="8" y1="8" x2="16" y2="8"/>
|
|
179
|
+
<line x1="8" y1="12" x2="13" y2="12"/>
|
|
180
|
+
</symbol>
|
|
181
|
+
|
|
182
|
+
<!-- VANI — Voice / microphone -->
|
|
183
|
+
<symbol id="icon-vani" viewBox="0 0 24 24">
|
|
184
|
+
<rect x="9" y="2" width="6" height="11" rx="3"/>
|
|
185
|
+
<path d="M5 10a7 7 0 0014 0"/>
|
|
186
|
+
<line x1="12" y1="17" x2="12" y2="22"/>
|
|
187
|
+
<line x1="8" y1="22" x2="16" y2="22"/>
|
|
188
|
+
</symbol>
|
|
189
|
+
|
|
190
|
+
<!-- DARSHAN — Eye / viewing -->
|
|
191
|
+
<symbol id="icon-darshan" viewBox="0 0 24 24">
|
|
192
|
+
<path d="M1 12s4-8 11-8 11 8 11 8-4 8-11 8S1 12 1 12z"/>
|
|
193
|
+
<circle cx="12" cy="12" r="3"/>
|
|
194
|
+
</symbol>
|
|
195
|
+
|
|
196
|
+
<!-- STUPA — Tower / distributed storage -->
|
|
197
|
+
<symbol id="icon-stupa" viewBox="0 0 24 24">
|
|
198
|
+
<line x1="12" y1="2" x2="12" y2="5"/>
|
|
199
|
+
<path d="M10 5h4l1 3H9z"/>
|
|
200
|
+
<ellipse cx="12" cy="11" rx="5" ry="3"/>
|
|
201
|
+
<ellipse cx="12" cy="15" rx="6" ry="3"/>
|
|
202
|
+
<ellipse cx="12" cy="19" rx="7" ry="3"/>
|
|
203
|
+
</symbol>
|
|
204
|
+
|
|
205
|
+
<!-- LAMA — Crystal ball / consensus -->
|
|
206
|
+
<symbol id="icon-lama" viewBox="0 0 24 24">
|
|
207
|
+
<circle cx="12" cy="10" r="7"/>
|
|
208
|
+
<path d="M12 3c-1.5 2-2 5 0 7s4.5 2 6 0"/>
|
|
209
|
+
<path d="M7 19h10"/>
|
|
210
|
+
<path d="M9 22h6"/>
|
|
211
|
+
<line x1="9" y1="17" x2="9" y2="19"/>
|
|
212
|
+
<line x1="15" y1="17" x2="15" y2="19"/>
|
|
213
|
+
</symbol>
|
|
214
|
+
|
|
215
|
+
<!-- MANI — Prayer stone / time sync -->
|
|
216
|
+
<symbol id="icon-mani" viewBox="0 0 24 24">
|
|
217
|
+
<circle cx="12" cy="12" r="9"/>
|
|
218
|
+
<polyline points="12 6 12 12 16 14"/>
|
|
219
|
+
<circle cx="12" cy="12" r="1" fill="currentColor"/>
|
|
220
|
+
</symbol>
|
|
221
|
+
|
|
222
|
+
<!-- KARMA — Yin-yang / reputation -->
|
|
223
|
+
<symbol id="icon-karma" viewBox="0 0 24 24">
|
|
224
|
+
<circle cx="12" cy="12" r="9"/>
|
|
225
|
+
<path d="M12 3a4.5 4.5 0 010 9 4.5 4.5 0 000 9"/>
|
|
226
|
+
<circle cx="12" cy="7.5" r="1.5" fill="currentColor"/>
|
|
227
|
+
<circle cx="12" cy="16.5" r="1.5"/>
|
|
228
|
+
</symbol>
|
|
229
|
+
|
|
230
|
+
<!-- TATTVA — Quantum elements / atom -->
|
|
231
|
+
<symbol id="icon-tattva" viewBox="0 0 24 24">
|
|
232
|
+
<circle cx="12" cy="12" r="2.5" fill="currentColor" stroke="none"/>
|
|
233
|
+
<ellipse cx="12" cy="12" rx="10" ry="4"/>
|
|
234
|
+
<ellipse cx="12" cy="12" rx="10" ry="4" transform="rotate(60 12 12)"/>
|
|
235
|
+
<ellipse cx="12" cy="12" rx="10" ry="4" transform="rotate(120 12 12)"/>
|
|
236
|
+
</symbol>
|
|
237
|
+
|
|
238
|
+
<!-- TRIBHUJ — Triangle / balanced ternary -->
|
|
239
|
+
<symbol id="icon-tribhuj" viewBox="0 0 24 24">
|
|
240
|
+
<polygon points="12,3 21,20 3,20"/>
|
|
241
|
+
<line x1="12" y1="3" x2="12" y2="20"/>
|
|
242
|
+
<line x1="7.5" y1="11.5" x2="16.5" y2="11.5"/>
|
|
243
|
+
<circle cx="12" cy="14" r="1" fill="currentColor"/>
|
|
244
|
+
</symbol>
|
|
245
|
+
|
|
246
|
+
<!-- YPC-27 — Lock / cipher -->
|
|
247
|
+
<symbol id="icon-ypc27" viewBox="0 0 24 24">
|
|
248
|
+
<rect x="5" y="11" width="14" height="10" rx="2"/>
|
|
249
|
+
<path d="M8 11V7a4 4 0 118 0v4"/>
|
|
250
|
+
<circle cx="12" cy="16" r="1" fill="currentColor"/>
|
|
251
|
+
<line x1="12" y1="17" x2="12" y2="19"/>
|
|
252
|
+
</symbol>
|
|
253
|
+
|
|
254
|
+
<!-- SAKSHI — Witness / aperture eye -->
|
|
255
|
+
<symbol id="icon-sakshi" viewBox="0 0 24 24">
|
|
256
|
+
<circle cx="12" cy="12" r="9"/>
|
|
257
|
+
<path d="M12 3l3 9-3 9"/>
|
|
258
|
+
<path d="M12 3l-3 9 3 9"/>
|
|
259
|
+
<circle cx="12" cy="12" r="2.5"/>
|
|
260
|
+
<circle cx="12" cy="12" r="0.8" fill="currentColor"/>
|
|
261
|
+
</symbol>
|
|
262
|
+
|
|
263
|
+
<!-- PRAMAAN — Globe / geographic proof -->
|
|
264
|
+
<symbol id="icon-pramaan" viewBox="0 0 24 24">
|
|
265
|
+
<circle cx="12" cy="12" r="9"/>
|
|
266
|
+
<ellipse cx="12" cy="12" rx="4" ry="9"/>
|
|
267
|
+
<line x1="3" y1="9" x2="21" y2="9"/>
|
|
268
|
+
<line x1="3" y1="15" x2="21" y2="15"/>
|
|
269
|
+
<path d="M18 4l-2 2 1 3"/>
|
|
270
|
+
<path d="M6 18l2-1 3 1"/>
|
|
271
|
+
</symbol>
|
|
272
|
+
|
|
273
|
+
<!-- SURAKSHA — Shield / security -->
|
|
274
|
+
<symbol id="icon-suraksha" viewBox="0 0 24 24">
|
|
275
|
+
<path d="M12 2l8 4v6c0 5.5-3.8 10.7-8 12-4.2-1.3-8-6.5-8-12V6z"/>
|
|
276
|
+
<polyline points="9 12 11 14 15 10"/>
|
|
277
|
+
</symbol>
|
|
278
|
+
|
|
279
|
+
<!-- TIVRA — Lightning bolt / acceleration -->
|
|
280
|
+
<symbol id="icon-tivra" viewBox="0 0 24 24">
|
|
281
|
+
<polygon points="13,2 3,14 12,14 11,22 21,10 12,10"/>
|
|
282
|
+
</symbol>
|
|
283
|
+
|
|
284
|
+
<!-- PRAHARI — Satellite / sentinel -->
|
|
285
|
+
<symbol id="icon-prahari" viewBox="0 0 24 24">
|
|
286
|
+
<rect x="9" y="9" width="6" height="6" rx="1" transform="rotate(45 12 12)"/>
|
|
287
|
+
<line x1="12" y1="5" x2="12" y2="2"/>
|
|
288
|
+
<line x1="19" y1="12" x2="22" y2="12"/>
|
|
289
|
+
<line x1="12" y1="19" x2="12" y2="22"/>
|
|
290
|
+
<line x1="5" y1="12" x2="2" y2="12"/>
|
|
291
|
+
<path d="M7 7L5 5"/>
|
|
292
|
+
<path d="M17 7l2-2"/>
|
|
293
|
+
</symbol>
|
|
294
|
+
|
|
295
|
+
<!-- DHARMA — Balance scale / content moderation -->
|
|
296
|
+
<symbol id="icon-dharma" viewBox="0 0 24 24">
|
|
297
|
+
<line x1="12" y1="3" x2="12" y2="21"/>
|
|
298
|
+
<line x1="4" y1="7" x2="20" y2="7"/>
|
|
299
|
+
<path d="M4 7l2 7h0a3 3 0 006 0h0l2-7"/>
|
|
300
|
+
<path d="M14 7l2 7h0a3 3 0 006 0h0l2-7"/>
|
|
301
|
+
<line x1="10" y1="21" x2="14" y2="21"/>
|
|
302
|
+
</symbol>
|
|
303
|
+
|
|
304
|
+
<!-- SEVA — Helping hands / NPU sharing -->
|
|
305
|
+
<symbol id="icon-seva" viewBox="0 0 24 24">
|
|
306
|
+
<path d="M12 22c-4 0-8-2-8-6 0-2 1-3 3-4l5-3 5 3c2 1 3 2 3 4 0 4-4 6-8 6z"/>
|
|
307
|
+
<path d="M12 11V5"/>
|
|
308
|
+
<path d="M9 8l3-3 3 3"/>
|
|
309
|
+
<circle cx="12" cy="16" r="2"/>
|
|
310
|
+
</symbol>
|
|
311
|
+
|
|
312
|
+
<!-- ═══ APPLICATIONS ═══ -->
|
|
313
|
+
|
|
314
|
+
<!-- YakApp — Messenger -->
|
|
315
|
+
<symbol id="icon-yakapp" viewBox="0 0 24 24">
|
|
316
|
+
<path d="M21 11.5a8.38 8.38 0 01-.9 3.8 8.5 8.5 0 01-7.6 4.7 8.38 8.38 0 01-3.8-.9L3 21l1.9-5.7a8.38 8.38 0 01-.9-3.8 8.5 8.5 0 014.7-7.6 8.38 8.38 0 013.8-.9h.5a8.48 8.48 0 018 8v.5z"/>
|
|
317
|
+
</symbol>
|
|
318
|
+
|
|
319
|
+
<!-- C2C — Core to Cosmos -->
|
|
320
|
+
<symbol id="icon-c2c" viewBox="0 0 24 24">
|
|
321
|
+
<circle cx="12" cy="12" r="3"/>
|
|
322
|
+
<circle cx="12" cy="12" r="9"/>
|
|
323
|
+
<path d="M12 3v3"/>
|
|
324
|
+
<path d="M12 18v3"/>
|
|
325
|
+
<path d="M3 12h3"/>
|
|
326
|
+
<path d="M18 12h3"/>
|
|
327
|
+
</symbol>
|
|
328
|
+
|
|
329
|
+
<!-- Studio — Creative suite -->
|
|
330
|
+
<symbol id="icon-studio" viewBox="0 0 24 24">
|
|
331
|
+
<circle cx="13.5" cy="6.5" r="2.5"/>
|
|
332
|
+
<path d="M6 21l4-10 3 5 4-7 4 12"/>
|
|
333
|
+
<rect x="2" y="2" width="20" height="20" rx="2"/>
|
|
334
|
+
</symbol>
|
|
335
|
+
|
|
336
|
+
|
|
337
|
+
<!-- ═══ REFERENCE ═══ -->
|
|
338
|
+
|
|
339
|
+
<!-- Quick Reference — Clipboard -->
|
|
340
|
+
<symbol id="icon-quickref" viewBox="0 0 24 24">
|
|
341
|
+
<path d="M16 4h2a2 2 0 012 2v14a2 2 0 01-2 2H6a2 2 0 01-2-2V6a2 2 0 012-2h2"/>
|
|
342
|
+
<rect x="8" y="2" width="8" height="4" rx="1"/>
|
|
343
|
+
<line x1="8" y1="10" x2="16" y2="10"/>
|
|
344
|
+
<line x1="8" y1="14" x2="16" y2="14"/>
|
|
345
|
+
<line x1="8" y1="18" x2="12" y2="18"/>
|
|
346
|
+
</symbol>
|
|
347
|
+
|
|
348
|
+
<!-- GRANTH — Docs bundle -->
|
|
349
|
+
<symbol id="icon-granth" viewBox="0 0 24 24">
|
|
350
|
+
<path d="M4 19.5A2.5 2.5 0 016.5 17H20"/>
|
|
351
|
+
<path d="M6.5 2H20v20H6.5A2.5 2.5 0 014 19.5v-15A2.5 2.5 0 016.5 2z"/>
|
|
352
|
+
<path d="M8 7h8"/>
|
|
353
|
+
<path d="M8 11h5"/>
|
|
354
|
+
<path d="M8 15h3"/>
|
|
355
|
+
</symbol>
|
|
356
|
+
|
|
357
|
+
<!-- API — Signal tower -->
|
|
358
|
+
<symbol id="icon-api" viewBox="0 0 24 24">
|
|
359
|
+
<line x1="12" y1="10" x2="12" y2="22"/>
|
|
360
|
+
<path d="M8 6a6 6 0 018 0"/>
|
|
361
|
+
<path d="M5 3a10 10 0 0114 0"/>
|
|
362
|
+
<circle cx="12" cy="10" r="2"/>
|
|
363
|
+
</symbol>
|
|
364
|
+
|
|
365
|
+
<!-- Adapters — Plug connector -->
|
|
366
|
+
<symbol id="icon-adapters" viewBox="0 0 24 24">
|
|
367
|
+
<path d="M6 3v4"/>
|
|
368
|
+
<path d="M10 3v4"/>
|
|
369
|
+
<path d="M4 7h8v3a4 4 0 01-8 0V7z"/>
|
|
370
|
+
<line x1="8" y1="14" x2="8" y2="17"/>
|
|
371
|
+
<path d="M14 10h4v3a2 2 0 01-4 0v-3z"/>
|
|
372
|
+
<line x1="16" y1="7" x2="16" y2="10"/>
|
|
373
|
+
<line x1="16" y1="13" x2="16" y2="17"/>
|
|
374
|
+
<line x1="8" y1="17" x2="16" y2="17"/>
|
|
375
|
+
<line x1="12" y1="17" x2="12" y2="21"/>
|
|
376
|
+
</symbol>
|
|
377
|
+
|
|
378
|
+
<!-- ═══ EXTRA (pages outside nav-order) ═══ -->
|
|
379
|
+
|
|
380
|
+
<!-- Terminal / CLI -->
|
|
381
|
+
<symbol id="icon-terminal" viewBox="0 0 24 24">
|
|
382
|
+
<rect x="2" y="3" width="20" height="18" rx="2"/>
|
|
383
|
+
<polyline points="7 9 10 12 7 15"/>
|
|
384
|
+
<line x1="13" y1="15" x2="17" y2="15"/>
|
|
385
|
+
</symbol>
|
|
386
|
+
|
|
387
|
+
<!-- Gear / Configuration -->
|
|
388
|
+
<symbol id="icon-gear" viewBox="0 0 24 24">
|
|
389
|
+
<circle cx="12" cy="12" r="3"/>
|
|
390
|
+
<path d="M19.4 15a1.65 1.65 0 00.33 1.82l.06.06a2 2 0 01-2.83 2.83l-.06-.06a1.65 1.65 0 00-1.82-.33 1.65 1.65 0 00-1 1.51V21a2 2 0 01-4 0v-.09A1.65 1.65 0 009 19.4a1.65 1.65 0 00-1.82.33l-.06.06a2 2 0 01-2.83-2.83l.06-.06A1.65 1.65 0 004.68 15a1.65 1.65 0 00-1.51-1H3a2 2 0 010-4h.09A1.65 1.65 0 004.6 9a1.65 1.65 0 00-.33-1.82l-.06-.06a2 2 0 012.83-2.83l.06.06A1.65 1.65 0 009 4.68a1.65 1.65 0 001-1.51V3a2 2 0 014 0v.09a1.65 1.65 0 001 1.51 1.65 1.65 0 001.82-.33l.06-.06a2 2 0 012.83 2.83l-.06.06A1.65 1.65 0 0019.4 9a1.65 1.65 0 001.51 1H21a2 2 0 010 4h-.09a1.65 1.65 0 00-1.51 1z"/>
|
|
391
|
+
</symbol>
|
|
392
|
+
|
|
393
|
+
<!-- Server / Web hosting -->
|
|
394
|
+
<symbol id="icon-server" viewBox="0 0 24 24">
|
|
395
|
+
<rect x="2" y="2" width="20" height="8" rx="2"/>
|
|
396
|
+
<rect x="2" y="14" width="20" height="8" rx="2"/>
|
|
397
|
+
<line x1="6" y1="6" x2="6.01" y2="6"/>
|
|
398
|
+
<line x1="6" y1="18" x2="6.01" y2="18"/>
|
|
399
|
+
</symbol>
|
|
400
|
+
|
|
401
|
+
<!-- ═══ CHROME / UI ═══ -->
|
|
402
|
+
|
|
403
|
+
<!-- Mountain peak — logo icon (replaces 🏔️) -->
|
|
404
|
+
<symbol id="icon-mountain" viewBox="0 0 24 24">
|
|
405
|
+
<path d="M8 21l4.5-9 3 5.5L19 12l3 9H2l6-9z"/>
|
|
406
|
+
<path d="M12 12l1.5-3L16 14"/>
|
|
407
|
+
</symbol>
|
|
408
|
+
|
|
409
|
+
<!-- Dashboard / bar chart (replaces 📊) -->
|
|
410
|
+
<symbol id="icon-dashboard" viewBox="0 0 24 24">
|
|
411
|
+
<line x1="18" y1="20" x2="18" y2="10"/>
|
|
412
|
+
<line x1="12" y1="20" x2="12" y2="4"/>
|
|
413
|
+
<line x1="6" y1="20" x2="6" y2="14"/>
|
|
414
|
+
<rect x="2" y="2" width="20" height="20" rx="2" stroke-opacity="0.4"/>
|
|
415
|
+
</symbol>
|
|
416
|
+
|
|
417
|
+
<!-- ═══ GENERIC / CONTENT ICONS ═══ -->
|
|
418
|
+
|
|
419
|
+
<!-- Lock / encrypted (replaces 🔐) -->
|
|
420
|
+
<symbol id="icon-lock" viewBox="0 0 24 24">
|
|
421
|
+
<rect x="3" y="11" width="18" height="11" rx="2"/>
|
|
422
|
+
<path d="M7 11V7a5 5 0 0110 0v4"/>
|
|
423
|
+
</symbol>
|
|
424
|
+
|
|
425
|
+
<!-- Signal / broadcast (replaces 📡) -->
|
|
426
|
+
<symbol id="icon-signal" viewBox="0 0 24 24">
|
|
427
|
+
<path d="M2 12a10 10 0 0118 0"/>
|
|
428
|
+
<path d="M5 12a7 7 0 0112 0"/>
|
|
429
|
+
<path d="M8 12a4 4 0 016 0"/>
|
|
430
|
+
<circle cx="11" cy="12" r="1"/>
|
|
431
|
+
</symbol>
|
|
432
|
+
|
|
433
|
+
<!-- Link / chain (replaces 🔗) -->
|
|
434
|
+
<symbol id="icon-link" viewBox="0 0 24 24">
|
|
435
|
+
<path d="M10 13a5 5 0 007.54.54l3-3a5 5 0 00-7.07-7.07l-1.72 1.71"/>
|
|
436
|
+
<path d="M14 11a5 5 0 00-7.54-.54l-3 3a5 5 0 007.07 7.07l1.71-1.71"/>
|
|
437
|
+
</symbol>
|
|
438
|
+
|
|
439
|
+
<!-- Globe / network (replaces 🌐) -->
|
|
440
|
+
<symbol id="icon-globe" viewBox="0 0 24 24">
|
|
441
|
+
<circle cx="12" cy="12" r="10"/>
|
|
442
|
+
<line x1="2" y1="12" x2="22" y2="12"/>
|
|
443
|
+
<path d="M12 2a15.3 15.3 0 014 10 15.3 15.3 0 01-4 10 15.3 15.3 0 01-4-10 15.3 15.3 0 014-10z"/>
|
|
444
|
+
</symbol>
|
|
445
|
+
|
|
446
|
+
<!-- Sync / refresh (replaces 🔄) -->
|
|
447
|
+
<symbol id="icon-sync" viewBox="0 0 24 24">
|
|
448
|
+
<polyline points="23 4 23 10 17 10"/>
|
|
449
|
+
<polyline points="1 20 1 14 7 14"/>
|
|
450
|
+
<path d="M3.51 9a9 9 0 0114.85-3.36L23 10M1 14l4.64 4.36A9 9 0 0020.49 15"/>
|
|
451
|
+
</symbol>
|
|
452
|
+
|
|
453
|
+
<!-- Users / group (replaces 👥) -->
|
|
454
|
+
<symbol id="icon-users" viewBox="0 0 24 24">
|
|
455
|
+
<path d="M17 21v-2a4 4 0 00-4-4H5a4 4 0 00-4 4v2"/>
|
|
456
|
+
<circle cx="9" cy="7" r="4"/>
|
|
457
|
+
<path d="M23 21v-2a4 4 0 00-3-3.87"/>
|
|
458
|
+
<path d="M16 3.13a4 4 0 010 7.75"/>
|
|
459
|
+
</symbol>
|
|
460
|
+
|
|
461
|
+
<!-- Shield / protection (replaces 🛡) -->
|
|
462
|
+
<symbol id="icon-shield" viewBox="0 0 24 24">
|
|
463
|
+
<path d="M12 22s8-4 8-10V5l-8-3-8 3v7c0 6 8 10 8 10z"/>
|
|
464
|
+
</symbol>
|
|
465
|
+
|
|
466
|
+
<!-- Heartbeat / pulse (replaces 💓) -->
|
|
467
|
+
<symbol id="icon-heartbeat" viewBox="0 0 24 24">
|
|
468
|
+
<path d="M3 12h4l3-9 4 18 3-9h4"/>
|
|
469
|
+
</symbol>
|
|
470
|
+
|
|
471
|
+
<!-- Map pin / location (replaces 📍) -->
|
|
472
|
+
<symbol id="icon-pin" viewBox="0 0 24 24">
|
|
473
|
+
<path d="M21 10c0 7-9 13-9 13s-9-6-9-13a9 9 0 0118 0z"/>
|
|
474
|
+
<circle cx="12" cy="10" r="3"/>
|
|
475
|
+
</symbol>
|
|
476
|
+
|
|
477
|
+
<!-- Traffic light / status (replaces 🚦) -->
|
|
478
|
+
<symbol id="icon-traffic" viewBox="0 0 24 24">
|
|
479
|
+
<rect x="7" y="2" width="10" height="20" rx="3"/>
|
|
480
|
+
<circle cx="12" cy="7" r="1.5"/>
|
|
481
|
+
<circle cx="12" cy="12" r="1.5"/>
|
|
482
|
+
<circle cx="12" cy="17" r="1.5"/>
|
|
483
|
+
</symbol>
|
|
484
|
+
|
|
485
|
+
<!-- Check circle (replaces ✅) -->
|
|
486
|
+
<symbol id="icon-check" viewBox="0 0 24 24">
|
|
487
|
+
<path d="M22 11.08V12a10 10 0 11-5.93-9.14"/>
|
|
488
|
+
<polyline points="22 4 12 14.01 9 11.01"/>
|
|
489
|
+
</symbol>
|
|
490
|
+
|
|
491
|
+
<!-- Megaphone / broadcast (replaces 📢) -->
|
|
492
|
+
<symbol id="icon-megaphone" viewBox="0 0 24 24">
|
|
493
|
+
<path d="M21 15a2 2 0 01-2 2H7l-4 4V5a2 2 0 012-2h14a2 2 0 012 2z"/>
|
|
494
|
+
</symbol>
|
|
495
|
+
|
|
496
|
+
<!-- Pen / signed (replaces ✍) -->
|
|
497
|
+
<symbol id="icon-pen" viewBox="0 0 24 24">
|
|
498
|
+
<path d="M12 20h9"/>
|
|
499
|
+
<path d="M16.5 3.5a2.121 2.121 0 013 3L7 19l-4 1 1-4L16.5 3.5z"/>
|
|
500
|
+
</symbol>
|
|
501
|
+
|
|
502
|
+
<!-- Warning / alert (replaces ⚠) -->
|
|
503
|
+
<symbol id="icon-warning" viewBox="0 0 24 24">
|
|
504
|
+
<path d="M10.29 3.86L1.82 18a2 2 0 001.71 3h16.94a2 2 0 001.71-3L13.71 3.86a2 2 0 00-3.42 0z"/>
|
|
505
|
+
<line x1="12" y1="9" x2="12" y2="13"/>
|
|
506
|
+
<line x1="12" y1="17" x2="12.01" y2="17"/>
|
|
507
|
+
</symbol>
|
|
508
|
+
|
|
509
|
+
<!-- Hourglass / timer (replaces ⏳) -->
|
|
510
|
+
<symbol id="icon-hourglass" viewBox="0 0 24 24">
|
|
511
|
+
<path d="M6 2h12v5l-4 4 4 4v5H6v-5l4-4-4-4V2z"/>
|
|
512
|
+
</symbol>
|
|
513
|
+
|
|
514
|
+
<!-- Scroll / document (replaces 📜) -->
|
|
515
|
+
<symbol id="icon-scroll" viewBox="0 0 24 24">
|
|
516
|
+
<path d="M14 2H6a2 2 0 00-2 2v16a2 2 0 002 2h12a2 2 0 002-2V8z"/>
|
|
517
|
+
<polyline points="14 2 14 8 20 8"/>
|
|
518
|
+
<line x1="16" y1="13" x2="8" y2="13"/>
|
|
519
|
+
<line x1="16" y1="17" x2="8" y2="17"/>
|
|
520
|
+
</symbol>
|
|
521
|
+
|
|
522
|
+
<!-- Bolt / lightning (replaces ⚡) -->
|
|
523
|
+
<symbol id="icon-bolt" viewBox="0 0 24 24">
|
|
524
|
+
<polygon points="13 2 3 14 12 14 11 22 21 10 12 10 13 2"/>
|
|
525
|
+
</symbol>
|
|
526
|
+
|
|
527
|
+
<!-- Target / crosshair (replaces 🎯) -->
|
|
528
|
+
<symbol id="icon-target" viewBox="0 0 24 24">
|
|
529
|
+
<circle cx="12" cy="12" r="10"/>
|
|
530
|
+
<circle cx="12" cy="12" r="6"/>
|
|
531
|
+
<circle cx="12" cy="12" r="2"/>
|
|
532
|
+
</symbol>
|
|
533
|
+
|
|
534
|
+
<!-- Handshake / trust (replaces 🤝) -->
|
|
535
|
+
<symbol id="icon-handshake" viewBox="0 0 24 24">
|
|
536
|
+
<path d="M11 17l-3.5-3.5a2.12 2.12 0 013-3L14 14"/>
|
|
537
|
+
<path d="M20.88 7.12l-3.17 3.17"/>
|
|
538
|
+
<path d="M3.12 7.12l3.17 3.17"/>
|
|
539
|
+
<path d="M2 12h4"/>
|
|
540
|
+
<path d="M18 12h4"/>
|
|
541
|
+
<path d="M7.76 4.25L12 2l4.24 2.25"/>
|
|
542
|
+
</symbol>
|
|
543
|
+
|
|
544
|
+
<!-- Leaf / organic (replaces 🌿) -->
|
|
545
|
+
<symbol id="icon-leaf" viewBox="0 0 24 24">
|
|
546
|
+
<path d="M17 8C8 10 5.9 16.17 3.82 21.34l1.89.66.95-2.3c.48.17.98.3 1.34.3C19 20 22 3 22 3c-1 0-8 0-10 2"/>
|
|
547
|
+
<path d="M7 15c2-2 5.5-3 9-3"/>
|
|
548
|
+
</symbol>
|
|
549
|
+
|
|
550
|
+
<!-- Satellite (replaces 🛰) -->
|
|
551
|
+
<symbol id="icon-satellite" viewBox="0 0 24 24">
|
|
552
|
+
<path d="M13 7L9 3 5 7l4 4"/>
|
|
553
|
+
<path d="M17 11l4 4-4 4-4-4"/>
|
|
554
|
+
<line x1="8" y1="11" x2="13" y2="16"/>
|
|
555
|
+
<line x1="3" y1="21" x2="3.01" y2="21"/>
|
|
556
|
+
<path d="M6 18a3 3 0 000 0"/>
|
|
557
|
+
<path d="M9 15a6 6 0 000 0"/>
|
|
558
|
+
</symbol>
|
|
559
|
+
|
|
560
|
+
<!-- Phone / mobile (replaces 📱) -->
|
|
561
|
+
<symbol id="icon-phone" viewBox="0 0 24 24">
|
|
562
|
+
<rect x="5" y="2" width="14" height="20" rx="2"/>
|
|
563
|
+
<line x1="12" y1="18" x2="12.01" y2="18"/>
|
|
564
|
+
</symbol>
|
|
565
|
+
|
|
566
|
+
<!-- Masks / theater (replaces 🎭) -->
|
|
567
|
+
<symbol id="icon-masks" viewBox="0 0 24 24">
|
|
568
|
+
<circle cx="12" cy="12" r="10"/>
|
|
569
|
+
<path d="M8 14s1.5 2 4 2 4-2 4-2"/>
|
|
570
|
+
<line x1="9" y1="9" x2="9.01" y2="9"/>
|
|
571
|
+
<line x1="15" y1="9" x2="15.01" y2="9"/>
|
|
572
|
+
</symbol>
|
|
573
|
+
|
|
574
|
+
<!-- Stars / cosmos (replaces 🌌) -->
|
|
575
|
+
<symbol id="icon-cosmos" viewBox="0 0 24 24">
|
|
576
|
+
<polygon points="12 2 15.09 8.26 22 9.27 17 14.14 18.18 21.02 12 17.77 5.82 21.02 7 14.14 2 9.27 8.91 8.26 12 2"/>
|
|
577
|
+
</symbol>
|
|
578
|
+
|
|
579
|
+
<!-- Gem / diamond (replaces 💎) -->
|
|
580
|
+
<symbol id="icon-gem" viewBox="0 0 24 24">
|
|
581
|
+
<polygon points="6 3 18 3 22 9 12 22 2 9 6 3"/>
|
|
582
|
+
<line x1="2" y1="9" x2="22" y2="9"/>
|
|
583
|
+
<line x1="12" y1="22" x2="8" y2="9"/>
|
|
584
|
+
<line x1="12" y1="22" x2="16" y2="9"/>
|
|
585
|
+
<line x1="8" y1="9" x2="10" y2="3"/>
|
|
586
|
+
<line x1="16" y1="9" x2="14" y2="3"/>
|
|
587
|
+
</symbol>
|
|
588
|
+
|
|
589
|
+
<!-- Search / magnifying glass (replaces 🔍) -->
|
|
590
|
+
<symbol id="icon-search" viewBox="0 0 24 24">
|
|
591
|
+
<circle cx="11" cy="11" r="8"/>
|
|
592
|
+
<line x1="21" y1="21" x2="16.65" y2="16.65"/>
|
|
593
|
+
</symbol>
|
|
594
|
+
|
|
595
|
+
</svg>
|
|
596
|
+
<!-- YAKMESH-ICON-SPRITE-END -->
|
|
597
|
+
<a href="#mainContent" class="skip-link">Skip to main content</a>
|
|
598
|
+
|
|
599
|
+
<nav class="docs-sidebar" id="sidebar">
|
|
600
|
+
<a href="index.html" class="sidebar-logo">
|
|
601
|
+
<span class="logo-icon"><svg class="doc-icon" aria-hidden="true"><use href="#icon-mountain"/></svg></span>
|
|
602
|
+
<span class="logo-text">Yakmesh</span>
|
|
603
|
+
</a>
|
|
604
|
+
<a href="/dashboard" class="sidebar-dashboard-link"><svg class="doc-icon" aria-hidden="true"><use href="#icon-dashboard"/></svg> <span>Dashboard</span></a>
|
|
605
|
+
<ul class="sidebar-nav">
|
|
606
|
+
<li class="sidebar-section"><span><svg class="doc-icon" aria-hidden="true"><use href="#icon-book"/></svg> Guides</span></li>
|
|
607
|
+
<li><a href="index.html"><svg class="doc-icon" aria-hidden="true"><use href="#icon-home"/></svg> <span>Overview</span></a></li>
|
|
608
|
+
<li><a href="getting-started.html"><svg class="doc-icon" aria-hidden="true"><use href="#icon-rocket"/></svg> <span>Getting Started</span></a></li>
|
|
609
|
+
<li><a href="tutorials.html"><svg class="doc-icon" aria-hidden="true"><use href="#icon-book"/></svg> <span>Tutorials</span></a></li>
|
|
610
|
+
<li class="sidebar-section"><span><svg class="doc-icon" aria-hidden="true"><use href="#icon-yak"/></svg> Protocol Stack</span></li>
|
|
611
|
+
<li><a href="yak-protocol.html"><svg class="doc-icon" aria-hidden="true"><use href="#icon-yak"/></svg> <span>YAK://</span></a></li>
|
|
612
|
+
<li><a href="annex.html"><svg class="doc-icon" aria-hidden="true"><use href="#icon-annex"/></svg> <span>ANNEX</span></a></li>
|
|
613
|
+
<li><a href="jhilke.html"><svg class="doc-icon" aria-hidden="true"><use href="#icon-jhilke"/></svg> <span>JHILKE</span></a></li>
|
|
614
|
+
<li><a href="nakpak.html"><svg class="doc-icon" aria-hidden="true"><use href="#icon-nakpak"/></svg> <span>NAKPAK</span></a></li>
|
|
615
|
+
<li><a href="namche.html"><svg class="doc-icon" aria-hidden="true"><use href="#icon-namche"/></svg> <span>NAMCHE</span></a></li>
|
|
616
|
+
<li><a href="doko.html"><svg class="doc-icon" aria-hidden="true"><use href="#icon-doko"/></svg> <span>DOKO</span></a></li>
|
|
617
|
+
<li><a href="sherpa.html"><svg class="doc-icon" aria-hidden="true"><use href="#icon-sherpa"/></svg> <span>SHERPA</span></a></li>
|
|
618
|
+
<li><a href="mandala.html"><svg class="doc-icon" aria-hidden="true"><use href="#icon-mandala"/></svg> <span>MANDALA</span></a></li>
|
|
619
|
+
<li><a href="mantra.html"><svg class="doc-icon" aria-hidden="true"><use href="#icon-mantra"/></svg> <span>MANTRA</span></a></li>
|
|
620
|
+
<li><a href="gumba.html" class="active"><svg class="doc-icon" aria-hidden="true"><use href="#icon-gumba"/></svg> <span>GUMBA</span></a></li>
|
|
621
|
+
<li><a href="yurt.html"><svg class="doc-icon" aria-hidden="true"><use href="#icon-yurt"/></svg> <span>YURT</span></a></li>
|
|
622
|
+
<li><a href="katha.html"><svg class="doc-icon" aria-hidden="true"><use href="#icon-katha"/></svg> <span>KATHA</span></a></li>
|
|
623
|
+
<li><a href="vani.html"><svg class="doc-icon" aria-hidden="true"><use href="#icon-vani"/></svg> <span>VANI</span></a></li>
|
|
624
|
+
<li><a href="darshan.html"><svg class="doc-icon" aria-hidden="true"><use href="#icon-darshan"/></svg> <span>DARSHAN</span></a></li>
|
|
625
|
+
<li><a href="stupa.html"><svg class="doc-icon" aria-hidden="true"><use href="#icon-stupa"/></svg> <span>STUPA</span></a></li>
|
|
626
|
+
<li><a href="lama.html"><svg class="doc-icon" aria-hidden="true"><use href="#icon-lama"/></svg> <span>LAMA</span></a></li>
|
|
627
|
+
<li><a href="mani.html"><svg class="doc-icon" aria-hidden="true"><use href="#icon-mani"/></svg> <span>MANI</span></a></li>
|
|
628
|
+
<li><a href="karma.html"><svg class="doc-icon" aria-hidden="true"><use href="#icon-karma"/></svg> <span>KARMA</span></a></li>
|
|
629
|
+
<li><a href="tattva.html"><svg class="doc-icon" aria-hidden="true"><use href="#icon-tattva"/></svg> <span>TATTVA</span></a></li>
|
|
630
|
+
<li><a href="tribhuj.html"><svg class="doc-icon" aria-hidden="true"><use href="#icon-tribhuj"/></svg> <span>TRIBHUJ</span></a></li>
|
|
631
|
+
<li><a href="ypc27.html"><svg class="doc-icon" aria-hidden="true"><use href="#icon-ypc27"/></svg> <span>YPC-27</span></a></li>
|
|
632
|
+
<li><a href="sakshi.html"><svg class="doc-icon" aria-hidden="true"><use href="#icon-sakshi"/></svg> <span>SAKSHI</span></a></li>
|
|
633
|
+
<li><a href="geo-proof.html"><svg class="doc-icon" aria-hidden="true"><use href="#icon-pramaan"/></svg> <span>PRAMAAN</span></a></li>
|
|
634
|
+
<li><a href="trust-security.html"><svg class="doc-icon" aria-hidden="true"><use href="#icon-suraksha"/></svg> <span>SURAKSHA</span></a></li>
|
|
635
|
+
<li><a href="tivra.html"><svg class="doc-icon" aria-hidden="true"><use href="#icon-tivra"/></svg> <span>TIVRA</span></a></li>
|
|
636
|
+
<li><a href="prahari.html"><svg class="doc-icon" aria-hidden="true"><use href="#icon-prahari"/></svg> <span>PRAHARI</span></a></li>
|
|
637
|
+
<li><a href="dharma.html"><svg class="doc-icon" aria-hidden="true"><use href="#icon-dharma"/></svg> <span>DHARMA</span></a></li>
|
|
638
|
+
<li><a href="seva.html"><svg class="doc-icon" aria-hidden="true"><use href="#icon-seva"/></svg> <span>SEVA</span></a></li>
|
|
639
|
+
<li><a href="docs-bundle.html"><svg class="doc-icon" aria-hidden="true"><use href="#icon-granth"/></svg> <span>GRANTH</span></a></li>
|
|
640
|
+
<li><a href="api.html"><svg class="doc-icon" aria-hidden="true"><use href="#icon-api"/></svg> <span>API</span></a></li>
|
|
641
|
+
<li><a href="adapters.html"><svg class="doc-icon" aria-hidden="true"><use href="#icon-adapters"/></svg> <span>Adapters</span></a></li>
|
|
642
|
+
<li class="sidebar-section"><span><svg class="doc-icon" aria-hidden="true"><use href="#icon-rocket"/></svg> Applications</span></li>
|
|
643
|
+
<li><a href="yakapp.html"><svg class="doc-icon" aria-hidden="true"><use href="#icon-yakapp"/></svg> <span>YakApp</span></a></li>
|
|
644
|
+
<li><a href="c2c.html"><svg class="doc-icon" aria-hidden="true"><use href="#icon-c2c"/></svg> <span>C2C</span></a></li>
|
|
645
|
+
<li><a href="studio.html"><svg class="doc-icon" aria-hidden="true"><use href="#icon-studio"/></svg> <span>Studio</span></a></li>
|
|
646
|
+
<li class="sidebar-section"><span><svg class="doc-icon" aria-hidden="true"><use href="#icon-gear"/></svg> Infrastructure</span></li>
|
|
647
|
+
<li><a href="cli.html"><svg class="doc-icon" aria-hidden="true"><use href="#icon-terminal"/></svg> <span>CLI</span></a></li>
|
|
648
|
+
<li><a href="configuration.html"><svg class="doc-icon" aria-hidden="true"><use href="#icon-gear"/></svg> <span>Configuration</span></a></li>
|
|
649
|
+
<li><a href="mesh.html"><svg class="doc-icon" aria-hidden="true"><use href="#icon-mandala"/></svg> <span>Mesh Network</span></a></li>
|
|
650
|
+
<li><a href="time-sources.html"><svg class="doc-icon" aria-hidden="true"><use href="#icon-mani"/></svg> <span>Time Sources</span></a></li>
|
|
651
|
+
<li><a href="webserver.html"><svg class="doc-icon" aria-hidden="true"><use href="#icon-server"/></svg> <span>Web Server</span></a></li>
|
|
652
|
+
<li><a href="advanced-systems.html"><svg class="doc-icon" aria-hidden="true"><use href="#icon-tivra"/></svg> <span>Advanced Systems</span></a></li>
|
|
653
|
+
<li class="sidebar-section"><span><svg class="doc-icon" aria-hidden="true"><use href="#icon-book"/></svg> Tutorials</span></li>
|
|
654
|
+
<li><a href="gumba-tutorial.html"><svg class="doc-icon" aria-hidden="true"><use href="#icon-gumba"/></svg> <span>GUMBA Tutorial</span></a></li>
|
|
655
|
+
<li class="sidebar-section"><span><svg class="doc-icon" aria-hidden="true"><use href="#icon-quickref"/></svg> Reference</span></li>
|
|
656
|
+
<li><a href="quick-reference.html"><svg class="doc-icon" aria-hidden="true"><use href="#icon-quickref"/></svg> <span>Quick Ref</span></a></li>
|
|
657
|
+
</ul>
|
|
658
|
+
</nav>
|
|
659
|
+
|
|
660
|
+
<button class="sidebar-toggle" id="sidebarToggle" title="Toggle sidebar">
|
|
661
|
+
<svg xmlns="http://www.w3.org/2000/svg" fill="none" viewBox="0 0 24 24" stroke="currentColor">
|
|
662
|
+
<path stroke-linecap="round" stroke-linejoin="round" stroke-width="2" d="M11 19l-7-7 7-7m8 14l-7-7 7-7" />
|
|
663
|
+
</svg>
|
|
664
|
+
</button>
|
|
665
|
+
|
|
666
|
+
<div class="sidebar-overlay" id="sidebarOverlay"></div>
|
|
667
|
+
|
|
668
|
+
<main class="docs-main" id="mainContent">
|
|
669
|
+
<div class="docs-content">
|
|
670
|
+
|
|
671
|
+
<!-- Page Header -->
|
|
672
|
+
<div class="flex items-center gap-3 mb-4">
|
|
673
|
+
<svg class="doc-icon hero-icon" aria-hidden="true"><use href="#icon-gumba"/></svg>
|
|
674
|
+
<div>
|
|
675
|
+
<h1 class="text-4xl font-bold">GUMBA</h1>
|
|
676
|
+
<p class="theme-accent">Guarded Universal Message Bundle Access</p>
|
|
677
|
+
</div>
|
|
678
|
+
</div>
|
|
679
|
+
<p class="text-xl text-mountain-300 mb-4">Novel proof-based access control where keys never leave the host</p>
|
|
680
|
+
<span class="inline-block text-xs theme-badge px-2 py-1 rounded mb-8">v1.0.0</span>
|
|
681
|
+
|
|
682
|
+
<!-- Philosophy Quote -->
|
|
683
|
+
<div class="theme-callout border-l-4 rounded-r-xl p-6 mb-8 italic text-mountain-200">
|
|
684
|
+
"In the sacred gumba, monks gather in protected spaces. Only those who prove their belonging may enter.
|
|
685
|
+
<strong class="theme-accent">The key is not the access. The proof is the access.</strong>"
|
|
686
|
+
</div>
|
|
687
|
+
|
|
688
|
+
<!-- Key Insight -->
|
|
689
|
+
<div class="bg-mountain-800 border border-mountain-700 rounded-xl p-6 mb-8">
|
|
690
|
+
<h2 class="font-bold text-lg mb-3 theme-accent">The GUMBA Insight</h2>
|
|
691
|
+
<p class="text-mountain-300 mb-4">
|
|
692
|
+
Traditional encrypted chat systems distribute keys to participants, creating key management nightmares
|
|
693
|
+
and security vulnerabilities. GUMBA takes a radically different approach:
|
|
694
|
+
</p>
|
|
695
|
+
<div class="grid md:grid-cols-2 gap-4">
|
|
696
|
+
<div class="proof-card">
|
|
697
|
+
<h3 class="font-semibold mb-2"><svg class="doc-icon inline-icon" width="24" height="24" aria-hidden="true"><use href="#icon-warning"/></svg> Traditional Approach</h3>
|
|
698
|
+
<ul class="text-mountain-400 text-sm space-y-1">
|
|
699
|
+
<li>• Keys sent to all participants</li>
|
|
700
|
+
<li>• Key compromise = full breach</li>
|
|
701
|
+
<li>• Complex key rotation</li>
|
|
702
|
+
<li>• Forward secrecy challenges</li>
|
|
703
|
+
</ul>
|
|
704
|
+
</div>
|
|
705
|
+
<div class="proof-card border-amber-500">
|
|
706
|
+
<h4 class="font-semibold mb-2 theme-accent"><svg class="doc-icon inline-icon" width="24" height="24" aria-hidden="true"><use href="#icon-check"/></svg> GUMBA Approach</h4>
|
|
707
|
+
<ul class="text-mountain-400 text-sm space-y-1">
|
|
708
|
+
<li>• Keys never leave the host node</li>
|
|
709
|
+
<li>• Access via cryptographic proofs</li>
|
|
710
|
+
<li>• Simple membership verification</li>
|
|
711
|
+
<li>• Automatic key rotation</li>
|
|
712
|
+
</ul>
|
|
713
|
+
</div>
|
|
714
|
+
</div>
|
|
715
|
+
</div>
|
|
716
|
+
|
|
717
|
+
<!-- Overview Section -->
|
|
718
|
+
<h2 class="text-2xl font-bold mb-4" id="overview">Overview</h2>
|
|
719
|
+
<p class="text-mountain-300 mb-6">
|
|
720
|
+
GUMBA establishes protected digital spaces (bundles) where only verified members can access content.
|
|
721
|
+
Instead of distributing encryption keys, visitors prove their membership through cryptographic proofs,
|
|
722
|
+
and the host node serves decrypted content via secure ANNEX channels.
|
|
723
|
+
</p>
|
|
724
|
+
|
|
725
|
+
<!-- Architecture Components -->
|
|
726
|
+
<h2 class="text-2xl font-bold mb-4 mt-12" id="components">Architecture Components</h2>
|
|
727
|
+
<div class="grid md:grid-cols-2 lg:grid-cols-3 gap-4 mb-8">
|
|
728
|
+
<div class="proof-card">
|
|
729
|
+
<div class="text-2xl mb-2"><svg class="doc-icon card-icon" width="24" height="24" aria-hidden="true"><use href="#icon-lock"/></svg></div>
|
|
730
|
+
<h3 class="font-bold mb-2">GumbaKey</h3>
|
|
731
|
+
<p class="text-sm text-mountain-400">
|
|
732
|
+
Deterministic key derivation from owner secret + bundle ID.
|
|
733
|
+
Handles AES-256-GCM encryption with automatic nonce management.
|
|
734
|
+
</p>
|
|
735
|
+
</div>
|
|
736
|
+
<div class="proof-card">
|
|
737
|
+
<div class="text-2xl mb-2"><svg class="doc-icon card-icon" width="24" height="24" aria-hidden="true"><use href="#icon-leaf"/></svg></div>
|
|
738
|
+
<h3 class="font-bold mb-2">GumbaMemberTree</h3>
|
|
739
|
+
<p class="text-sm text-mountain-400">
|
|
740
|
+
SHA3-256 Merkle tree tracking members and roles.
|
|
741
|
+
Provides O(log n) membership proofs.
|
|
742
|
+
</p>
|
|
743
|
+
</div>
|
|
744
|
+
<div class="proof-card">
|
|
745
|
+
<div class="text-2xl mb-2"><svg class="doc-icon card-icon" width="24" height="24" aria-hidden="true"><use href="#icon-scroll"/></svg></div>
|
|
746
|
+
<h3 class="font-bold mb-2">GumbaProof</h3>
|
|
747
|
+
<p class="text-sm text-mountain-400">
|
|
748
|
+
Three proof types for access verification: Challenge-Response,
|
|
749
|
+
Attestation, and Merkle proofs.
|
|
750
|
+
</p>
|
|
751
|
+
</div>
|
|
752
|
+
<div class="proof-card">
|
|
753
|
+
<div class="text-2xl mb-2"><svg class="doc-icon card-icon" width="24" height="24" aria-hidden="true"><use href="#icon-link"/></svg></div>
|
|
754
|
+
<h3 class="font-bold mb-2">GumbaGate</h3>
|
|
755
|
+
<p class="text-sm text-mountain-400">
|
|
756
|
+
Access control layer that issues challenges, verifies proofs,
|
|
757
|
+
and manages proof caching.
|
|
758
|
+
</p>
|
|
759
|
+
</div>
|
|
760
|
+
<div class="proof-card">
|
|
761
|
+
<div class="text-2xl mb-2"><svg class="doc-icon card-icon" width="24" height="24" aria-hidden="true"><use href="#icon-gear"/></svg></div>
|
|
762
|
+
<h3 class="font-bold mb-2">GumbaBundle</h3>
|
|
763
|
+
<p class="text-sm text-mountain-400">
|
|
764
|
+
Encrypted message container with role-based access control
|
|
765
|
+
and event emission.
|
|
766
|
+
</p>
|
|
767
|
+
</div>
|
|
768
|
+
<div class="proof-card">
|
|
769
|
+
<div class="text-2xl mb-2"><svg class="doc-icon card-icon" width="24" height="24" aria-hidden="true"><use href="#icon-gumba"/></svg></div>
|
|
770
|
+
<h3 class="font-bold mb-2">GumbaHub</h3>
|
|
771
|
+
<p class="text-sm text-mountain-400">
|
|
772
|
+
Node-level manager for multiple bundles. Handles sessions,
|
|
773
|
+
access requests, and message delivery.
|
|
774
|
+
</p>
|
|
775
|
+
</div>
|
|
776
|
+
</div>
|
|
777
|
+
|
|
778
|
+
<!-- Proof Types -->
|
|
779
|
+
<h2 class="text-2xl font-bold mb-4 mt-12" id="proof-types">Proof Types</h2>
|
|
780
|
+
<p class="text-mountain-300 mb-6">
|
|
781
|
+
GUMBA supports three types of cryptographic proofs for access verification:
|
|
782
|
+
</p>
|
|
783
|
+
|
|
784
|
+
<div class="space-y-6 mb-8">
|
|
785
|
+
<!-- Challenge-Response -->
|
|
786
|
+
<div class="proof-card">
|
|
787
|
+
<div class="flex items-center gap-3 mb-3">
|
|
788
|
+
<svg class="doc-icon card-icon" aria-hidden="true"><use href="#icon-target"/></svg>
|
|
789
|
+
<h3 class="font-bold text-lg">Challenge-Response</h3>
|
|
790
|
+
<span class="theme-badge text-xs px-2 py-1 rounded">Most Common</span>
|
|
791
|
+
</div>
|
|
792
|
+
<p class="text-mountain-300 mb-4">
|
|
793
|
+
The host issues a random nonce challenge. The visitor signs it with their ML-DSA-65
|
|
794
|
+
(post-quantum) private key. The host verifies the signature against the visitor's
|
|
795
|
+
registered public key.
|
|
796
|
+
</p>
|
|
797
|
+
<pre class="language-javascript"><code>// Host issues challenge
|
|
798
|
+
const challenge = hub.issueChallenge('chat-room', visitorDokoId);
|
|
799
|
+
|
|
800
|
+
// Visitor signs with their private key
|
|
801
|
+
const signedProof = GumbaProof.signChallenge(challenge, visitorSecretKey);
|
|
802
|
+
|
|
803
|
+
// Host verifies and grants access
|
|
804
|
+
const result = await hub.handleAccessRequest('chat-room', signedProof, visitorNodeId);</code></pre>
|
|
805
|
+
</div>
|
|
806
|
+
|
|
807
|
+
<!-- Attestation -->
|
|
808
|
+
<div class="proof-card">
|
|
809
|
+
<div class="flex items-center gap-3 mb-3">
|
|
810
|
+
<svg class="doc-icon card-icon" aria-hidden="true"><use href="#icon-handshake"/></svg>
|
|
811
|
+
<h3 class="font-bold text-lg">Attestation</h3>
|
|
812
|
+
<span class="theme-badge text-xs px-2 py-1 rounded">Delegation</span>
|
|
813
|
+
</div>
|
|
814
|
+
<p class="text-mountain-300 mb-4">
|
|
815
|
+
An existing member with sufficient role can vouch for a new member. This creates
|
|
816
|
+
a signed attestation that grants the new member temporary access.
|
|
817
|
+
</p>
|
|
818
|
+
<pre class="language-javascript"><code>// Alice (admin) creates attestation for Bob
|
|
819
|
+
const attestation = GumbaProof.createAttestation({
|
|
820
|
+
bundleId: 'private-room',
|
|
821
|
+
grantorDokoId: alice.dokoId,
|
|
822
|
+
granteeDokoId: bob.dokoId,
|
|
823
|
+
grantorSecretKey: alice.secretKey,
|
|
824
|
+
grantedRole: GUMBA_ROLE.MEMBER,
|
|
825
|
+
});
|
|
826
|
+
|
|
827
|
+
// Bob uses attestation to gain access
|
|
828
|
+
const result = await hub.handleAccessRequest('private-room', attestation, bobNodeId);</code></pre>
|
|
829
|
+
</div>
|
|
830
|
+
|
|
831
|
+
<!-- Merkle Proof -->
|
|
832
|
+
<div class="proof-card">
|
|
833
|
+
<div class="flex items-center gap-3 mb-3">
|
|
834
|
+
<svg class="doc-icon card-icon" aria-hidden="true"><use href="#icon-leaf"/></svg>
|
|
835
|
+
<h3 class="font-bold text-lg">Merkle Proof</h3>
|
|
836
|
+
<span class="theme-badge text-xs px-2 py-1 rounded">Zero-Knowledge</span>
|
|
837
|
+
</div>
|
|
838
|
+
<p class="text-mountain-300 mb-4">
|
|
839
|
+
Proves membership using a Merkle tree path without revealing the full member list.
|
|
840
|
+
Useful for privacy-preserving access where member identities should remain hidden.
|
|
841
|
+
</p>
|
|
842
|
+
<pre class="language-javascript"><code>// Create membership proof
|
|
843
|
+
const merkleProof = GumbaProof.createMerkleProof(alice.dokoId, bundle.memberTree);
|
|
844
|
+
|
|
845
|
+
// Verify membership without exposing other members
|
|
846
|
+
const verified = GumbaProof.verifyMerkleProof(merkleProof, bundle.memberTree.getRoot());</code></pre>
|
|
847
|
+
</div>
|
|
848
|
+
</div>
|
|
849
|
+
|
|
850
|
+
<!-- Role Hierarchy -->
|
|
851
|
+
<h2 class="text-2xl font-bold mb-4 mt-12" id="roles">Role Hierarchy</h2>
|
|
852
|
+
<p class="text-mountain-300 mb-6">
|
|
853
|
+
GUMBA uses a hierarchical role system where higher roles can grant access to lower roles:
|
|
854
|
+
</p>
|
|
855
|
+
|
|
856
|
+
<div class="bg-mountain-800 border border-mountain-700 rounded-xl p-6 mb-8">
|
|
857
|
+
<div class="flex flex-wrap items-center justify-center gap-4 mb-6">
|
|
858
|
+
<div class="text-center">
|
|
859
|
+
<span class="role-badge role-owner">OWNER (4)</span>
|
|
860
|
+
<p class="text-xs text-mountain-400 mt-1">Full control</p>
|
|
861
|
+
</div>
|
|
862
|
+
<span class="text-mountain-500">→</span>
|
|
863
|
+
<div class="text-center">
|
|
864
|
+
<span class="role-badge role-admin">ADMIN (3)</span>
|
|
865
|
+
<p class="text-xs text-mountain-400 mt-1">Manage members</p>
|
|
866
|
+
</div>
|
|
867
|
+
<span class="text-mountain-500">→</span>
|
|
868
|
+
<div class="text-center">
|
|
869
|
+
<span class="role-badge role-member">MEMBER (2)</span>
|
|
870
|
+
<p class="text-xs text-mountain-400 mt-1">Post messages</p>
|
|
871
|
+
</div>
|
|
872
|
+
<span class="text-mountain-500">→</span>
|
|
873
|
+
<div class="text-center">
|
|
874
|
+
<span class="role-badge role-reader">READER (1)</span>
|
|
875
|
+
<p class="text-xs text-mountain-400 mt-1">Read only</p>
|
|
876
|
+
</div>
|
|
877
|
+
</div>
|
|
878
|
+
|
|
879
|
+
<table class="w-full text-sm">
|
|
880
|
+
<thead>
|
|
881
|
+
<tr class="border-b border-mountain-600">
|
|
882
|
+
<th class="text-left py-2 text-mountain-400">Role</th>
|
|
883
|
+
<th class="text-left py-2 text-mountain-400">Permissions</th>
|
|
884
|
+
</tr>
|
|
885
|
+
</thead>
|
|
886
|
+
<tbody class="text-mountain-300">
|
|
887
|
+
<tr class="border-b border-mountain-700">
|
|
888
|
+
<td class="py-2"><span class="role-badge role-owner">OWNER</span></td>
|
|
889
|
+
<td class="py-2">Full control, cannot be removed, can add/remove any role</td>
|
|
890
|
+
</tr>
|
|
891
|
+
<tr class="border-b border-mountain-700">
|
|
892
|
+
<td class="py-2"><span class="role-badge role-admin">ADMIN</span></td>
|
|
893
|
+
<td class="py-2">Can add/remove members up to MEMBER role, post messages</td>
|
|
894
|
+
</tr>
|
|
895
|
+
<tr class="border-b border-mountain-700">
|
|
896
|
+
<td class="py-2"><span class="role-badge role-member">MEMBER</span></td>
|
|
897
|
+
<td class="py-2">Can post messages, can attest readers</td>
|
|
898
|
+
</tr>
|
|
899
|
+
<tr>
|
|
900
|
+
<td class="py-2"><span class="role-badge role-reader">READER</span></td>
|
|
901
|
+
<td class="py-2">Read-only access to messages</td>
|
|
902
|
+
</tr>
|
|
903
|
+
</tbody>
|
|
904
|
+
</table>
|
|
905
|
+
</div>
|
|
906
|
+
|
|
907
|
+
<!-- Security Features -->
|
|
908
|
+
<h2 class="text-2xl font-bold mb-4 mt-12" id="security">Security Features</h2>
|
|
909
|
+
<div class="grid md:grid-cols-2 gap-4 mb-8">
|
|
910
|
+
<div class="proof-card">
|
|
911
|
+
<h3 class="font-semibold mb-2 theme-accent"><svg class="doc-icon inline-icon" width="24" height="24" aria-hidden="true"><use href="#icon-sync"/></svg> Replay Protection</h3>
|
|
912
|
+
<p class="text-sm text-mountain-400">
|
|
913
|
+
Challenge nonces are single-use. Each challenge is removed from the pending pool
|
|
914
|
+
after verification, preventing replay attacks.
|
|
915
|
+
</p>
|
|
916
|
+
</div>
|
|
917
|
+
<div class="proof-card">
|
|
918
|
+
<h4 class="font-semibold mb-2 theme-accent"><svg class="doc-icon inline-icon" width="24" height="24" aria-hidden="true"><use href="#icon-lock"/></svg> Post-Quantum Signatures</h4>
|
|
919
|
+
<p class="text-sm text-mountain-400">
|
|
920
|
+
All signatures use ML-DSA-65 (Dilithium), a NIST-approved post-quantum signature algorithm.
|
|
921
|
+
</p>
|
|
922
|
+
</div>
|
|
923
|
+
<div class="proof-card">
|
|
924
|
+
<h4 class="font-semibold mb-2 theme-accent"><svg class="doc-icon inline-icon" width="24" height="24" aria-hidden="true"><use href="#icon-lock"/></svg> Automatic Key Rotation</h4>
|
|
925
|
+
<p class="text-sm text-mountain-400">
|
|
926
|
+
Bundle keys automatically rotate after a configurable message count,
|
|
927
|
+
limiting the impact of any potential key compromise.
|
|
928
|
+
</p>
|
|
929
|
+
</div>
|
|
930
|
+
<div class="proof-card">
|
|
931
|
+
<h4 class="font-semibold mb-2 theme-accent"><svg class="doc-icon inline-icon" aria-hidden="true"><use href="#icon-mani"/></svg> Session Expiry</h4>
|
|
932
|
+
<p class="text-sm text-mountain-400">
|
|
933
|
+
Cached access automatically expires. Expired sessions are cleaned up
|
|
934
|
+
to prevent stale access.
|
|
935
|
+
</p>
|
|
936
|
+
</div>
|
|
937
|
+
<div class="proof-card">
|
|
938
|
+
<h4 class="font-semibold mb-2 theme-accent"><svg class="doc-icon inline-icon" width="24" height="24" aria-hidden="true"><use href="#icon-warning"/></svg> Revocation</h4>
|
|
939
|
+
<p class="text-sm text-mountain-400">
|
|
940
|
+
Member removal immediately clears proof cache. Revoked members must
|
|
941
|
+
re-authenticate (and will fail).
|
|
942
|
+
</p>
|
|
943
|
+
</div>
|
|
944
|
+
<div class="proof-card">
|
|
945
|
+
<h4 class="font-semibold mb-2 theme-accent"><svg class="doc-icon inline-icon" width="24" height="24" aria-hidden="true"><use href="#icon-link"/></svg> Self-Custody</h4>
|
|
946
|
+
<p class="text-sm text-mountain-400">
|
|
947
|
+
Keys never leave your node. Your messages stay on YOUR hardware.
|
|
948
|
+
True digital sovereignty.
|
|
949
|
+
</p>
|
|
950
|
+
</div>
|
|
951
|
+
</div>
|
|
952
|
+
|
|
953
|
+
<!-- Access Flow Diagram -->
|
|
954
|
+
<h2 class="text-2xl font-bold mb-4 mt-12" id="flow">Access Flow</h2>
|
|
955
|
+
<div class="bg-mountain-800 border border-mountain-700 rounded-xl p-6 mb-8">
|
|
956
|
+
<pre class="text-sm text-mountain-300 overflow-x-auto">
|
|
957
|
+
┌─────────────────┐ ┌─────────────────┐
|
|
958
|
+
│ Visitor Node │ │ Host Node │
|
|
959
|
+
│ (has DOKO key) │ │ (has bundle) │
|
|
960
|
+
└────────┬────────┘ └────────┬────────┘
|
|
961
|
+
│ │
|
|
962
|
+
│ 1. Request access to bundle │
|
|
963
|
+
│ ─────────────────────────────────────────────> │
|
|
964
|
+
│ │
|
|
965
|
+
│ 2. Issue challenge (random nonce) │
|
|
966
|
+
│ <───────────────────────────────────────────── │
|
|
967
|
+
│ │
|
|
968
|
+
│ 3. Sign challenge with DOKO private key │
|
|
969
|
+
│ ─────────────────────────────────────────────> │
|
|
970
|
+
│ │
|
|
971
|
+
│ 4. Verify signature, check membership │
|
|
972
|
+
│ ┌───────────┴───────────┐
|
|
973
|
+
│ │ • Verify ML-DSA-65 sig │
|
|
974
|
+
│ │ • Check member tree │
|
|
975
|
+
│ │ • Create session │
|
|
976
|
+
│ └───────────┬───────────┘
|
|
977
|
+
│ │
|
|
978
|
+
│ 5. Grant access + session token │
|
|
979
|
+
│ <───────────────────────────────────────────── │
|
|
980
|
+
│ │
|
|
981
|
+
│ 6. Request messages (with session) │
|
|
982
|
+
│ ─────────────────────────────────────────────> │
|
|
983
|
+
│ │
|
|
984
|
+
│ 7. Decrypt & deliver via ANNEX │
|
|
985
|
+
│ <───────────────────────────────────────────── │
|
|
986
|
+
│ │
|
|
987
|
+
</pre>
|
|
988
|
+
</div>
|
|
989
|
+
|
|
990
|
+
<!-- Quick Start -->
|
|
991
|
+
<h2 class="text-2xl font-bold mb-4 mt-12" id="quickstart">Quick Start</h2>
|
|
992
|
+
<pre class="language-javascript mb-8"><code>import { GumbaHub, GumbaProof, GUMBA_ROLE } from 'yakmesh/mesh/gumba.js';
|
|
993
|
+
|
|
994
|
+
// Create hub with node identity
|
|
995
|
+
const hub = new GumbaHub(nodeIdentity, annexInstance);
|
|
996
|
+
|
|
997
|
+
// Create a bundle (encrypted chat room)
|
|
998
|
+
hub.createBundle('team-chat', { name: 'Team Chat Room' });
|
|
999
|
+
|
|
1000
|
+
// Add members
|
|
1001
|
+
const bundle = hub.getBundle('team-chat');
|
|
1002
|
+
bundle.addMember(aliceDokoId, GUMBA_ROLE.ADMIN, ownerDokoId);
|
|
1003
|
+
bundle.addMember(bobDokoId, GUMBA_ROLE.MEMBER, ownerDokoId);
|
|
1004
|
+
|
|
1005
|
+
// Register public keys (for verification)
|
|
1006
|
+
hub.registerPublicKey(aliceDokoId, alicePublicKey);
|
|
1007
|
+
hub.registerPublicKey(bobDokoId, bobPublicKey);
|
|
1008
|
+
|
|
1009
|
+
// Handle access request from visitor
|
|
1010
|
+
const challenge = hub.issueChallenge('team-chat', visitorDokoId);
|
|
1011
|
+
// ... visitor signs challenge ...
|
|
1012
|
+
const access = await hub.handleAccessRequest('team-chat', signedProof, visitorNodeId);
|
|
1013
|
+
|
|
1014
|
+
if (access.granted) {
|
|
1015
|
+
// Get messages for this session
|
|
1016
|
+
const messages = await hub.getMessages(access.sessionId);
|
|
1017
|
+
|
|
1018
|
+
// Post a message
|
|
1019
|
+
await hub.postMessage(access.sessionId, { text: 'Hello team!' });
|
|
1020
|
+
}</code></pre>
|
|
1021
|
+
|
|
1022
|
+
<!-- Configuration -->
|
|
1023
|
+
<h2 class="text-2xl font-bold mb-4 mt-12" id="config">Configuration</h2>
|
|
1024
|
+
<pre class="language-javascript mb-8"><code>// Default GUMBA configuration
|
|
1025
|
+
const GUMBA_CONFIG = {
|
|
1026
|
+
keyRotationThreshold: 10000, // Rotate key after N messages
|
|
1027
|
+
proofCacheTime: 5 * 60 * 1000, // 5 minutes cache
|
|
1028
|
+
challengeExpiry: 60 * 1000, // 1 minute challenge validity
|
|
1029
|
+
attestationMaxAge: 24 * 60 * 60 * 1000, // 24 hour attestation validity
|
|
1030
|
+
};</code></pre>
|
|
1031
|
+
|
|
1032
|
+
<!-- Use Cases -->
|
|
1033
|
+
<h2 class="text-2xl font-bold mb-4 mt-12" id="usecases">Use Cases</h2>
|
|
1034
|
+
<div class="grid md:grid-cols-2 gap-4 mb-8">
|
|
1035
|
+
<div class="proof-card">
|
|
1036
|
+
<h3 class="font-semibold mb-2"><svg class="doc-icon inline-icon" width="24" height="24" aria-hidden="true"><use href="#icon-megaphone"/></svg> Private Chat Rooms</h3>
|
|
1037
|
+
<p class="text-sm text-mountain-400">
|
|
1038
|
+
Replace Discord/Slack with self-hosted, post-quantum secure chat.
|
|
1039
|
+
No facial recognition, no central authority.
|
|
1040
|
+
</p>
|
|
1041
|
+
</div>
|
|
1042
|
+
<div class="proof-card">
|
|
1043
|
+
<h4 class="font-semibold mb-2"><svg class="doc-icon inline-icon" width="24" height="24" aria-hidden="true"><use href="#icon-scroll"/></svg> Secure File Sharing</h4>
|
|
1044
|
+
<p class="text-sm text-mountain-400">
|
|
1045
|
+
Share sensitive documents with verified team members.
|
|
1046
|
+
Files never leave your control until access is proven.
|
|
1047
|
+
</p>
|
|
1048
|
+
</div>
|
|
1049
|
+
<div class="proof-card">
|
|
1050
|
+
<h4 class="font-semibold mb-2"><svg class="doc-icon inline-icon" width="24" height="24" aria-hidden="true"><use href="#icon-users"/></svg> Team Collaboration</h4>
|
|
1051
|
+
<p class="text-sm text-mountain-400">
|
|
1052
|
+
Role-based access for different team levels.
|
|
1053
|
+
Admins manage members, members contribute, readers observe.
|
|
1054
|
+
</p>
|
|
1055
|
+
</div>
|
|
1056
|
+
<div class="proof-card">
|
|
1057
|
+
<h4 class="font-semibold mb-2"><svg class="doc-icon inline-icon" width="24" height="24" aria-hidden="true"><use href="#icon-lock"/></svg> Whistleblower Channels</h4>
|
|
1058
|
+
<p class="text-sm text-mountain-400">
|
|
1059
|
+
Anonymous access via Merkle proofs. Prove you belong
|
|
1060
|
+
without revealing your identity to other members.
|
|
1061
|
+
</p>
|
|
1062
|
+
</div>
|
|
1063
|
+
</div>
|
|
1064
|
+
|
|
1065
|
+
<!-- Journey Navigation -->
|
|
1066
|
+
<div class="border-t border-mountain-700 mt-12 pt-8">
|
|
1067
|
+
<h2 class="text-xl font-bold mb-6">Continue the Journey</h2>
|
|
1068
|
+
<div class="flex flex-col sm:flex-row gap-4">
|
|
1069
|
+
<a href="mantra.html" class="flex-1 block bg-mountain-800 border border-mountain-700 rounded-xl p-4 hover:border-theme-accent transition group">
|
|
1070
|
+
<div class="text-xs text-mountain-400 mb-1">← Previous</div>
|
|
1071
|
+
<div class="flex items-center gap-2">
|
|
1072
|
+
<svg class="doc-icon journey-icon" aria-hidden="true"><use href="#icon-mantra"/></svg>
|
|
1073
|
+
<span class="font-semibold group-hover:text-theme-accent">MANTRA</span>
|
|
1074
|
+
</div>
|
|
1075
|
+
<p class="text-mountain-400 text-sm mt-1">Message protocol</p>
|
|
1076
|
+
</a>
|
|
1077
|
+
<a href="yurt.html" class="flex-1 block bg-mountain-800 border border-theme-primary rounded-xl p-4 hover:border-theme-accent transition group">
|
|
1078
|
+
<div class="text-xs text-mountain-400 mb-1">Next →</div>
|
|
1079
|
+
<div class="flex items-center gap-2">
|
|
1080
|
+
<svg class="doc-icon journey-icon" aria-hidden="true"><use href="#icon-yurt"/></svg>
|
|
1081
|
+
<span class="font-semibold group-hover:text-theme-accent">YURT</span>
|
|
1082
|
+
</div>
|
|
1083
|
+
<p class="text-mountain-400 text-sm mt-1">Room discovery</p>
|
|
1084
|
+
</a>
|
|
1085
|
+
</div>
|
|
1086
|
+
</div>
|
|
1087
|
+
</main>
|
|
1088
|
+
|
|
1089
|
+
<footer class="docs-footer">
|
|
1090
|
+
<p>© 2026 YAKMESH™</p>
|
|
1091
|
+
</footer>
|
|
1092
|
+
|
|
1093
|
+
<script src="prism.min.js" defer></script>
|
|
1094
|
+
<script src="prism-javascript.min.js" defer></script>
|
|
1095
|
+
<script src="docs.js" defer></script>
|
|
1096
|
+
</body>
|
|
1097
|
+
</html>
|
|
1098
|
+
|