web-agent-bridge 3.16.0 → 3.20.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.
Files changed (61) hide show
  1. package/README.ar.md +27 -8
  2. package/README.md +95 -0
  3. package/bin/wab-init.js +38 -0
  4. package/package.json +1 -1
  5. package/public/atp-semantics.html +216 -0
  6. package/public/benchmarks.html +151 -0
  7. package/public/dashboard.html +1 -0
  8. package/public/docs.html +113 -43
  9. package/public/index.html +142 -8
  10. package/public/key-rotation.html +184 -0
  11. package/public/llms.txt +54 -0
  12. package/public/notary.html +94 -0
  13. package/public/observatory.html +103 -0
  14. package/public/research.html +57 -0
  15. package/public/researchers.html +113 -0
  16. package/public/responsible-disclosure.html +294 -0
  17. package/public/robots.txt +17 -0
  18. package/public/security.html +157 -0
  19. package/public/threat-model.html +153 -0
  20. package/public/viral-coefficient.html +533 -0
  21. package/public/wab-dataset.html +501 -0
  22. package/public/wab-email.html +78 -0
  23. package/public/wab-lens.html +61 -0
  24. package/public/wab-p2p.html +96 -0
  25. package/public/wab-registry.html +481 -0
  26. package/public/wab-today.html +448 -0
  27. package/public/wab-uri.html +88 -0
  28. package/public/webhooks.html +181 -0
  29. package/script/ai-agent-bridge.js +24 -4
  30. package/server/index.js +1193 -827
  31. package/server/models/db.js +2 -1
  32. package/server/routes/admin-shieldlink.js +1 -1
  33. package/server/routes/admin-shieldqr.js +1 -1
  34. package/server/routes/admin-trust-monitor.js +1 -1
  35. package/server/routes/api-keys.js +2 -1
  36. package/server/routes/customer-shieldlink.js +1 -1
  37. package/server/routes/enterprise-mesh.js +2 -1
  38. package/server/routes/genius-bridge.js +256 -0
  39. package/server/routes/genius-gateway.js +137 -0
  40. package/server/routes/governance-saas.js +2 -1
  41. package/server/routes/notary.js +309 -0
  42. package/server/routes/observatory.js +109 -0
  43. package/server/routes/partners.js +2 -1
  44. package/server/routes/registry.js +352 -0
  45. package/server/routes/research.js +83 -0
  46. package/server/routes/ring4.js +2 -1
  47. package/server/routes/runtime.js +98 -25
  48. package/server/routes/security-researchers.js +161 -0
  49. package/server/routes/shieldqr.js +1 -1
  50. package/server/routes/traces.js +247 -0
  51. package/server/services/agent-tasks.js +9 -7
  52. package/server/services/email.js +50 -2
  53. package/server/services/marketplace.js +27 -8
  54. package/server/services/plans.js +1 -1
  55. package/server/services/shieldlink.js +1 -1
  56. package/server/services/ssl-ct-monitor.js +1 -1
  57. package/server/services/ssl-monitor.js +1 -1
  58. package/server/services/stripe.js +29 -4
  59. package/server/services/webhooks.js +61 -1
  60. package/server/utils/migrate.js +1 -1
  61. package/server/utils/safe-compare.js +26 -0
@@ -0,0 +1,448 @@
1
+ <!DOCTYPE html>
2
+ <html lang="en">
3
+ <head>
4
+ <meta charset="UTF-8">
5
+ <meta name="viewport" content="width=device-width, initial-scale=1.0">
6
+ <title>WAB Today — Architecture, Layers &amp; Identity (v3.20)</title>
7
+ <meta name="description" content="What is Web Agent Bridge in 2026? A clear map of all six architectural layers — from DNS discovery to self-propagating protocol — and how they relate to each other.">
8
+ <link rel="canonical" href="https://webagentbridge.com/wab-today">
9
+ <link rel="preload" href="https://fonts.googleapis.com/css2?family=Inter:wght@400;500;600;700;800&family=JetBrains+Mono:wght@400;500;600&display=swap" as="style" onload="this.onload=null;this.rel='stylesheet'">
10
+ <link rel="stylesheet" href="/css/styles.css?v=3.0.1">
11
+ <style>
12
+ .wt { max-width: 980px; margin: 0 auto; padding: 48px 24px 80px; }
13
+ .wt h1 { font-size: clamp(1.9rem, 4vw, 2.7rem); margin: 0 0 10px; }
14
+ .wt .lead { color: #94a3b8; font-size: 1.1rem; max-width: 760px; line-height: 1.65; margin-bottom: 48px; }
15
+ .wt h2 { margin-top: 52px; border-bottom: 1px solid #1f2937; padding-bottom: 10px; font-size: 1.4rem; }
16
+ .wt h3 { margin-top: 28px; color: #22d3ee; font-size: 1rem; }
17
+ .wt p, .wt li { line-height: 1.7; }
18
+ .wt ul { padding-left: 24px; color: #94a3b8; }
19
+ .wt code { background: rgba(34,211,238,.08); padding: 2px 7px; border-radius: 4px; font-family: 'JetBrains Mono', monospace; font-size: 0.88em; }
20
+ .wt a { color: #22d3ee; }
21
+
22
+ /* layer stack */
23
+ .layer-stack { display: flex; flex-direction: column; gap: 0; margin: 28px 0; }
24
+ .layer { display: grid; grid-template-columns: 60px 1fr 200px; align-items: center; gap: 0; border: 1px solid #1f2937; }
25
+ .layer:first-child { border-radius: 10px 10px 0 0; }
26
+ .layer:last-child { border-radius: 0 0 10px 10px; }
27
+ .layer + .layer { border-top: none; }
28
+ .layer .num { background: #0d1322; padding: 18px 12px; text-align: center; font-family: 'JetBrains Mono', monospace; font-size: .9rem; font-weight: 700; border-right: 1px solid #1f2937; color: #94a3b8; height: 100%; display: flex; align-items: center; justify-content: center; }
29
+ .layer .body { padding: 16px 20px; background: #10172a; }
30
+ .layer .body strong { display: block; font-size: 1rem; margin-bottom: 4px; }
31
+ .layer .body span { color: #94a3b8; font-size: .85rem; }
32
+ .layer .links { padding: 14px 16px; background: #0d1322; border-left: 1px solid #1f2937; display: flex; flex-direction: column; gap: 6px; font-size: .8rem; }
33
+ .layer .links a { color: #22d3ee; text-decoration: none; }
34
+ .layer .links a:hover { text-decoration: underline; }
35
+ .l0 .num { color: #f87171; } .l0 .body { border-left: 3px solid #f87171; }
36
+ .l1 .num { color: #fb923c; } .l1 .body { border-left: 3px solid #fb923c; }
37
+ .l2 .num { color: #fbbf24; } .l2 .body { border-left: 3px solid #fbbf24; }
38
+ .l3 .num { color: #34d399; } .l3 .body { border-left: 3px solid #34d399; }
39
+ .l4 .num { color: #22d3ee; } .l4 .body { border-left: 3px solid #22d3ee; }
40
+ .l5 .num { color: #a78bfa; } .l5 .body { border-left: 3px solid #a78bfa; }
41
+
42
+ /* timeline */
43
+ .timeline { position: relative; padding-left: 24px; margin: 24px 0; }
44
+ .timeline::before { content: ''; position: absolute; left: 7px; top: 0; bottom: 0; width: 2px; background: linear-gradient(180deg, #f87171, #22d3ee, #a78bfa); }
45
+ .tl-item { position: relative; margin-bottom: 22px; }
46
+ .tl-item::before { content: ''; position: absolute; left: -21px; top: 5px; width: 10px; height: 10px; border-radius: 50%; background: #22d3ee; border: 2px solid #0d1322; }
47
+ .tl-item .tl-ver { font-family: 'JetBrains Mono', monospace; color: #22d3ee; font-size: .82rem; font-weight: 700; }
48
+ .tl-item .tl-title { font-weight: 600; margin: 2px 0; }
49
+ .tl-item .tl-desc { color: #94a3b8; font-size: .85rem; line-height: 1.5; }
50
+
51
+ /* callout */
52
+ .callout { border-radius: 12px; padding: 16px 20px; margin: 20px 0; }
53
+ .callout.info { background: rgba(34,211,238,.07); border: 1px solid rgba(34,211,238,.25); }
54
+ .callout.warn { background: rgba(245,158,11,.08); border: 1px solid rgba(245,158,11,.35); }
55
+ .callout.green { background: rgba(52,211,153,.07); border: 1px solid rgba(52,211,153,.25); }
56
+
57
+ /* who-are-you grid */
58
+ .who-grid { display: grid; grid-template-columns: repeat(auto-fit, minmax(260px, 1fr)); gap: 16px; margin: 24px 0; }
59
+ .who-card { background: #10172a; border: 1px solid #1f2937; border-radius: 12px; padding: 20px; }
60
+ .who-card h4 { margin: 0 0 10px; font-size: 1rem; }
61
+ .who-card ul { margin: 0; padding-left: 18px; font-size: .85rem; color: #94a3b8; }
62
+ .who-card ul li { margin-bottom: 5px; }
63
+ .who-card a { color: #22d3ee; }
64
+
65
+ /* positioning table */
66
+ .pos-table { width: 100%; border-collapse: collapse; margin: 16px 0; background: #10172a; border: 1px solid #1f2937; border-radius: 10px; overflow: hidden; }
67
+ .pos-table th, .pos-table td { padding: 11px 16px; text-align: left; border-bottom: 1px solid #1f2937; vertical-align: top; }
68
+ .pos-table th { background: #0d1322; color: #94a3b8; font-weight: 600; font-size: .82rem; text-transform: uppercase; letter-spacing: .05em; }
69
+ .pos-table tr:last-child td { border-bottom: none; }
70
+ .pos-table .old { color: #f87171; font-size: .85rem; }
71
+ .pos-table .new { color: #34d399; font-size: .85rem; }
72
+
73
+ @media (max-width: 640px) {
74
+ .layer { grid-template-columns: 48px 1fr; }
75
+ .layer .links { display: none; }
76
+ }
77
+ </style>
78
+ </head>
79
+ <body>
80
+
81
+ <nav class="navbar">
82
+ <div class="container">
83
+ <a href="/" class="navbar-brand"><div class="brand-icon">⚡</div><span>WAB</span></a>
84
+ <ul class="navbar-links">
85
+ <li><a href="/docs">Docs</a></li>
86
+ <li><a href="/wab-today" style="color:var(--text-primary);">WAB Today</a></li>
87
+ <li><a href="/threat-model">Threat Model</a></li>
88
+ <li><a href="/atp-semantics">ATP Semantics</a></li>
89
+ <li><a href="/whitepaper">Whitepaper</a></li>
90
+ </ul>
91
+ <div class="navbar-actions">
92
+ <a href="/login" class="btn btn-ghost">Sign In</a>
93
+ <a href="/register" class="btn btn-primary btn-sm">Get Started</a>
94
+ </div>
95
+ </div>
96
+ </nav>
97
+
98
+ <main class="wt">
99
+
100
+ <div style="font-size:.8rem;color:#94a3b8;margin-bottom:12px;">
101
+ <a href="/" style="color:#94a3b8">Home</a> / WAB Today
102
+ <span style="display:inline-block;margin-left:12px;background:rgba(34,211,238,.1);color:#22d3ee;padding:2px 10px;border-radius:999px;font-weight:600;">v3.20.0</span>
103
+ </div>
104
+
105
+ <h1>WAB Today</h1>
106
+ <p class="lead">
107
+ What is Web Agent Bridge in 2026? This page is the single authoritative answer.
108
+ WAB evolved from a browser middleware script (v1) into a multi-layer open protocol and
109
+ infrastructure ecosystem. Below you'll find the current architecture, the evolution
110
+ timeline, and a guide to where each piece fits.
111
+ </p>
112
+
113
+ <!-- ── Positioning table ──────────────────────────────────────── -->
114
+ <div class="callout warn">
115
+ <strong style="color:#fbbf24">⚠️ Common first impression:</strong> many visitors arrive expecting a
116
+ JavaScript snippet and a license key. That was WAB v1. If you reached this page from old docs, a
117
+ tutorial, or an AI-generated summary, read this page first — the architecture changed significantly.
118
+ </div>
119
+
120
+ <h2 id="then-vs-now">Then vs. Now</h2>
121
+ <table class="pos-table">
122
+ <thead><tr><th>Dimension</th><th>WAB v1 (2024)</th><th>WAB v3.20 (2026)</th></tr></thead>
123
+ <tbody>
124
+ <tr>
125
+ <td>Core identity</td>
126
+ <td class="old">Browser middleware script</td>
127
+ <td class="new">Open AI↔Web protocol</td>
128
+ </tr>
129
+ <tr>
130
+ <td>Site integration</td>
131
+ <td class="old"><code>window.AIBridgeConfig + licenseKey</code></td>
132
+ <td class="new"><code>/.well-known/wab.json</code> + Ed25519 manifest</td>
133
+ </tr>
134
+ <tr>
135
+ <td>Agent discovery</td>
136
+ <td class="old">Script tag on page</td>
137
+ <td class="new">DNS TXT (<code>_wab.domain</code>) or <code>/.wab</code> beacon</td>
138
+ </tr>
139
+ <tr>
140
+ <td>Trust model</td>
141
+ <td class="old">License key (server-side)</td>
142
+ <td class="new">Ed25519 signatures + Ring 4 trust graph</td>
143
+ </tr>
144
+ <tr>
145
+ <td>Transactions</td>
146
+ <td class="old">Not supported</td>
147
+ <td class="new">ATP — signed intents, idempotent execution, verifiable receipts</td>
148
+ </tr>
149
+ <tr>
150
+ <td>Network effect</td>
151
+ <td class="old">None (per-site)</td>
152
+ <td class="new">Self-propagating Spider Network + Gossip Protocol</td>
153
+ </tr>
154
+ <tr>
155
+ <td>Governance</td>
156
+ <td class="old">None</td>
157
+ <td class="new">HMAC-chained audit log, EU AI Act Article 12 export</td>
158
+ </tr>
159
+ <tr>
160
+ <td>Agent training</td>
161
+ <td class="old">None</td>
162
+ <td class="new">Public HuggingFace dataset of interaction traces</td>
163
+ </tr>
164
+ </tbody>
165
+ </table>
166
+ <p style="color:#94a3b8;font-size:.88rem">
167
+ The legacy <code>window.AIBridgeConfig</code> interface remains supported for backward compatibility
168
+ and is documented in <a href="/docs#legacy-config">docs → Legacy section</a>. No new integrations
169
+ should use it.
170
+ </p>
171
+
172
+ <!-- ── Six layers ──────────────────────────────────────────────── -->
173
+ <h2 id="layers">The Six Architectural Layers</h2>
174
+ <p style="color:#94a3b8">WAB is not a single product. It is a stack of six layers, each independently usable, composable, and open.</p>
175
+
176
+ <div class="layer-stack">
177
+ <div class="layer l0">
178
+ <div class="num">L0</div>
179
+ <div class="body">
180
+ <strong>Discovery</strong>
181
+ <span>How agents find WAB-enabled sites. Three mechanisms: DNS TXT (<code>_wab.domain</code>), HTTPS manifest (<code>/.well-known/wab.json</code>), and the <code>/.wab</code> Beacon with a live <code>next[]</code> peer list. The Spider Network propagates discovery automatically through the Gossip Protocol — no registry required.</span>
182
+ </div>
183
+ <div class="links">
184
+ <a href="/dns">DNS Discovery ↗</a>
185
+ <a href="/.well-known/wab.json">wab.json example ↗</a>
186
+ <a href="/.wab">/.wab beacon ↗</a>
187
+ <a href="/wab-registry">Spider Registry ↗</a>
188
+ <a href="/api/registry/gossip">Gossip API ↗</a>
189
+ </div>
190
+ </div>
191
+ <div class="layer l1">
192
+ <div class="num">L1</div>
193
+ <div class="body">
194
+ <strong>Manifest &amp; Capabilities</strong>
195
+ <span>The <code>wab.json</code> manifest is the contract between a site and agents. It declares capabilities (what agents can do), scopes (public / user / admin), the site's Ed25519 public key, and endpoint URLs. Versioned with <code>schema_version</code>. Signed by the site key.</span>
196
+ </div>
197
+ <div class="links">
198
+ <a href="/docs#wab-json">Manifest spec ↗</a>
199
+ <a href="/spec">Full spec ↗</a>
200
+ </div>
201
+ </div>
202
+ <div class="layer l2">
203
+ <div class="num">L2</div>
204
+ <div class="body">
205
+ <strong>Trust &amp; Cryptography</strong>
206
+ <span>Ed25519 signatures on every manifest, receipt, and intent. Ring 4 trust graph: each ring adds a layer of verification (DNS, HTTPS, Notary attestation, governance). Key rotation is documented and automated. Emergency revocation reachable within minutes. All keys auditable on the public Notary.</span>
207
+ </div>
208
+ <div class="links">
209
+ <a href="/security">Security model ↗</a>
210
+ <a href="/threat-model">Threat model ↗</a>
211
+ <a href="/key-rotation">Key rotation ↗</a>
212
+ <a href="/notary">Notary ↗</a>
213
+ </div>
214
+ </div>
215
+ <div class="layer l3">
216
+ <div class="num">L3</div>
217
+ <div class="body">
218
+ <strong>ATP — Agent Transaction Protocol</strong>
219
+ <span>The trust + transaction layer for agentic commerce. Signed intent contracts (scope, spend cap, nonce), idempotent execution (<code>UNIQUE(intent_id, idempotency_key)</code>), and Ed25519-signed receipts. A receipt is only issued after <code>settled</code> state — there is no "maybe transacted" state. Retry-safe by construction.</span>
220
+ </div>
221
+ <div class="links">
222
+ <a href="/atp">ATP overview ↗</a>
223
+ <a href="/atp-semantics">Consistency model ↗</a>
224
+ <a href="/benchmarks">Benchmarks ↗</a>
225
+ </div>
226
+ </div>
227
+ <div class="layer l4">
228
+ <div class="num">L4</div>
229
+ <div class="body">
230
+ <strong>Governance &amp; Observability</strong>
231
+ <span>HMAC-chained audit log: every protocol event is chained so tampering is detectable. EU AI Act Article 12 export built-in. Observatory tracks WAB adoption across the web. Research dataset (CC-BY-4.0) available for academic use. WAB Lens browser extension shows trust status on every site.</span>
232
+ </div>
233
+ <div class="links">
234
+ <a href="/governance">Governance ↗</a>
235
+ <a href="/observatory">Observatory ↗</a>
236
+ <a href="/research">Research dataset ↗</a>
237
+ <a href="/wab-lens">WAB Lens ↗</a>
238
+ </div>
239
+ </div>
240
+ <div class="layer l5">
241
+ <div class="num">L5</div>
242
+ <div class="body">
243
+ <strong>Self-Propagating Protocol</strong>
244
+ <span>The ecosystem layer. After one human installs WAB, the network grows autonomously: Beacon <code>next[]</code> peer lists, Gossip peer exchange on every <code>/report</code> call, <code>X-WAB-Next-Sites</code> DNA header on every HTTP response, and a public training dataset that teaches future AI models to prefer WAB sites by default. Viral coefficient (k-factor) tracked live.</span>
245
+ </div>
246
+ <div class="links">
247
+ <a href="/viral-coefficient">Viral coefficient ↗</a>
248
+ <a href="/wab-dataset">Training dataset ↗</a>
249
+ <a href="/api/traces/stats">Live stats ↗</a>
250
+ </div>
251
+ </div>
252
+ </div>
253
+
254
+ <!-- ── Evolution timeline ──────────────────────────────────────── -->
255
+ <h2 id="evolution">Protocol Evolution</h2>
256
+
257
+ <div class="timeline">
258
+ <div class="tl-item">
259
+ <div class="tl-ver">v1.0 — 2024</div>
260
+ <div class="tl-title">Browser middleware script</div>
261
+ <div class="tl-desc"><code>window.AIBridgeConfig</code> + license key. Per-site setup, no DNS, no crypto. Still supported for backward compatibility.</div>
262
+ </div>
263
+ <div class="tl-item">
264
+ <div class="tl-ver">v2.0</div>
265
+ <div class="tl-title">Open protocol + DNS discovery</div>
266
+ <div class="tl-desc"><code>wab.json</code> manifest, Ed25519 keys, <code>_wab.domain TXT</code> record. Agents can find you without HTML scraping.</div>
267
+ </div>
268
+ <div class="tl-item">
269
+ <div class="tl-ver">v3.0</div>
270
+ <div class="tl-title">Ring 4 trust graph + SDK ecosystem</div>
271
+ <div class="tl-desc">Four-ring trust hierarchy, React/Vue/Svelte adapters, LangChain integration, MCP adapter. Enterprise Mesh and Governance SaaS.</div>
272
+ </div>
273
+ <div class="tl-item">
274
+ <div class="tl-ver">v3.9</div>
275
+ <div class="tl-title">ATP — Agent Transaction Primitive</div>
276
+ <div class="tl-desc">Signed intent contracts, idempotent transactions, Ed25519 receipts. The missing trust layer for agentic commerce.</div>
277
+ </div>
278
+ <div class="tl-item">
279
+ <div class="tl-ver">v3.18</div>
280
+ <div class="tl-title">Observatory · Notary · Research · WAB URI scheme</div>
281
+ <div class="tl-desc">Ecosystem observability: adoption tracking, public key attestation with key rotation and web-of-trust, CC-BY-4.0 research dataset, <code>wab://</code> URI scheme.</div>
282
+ </div>
283
+ <div class="tl-item">
284
+ <div class="tl-ver">v3.19</div>
285
+ <div class="tl-title">Spider Network — public registry + /.wab beacon</div>
286
+ <div class="tl-desc">Agents auto-report WAB sites they discover. The <code>/.wab</code> beacon publishes a live <code>next[]</code> peer list. Discovery headers (<code>X-WAB-Enabled</code>, <code>X-WAB-Trust-Ring</code>) on every response.</div>
287
+ </div>
288
+ <div class="tl-item" style="margin-bottom:0">
289
+ <div class="tl-ver">v3.20 — current</div>
290
+ <div class="tl-title">Self-Propagating Protocol</div>
291
+ <div class="tl-desc">Gossip peer exchange in every <code>/report</code> call, <code>X-WAB-Next-Sites</code> DNA header on every HTTP response, public HuggingFace training dataset, live viral coefficient (k-factor) model. Network grows with zero human intervention after first install.</div>
292
+ </div>
293
+ </div>
294
+
295
+ <!-- ── Trust model summary ────────────────────────────────────── -->
296
+ <h2 id="trust">Trust Model — One-Page Summary</h2>
297
+ <div class="callout info">
298
+ Full details → <a href="/threat-model">Threat Model</a> · <a href="/security">Security Model</a> · <a href="/key-rotation">Key Rotation</a>
299
+ </div>
300
+
301
+ <h3>What WAB protects against</h3>
302
+ <ul>
303
+ <li><strong>Manifest tampering</strong> — Ed25519 signature over canonical JSON. Any byte change invalidates the signature.</li>
304
+ <li><strong>Receipt forgery</strong> — receipts are Ed25519-signed by the site key and chained via <code>intent_id</code>. A forged receipt is mathematically distinguishable.</li>
305
+ <li><strong>Replay attacks</strong> — single-use nonce burned on first use. Retries are safe because <code>UNIQUE(intent_id, idempotency_key)</code> prevents double-execution.</li>
306
+ <li><strong>DNS spoofing</strong> — Ring 4 requires cross-validation of DNS TXT + HTTPS manifest + Notary attestation. A spoofed DNS record alone is insufficient.</li>
307
+ <li><strong>Key compromise recovery</strong> — documented rotation procedure with grace window for downstream agents to reconcile. See <a href="/key-rotation">key-rotation</a>.</li>
308
+ </ul>
309
+
310
+ <h3>What WAB does not protect against (by design)</h3>
311
+ <ul>
312
+ <li><strong>Fully compromised origin server</strong> — if an attacker controls the origin, they control the signing key. This is a fundamental limit of all PKI systems, not a WAB-specific gap.</li>
313
+ <li><strong>Sybil attacks on collective intelligence</strong> — the reputation layer is early-stage. Temporal trust scoring and identity cost mechanisms are planned but not yet production-grade.</li>
314
+ <li><strong>WAB-aware but malicious agents</strong> — WAB constrains what agents can do (scopes, rate limits, spend caps), but cannot prevent a malicious agent that has a valid intent from acting within its declared scope.</li>
315
+ </ul>
316
+
317
+ <h3>Single trust anchor (Ring 4)</h3>
318
+ <p style="color:#94a3b8">
319
+ WAB's Notary service acts as a transparency root for Ring 4 attestations — similar to a certificate authority.
320
+ This is intentional and documented. Key rotation, cross-signing between Notary peers, and a public
321
+ transparency log are all operational. See <a href="/notary">Notary</a> and <a href="/key-rotation">Key Rotation</a>
322
+ for the full recovery procedure.
323
+ </p>
324
+
325
+ <!-- ── wab.json versioning ────────────────────────────────────── -->
326
+ <h2 id="versioning">wab.json Versioning &amp; Compatibility Policy</h2>
327
+
328
+ <table class="pos-table">
329
+ <thead><tr><th>schema_version</th><th>Status</th><th>Supported until</th><th>Migration</th></tr></thead>
330
+ <tbody>
331
+ <tr>
332
+ <td><code>"wab/1"</code></td>
333
+ <td><span style="color:#fbbf24">Legacy</span></td>
334
+ <td>Indefinite (backward compat)</td>
335
+ <td>No action needed; ring ≤ 2 only</td>
336
+ </tr>
337
+ <tr>
338
+ <td><code>"wab/2"</code></td>
339
+ <td><span style="color:#34d399">Supported</span></td>
340
+ <td>Until v4.0</td>
341
+ <td>Add <code>endpoints.atp</code> for Ring 3+</td>
342
+ </tr>
343
+ <tr>
344
+ <td><code>"wab/3"</code></td>
345
+ <td><span style="color:#22d3ee">Current</span></td>
346
+ <td>Long-term stable</td>
347
+ <td>—</td>
348
+ </tr>
349
+ </tbody>
350
+ </table>
351
+
352
+ <p style="color:#94a3b8;font-size:.88rem">
353
+ <strong>Deprecation policy:</strong> a schema version is deprecated with a minimum 12-month notice in the changelog,
354
+ a warning field in the <code>/.wab</code> beacon, and a grace period during which both old and new versions
355
+ are accepted. Breaking changes require a major version increment and a migration guide.
356
+ </p>
357
+
358
+ <!-- ── Positioning ────────────────────────────────────────────── -->
359
+ <h2 id="positioning">What WAB Is — and Isn't</h2>
360
+ <p style="color:#94a3b8">
361
+ WAB spans multiple layers that are independently useful, which sometimes creates confusion about
362
+ its identity. Here is the honest positioning:
363
+ </p>
364
+ <table class="pos-table">
365
+ <thead><tr><th>What WAB is</th><th>What WAB is not</th></tr></thead>
366
+ <tbody>
367
+ <tr>
368
+ <td>An open protocol (like HTTP, DNS)</td>
369
+ <td>A single SaaS product</td>
370
+ </tr>
371
+ <tr>
372
+ <td>A trust infrastructure layer (like TLS/CA)</td>
373
+ <td>A replacement for TLS</td>
374
+ </tr>
375
+ <tr>
376
+ <td>A transaction layer for AI agents (like Stripe for agents)</td>
377
+ <td>A payment processor</td>
378
+ </tr>
379
+ <tr>
380
+ <td>An ecosystem of optional modules (Observatory, Notary, Lens…)</td>
381
+ <td>A monolith you must adopt entirely</td>
382
+ </tr>
383
+ <tr>
384
+ <td>Self-hosted + open source (MIT core)</td>
385
+ <td>Vendor lock-in (SaaS tiers are optional)</td>
386
+ </tr>
387
+ </tbody>
388
+ </table>
389
+
390
+ <div class="callout green">
391
+ <strong style="color:#34d399">One-sentence identity:</strong>
392
+ WAB is the open infrastructure layer that lets AI agents discover, verify, and transact with websites
393
+ — the same way HTTPS let browsers trust servers, but for agentic AI.
394
+ </div>
395
+
396
+ <!-- ── Start here ─────────────────────────────────────────────── -->
397
+ <h2 id="start">Where to Start</h2>
398
+ <div class="who-grid">
399
+ <div class="who-card" style="border-left:3px solid #fb923c;">
400
+ <h4>🛠️ Site Owner / Developer</h4>
401
+ <ul>
402
+ <li><a href="/docs#quick-start">Quick Start (60 seconds)</a></li>
403
+ <li><a href="/one-click">One-Click Wizard</a></li>
404
+ <li><a href="/dns">DNS Discovery guide</a></li>
405
+ <li><a href="/docs#wab-json">wab.json manifest spec</a></li>
406
+ </ul>
407
+ </div>
408
+ <div class="who-card" style="border-left:3px solid #22d3ee;">
409
+ <h4>🤖 Agent Builder</h4>
410
+ <ul>
411
+ <li><a href="/docs">Protocol docs</a></li>
412
+ <li><a href="/atp">ATP overview</a></li>
413
+ <li><a href="/atp-semantics">Consistency model</a></li>
414
+ <li><a href="/wab-registry">Find WAB-enabled sites</a></li>
415
+ <li><a href="/wab-dataset">Training dataset</a></li>
416
+ </ul>
417
+ </div>
418
+ <div class="who-card" style="border-left:3px solid #34d399;">
419
+ <h4>🔐 Security Reviewer</h4>
420
+ <ul>
421
+ <li><a href="/threat-model">Threat Model</a></li>
422
+ <li><a href="/security">Security Model</a></li>
423
+ <li><a href="/key-rotation">Key Rotation</a></li>
424
+ <li><a href="/responsible-disclosure">Responsible Disclosure</a></li>
425
+ </ul>
426
+ </div>
427
+ <div class="who-card" style="border-left:3px solid #a78bfa;">
428
+ <h4>🏛️ Enterprise / Evaluator</h4>
429
+ <ul>
430
+ <li><a href="/whitepaper">Whitepaper</a></li>
431
+ <li><a href="/governance">Governance SaaS</a></li>
432
+ <li><a href="/benchmarks">Benchmarks</a></li>
433
+ <li><a href="/enterprise-mesh">Enterprise Mesh</a></li>
434
+ </ul>
435
+ </div>
436
+ </div>
437
+
438
+ <div style="margin-top:48px;padding-top:24px;border-top:1px solid #1f2937;display:flex;gap:16px;flex-wrap:wrap;font-size:.88rem;color:#94a3b8;">
439
+ <span>v3.20.0 · May 2026</span>
440
+ <a href="/spec" style="color:#22d3ee">Full Protocol Spec ↗</a>
441
+ <a href="/whitepaper" style="color:#22d3ee">Whitepaper ↗</a>
442
+ <a href="https://github.com/abokenan444/web-agent-bridge" target="_blank" rel="noopener" style="color:#22d3ee">GitHub ↗</a>
443
+ </div>
444
+
445
+ </main>
446
+
447
+ </body>
448
+ </html>
@@ -0,0 +1,88 @@
1
+ <!doctype html>
2
+ <html lang="en">
3
+ <head>
4
+ <meta charset="utf-8">
5
+ <meta name="viewport" content="width=device-width,initial-scale=1">
6
+ <title>wab:// URI scheme — direct agent action handoff</title>
7
+ <meta name="description" content="The wab:// URI scheme lets users hand off a specific action to a WAB-enabled site or agent, the way mailto: hands off to email clients.">
8
+ <link rel="icon" href="/assets/favicon.svg">
9
+ <style>
10
+ :root{--bg:#0b0f17;--panel:#111827;--fg:#e5e7eb;--muted:#9ca3af;--line:#1f2937;--accent:#60a5fa}
11
+ *{box-sizing:border-box}
12
+ body{margin:0;background:var(--bg);color:var(--fg);font:14px/1.65 -apple-system,BlinkMacSystemFont,"Segoe UI",Roboto,sans-serif}
13
+ header{padding:48px 24px 24px;text-align:center;border-bottom:1px solid var(--line)}
14
+ h1{margin:0 0 8px;font-size:28px}
15
+ header p{margin:0;color:var(--muted);max-width:680px;margin-inline:auto}
16
+ main{max-width:840px;margin:0 auto;padding:24px}
17
+ h2{margin-top:32px;font-size:18px;border-bottom:1px solid var(--line);padding-bottom:6px}
18
+ pre,code{background:#0d1320;border:1px solid var(--line);border-radius:6px}
19
+ pre{padding:12px;overflow-x:auto;font-size:12px}
20
+ code{padding:2px 6px;font-size:12.5px}
21
+ a{color:var(--accent);text-decoration:none}
22
+ a:hover{text-decoration:underline}
23
+ table{width:100%;border-collapse:collapse;margin:8px 0;font-size:13px}
24
+ th,td{padding:8px 10px;border-bottom:1px solid var(--line);text-align:left}
25
+ th{color:var(--muted);font-weight:500;font-size:11px;text-transform:uppercase;letter-spacing:.5px}
26
+ footer{padding:32px 24px;text-align:center;color:var(--muted);font-size:12px;border-top:1px solid var(--line);margin-top:48px}
27
+ </style>
28
+ </head>
29
+ <body>
30
+ <header>
31
+ <h1>wab:// URI scheme</h1>
32
+ <p>The <code>wab://</code> scheme is the <em>mailto:</em> of agent actions — a portable, registerable link that triggers a specific intent on a WAB-enabled site.</p>
33
+ </header>
34
+ <main>
35
+ <h2>Grammar</h2>
36
+ <pre>wab://&lt;host&gt;/&lt;action&gt;[?param=value&amp;param=value...]</pre>
37
+ <table>
38
+ <tr><th>Part</th><th>Meaning</th></tr>
39
+ <tr><td><code>host</code></td><td>Domain that publishes <code>/.well-known/wab.json</code></td></tr>
40
+ <tr><td><code>action</code></td><td>An <code>id</code> from the manifest's <code>actions[]</code> array</td></tr>
41
+ <tr><td><code>params</code></td><td>URL-encoded key/value pairs matching the action's parameter schema</td></tr>
42
+ </table>
43
+
44
+ <h2>Examples</h2>
45
+ <ul>
46
+ <li><code>wab://example-shop.com/checkout?sku=ABC&amp;qty=1</code></li>
47
+ <li><code>wab://restaurant.com/book?date=2026-06-01&amp;guests=2</code></li>
48
+ <li><code>wab://news.example/subscribe?plan=monthly</code></li>
49
+ </ul>
50
+
51
+ <h2>Resolver</h2>
52
+ <p>Until OS handlers ship, this site hosts a universal resolver:</p>
53
+ <pre>https://webagentbridge.com/resolve?u=&lt;url-encoded wab:// URI&gt;</pre>
54
+ <p>The resolver fetches the target's manifest, validates the action exists, and either:</p>
55
+ <ol>
56
+ <li>Renders a confirmation page showing exactly what will happen, or</li>
57
+ <li>Redirects the user agent to the action's <code>endpoint</code> with the parameters attached (when the action is marked <code>safe:true</code> in the manifest).</li>
58
+ </ol>
59
+
60
+ <h2>Manifest declaration</h2>
61
+ <pre>{
62
+ "version": "1",
63
+ "host": "example-shop.com",
64
+ "actions": [
65
+ {
66
+ "id": "checkout",
67
+ "endpoint": "https://example-shop.com/api/checkout",
68
+ "method": "POST",
69
+ "params": {
70
+ "sku": { "type": "string", "required": true },
71
+ "qty": { "type": "integer", "minimum": 1 }
72
+ },
73
+ "safe": false,
74
+ "uri_handler": "wab://example-shop.com/checkout"
75
+ }
76
+ ]
77
+ }</pre>
78
+
79
+ <h2>Native handler registration</h2>
80
+ <p>Browsers can register a site as the handler for the <code>wab</code> scheme via <a href="https://developer.mozilla.org/en-US/docs/Web/API/Navigator/registerProtocolHandler">navigator.registerProtocolHandler</a>:</p>
81
+ <pre>navigator.registerProtocolHandler('web+wab',
82
+ 'https://your-agent.example/handle?u=%s',
83
+ 'My WAB-aware agent');</pre>
84
+ <p>Note: browsers require the <code>web+</code> prefix for unregistered schemes — the canonical wire form remains <code>wab://</code> for portability.</p>
85
+ </main>
86
+ <footer>Part of the <a href="/">Web Agent Bridge</a> protocol. See also: <a href="/docs">Docs</a>, <a href="/atp-semantics">ATP semantics</a>.</footer>
87
+ </body>
88
+ </html>