@oracle-agent/oracle 0.35.0 → 0.35.2

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.
@@ -46,6 +46,17 @@
46
46
  --sans:"Outfit",system-ui,sans-serif;
47
47
  --mono:"IBM Plex Mono",ui-monospace,monospace;
48
48
  --ease:cubic-bezier(.16,1,.3,1);
49
+ --scene-a:#7CC4FF;
50
+ --scene-b:#50D2C1;
51
+ --scene-soft:rgba(124,196,255,.14);
52
+ --scroll-pct:0%;
53
+ --scroll-shift:0px;
54
+ --scroll-shift-neg:0px;
55
+ --scroll-shift-soft:0px;
56
+ --scroll-drift:0px;
57
+ --scroll-rot:0deg;
58
+ --scroll-rot-neg:0deg;
59
+ --scroll-zoom:.94;
49
60
  --pad:clamp(18px,4vw,48px);
50
61
 
51
62
  --fs-micro:10px;
@@ -89,6 +100,22 @@ img{display:inline-block}
89
100
  background-image:url("data:image/svg+xml;utf8,<svg xmlns='http://www.w3.org/2000/svg' width='220' height='220'><filter id='n'><feTurbulence type='fractalNoise' baseFrequency='.85' numOctaves='2' stitchTiles='stitch'/><feColorMatrix values='0 0 0 0 1 0 0 0 0 1 0 0 0 0 1 0 0 0 .55 0'/></filter><rect width='100%25' height='100%25' filter='url(%23n)'/></svg>");
90
101
  }
91
102
 
103
+ .scroll-craft{position:fixed;inset:0;z-index:0;pointer-events:none;overflow:hidden;opacity:.7;mix-blend-mode:screen;contain:layout paint style}
104
+ .scroll-craft::before{content:"";position:absolute;inset:-12%;background:radial-gradient(46% 34% at 72% 22%,var(--scene-soft),transparent 66%),radial-gradient(38% 28% at 12% 76%,rgba(80,210,193,.10),transparent 70%);filter:blur(8px);transform:translate3d(0,var(--scroll-drift),0) scale(1.04)}
105
+ .craft-grid{position:absolute;inset:-8%;opacity:.22;background-image:linear-gradient(rgba(124,196,255,.12) 1px,transparent 1px),linear-gradient(90deg,rgba(124,196,255,.10) 1px,transparent 1px);background-size:72px 72px;mask-image:radial-gradient(ellipse at 56% 42%,#000 0%,transparent 70%);-webkit-mask-image:radial-gradient(ellipse at 56% 42%,#000 0%,transparent 70%);transform:translate3d(var(--scroll-drift),var(--scroll-shift-neg),0)}
106
+ .craft-orbit{position:absolute;right:min(7vw,92px);top:22vh;width:clamp(220px,28vw,430px);aspect-ratio:1;border-radius:50%;border:1px solid rgba(167,216,255,.2);box-shadow:0 0 70px rgba(124,196,255,.1),inset 0 0 42px rgba(124,196,255,.06);transform:translate3d(0,var(--scroll-shift),0) rotate(var(--scroll-rot)) scale(var(--scroll-zoom))}
107
+ .craft-orbit::before,.craft-orbit::after{content:"";position:absolute;inset:12%;border-radius:50%;border:1px solid rgba(124,196,255,.18);transform:rotateX(68deg)}
108
+ .craft-orbit::after{inset:24%;border-color:rgba(80,210,193,.2);transform:rotateY(64deg)}
109
+ .craft-orbit.is-b{right:auto;left:-8vw;top:62vh;width:clamp(240px,34vw,520px);opacity:.46;filter:blur(.2px);transform:translate3d(0,var(--scroll-shift-soft),0) rotate(var(--scroll-rot-neg)) scale(.86)}
110
+ .scene-rail{position:fixed;right:18px;top:50%;z-index:29;transform:translateY(-50%);display:grid;gap:11px;font-family:var(--mono);font-size:9px;letter-spacing:.16em;text-transform:uppercase;color:rgba(201,218,236,.44)}
111
+ .scene-rail span{position:relative;display:grid;place-items:center;width:30px;height:22px;border:1px solid rgba(124,196,255,.12);border-radius:999px;background:rgba(11,16,24,.40);transition:color .35s var(--ease),border-color .35s var(--ease),background .35s var(--ease),transform .35s var(--ease)}
112
+ body[data-scene="home"] .scene-rail span[data-scene-dot="home"],body[data-scene="orchestration"] .scene-rail span[data-scene-dot="orchestration"],body[data-scene="chains"] .scene-rail span[data-scene-dot="chains"],body[data-scene="cli"] .scene-rail span[data-scene-dot="cli"],body[data-scene="fees"] .scene-rail span[data-scene-dot="fees"]{color:#071018;border-color:rgba(184,240,255,.82);background:linear-gradient(180deg,var(--scene-a),var(--scene-b));transform:translateX(-4px)}
113
+ body[data-scene="home"]{--scene-a:#7CC4FF;--scene-b:#50D2C1;--scene-soft:rgba(124,196,255,.16)}
114
+ body[data-scene="orchestration"]{--scene-a:#A7D8FF;--scene-b:#9945FF;--scene-soft:rgba(153,69,255,.12)}
115
+ body[data-scene="chains"]{--scene-a:#50D2C1;--scene-b:#D7FF4D;--scene-soft:rgba(80,210,193,.13)}
116
+ body[data-scene="cli"]{--scene-a:#F4F9FE;--scene-b:#7CC4FF;--scene-soft:rgba(244,249,254,.12)}
117
+ body[data-scene="fees"]{--scene-a:#D7FF4D;--scene-b:#F0B90B;--scene-soft:rgba(240,185,11,.12)}
118
+
92
119
  /* ── orbital oracle mark ───────────────────────────── */
93
120
  .orbital{position:relative;display:inline-block}
94
121
  .orbital svg{display:block;overflow:visible;width:100%;height:100%}
@@ -116,9 +143,10 @@ img{display:inline-block}
116
143
 
117
144
  .progress{
118
145
  position:fixed;top:0;left:0;right:0;height:2px;z-index:35;pointer-events:none;
119
- background:linear-gradient(90deg,var(--blue),var(--blue2));
146
+ background:linear-gradient(90deg,var(--scene-a),var(--scene-b));
120
147
  transform-origin:0 50%;transform:scaleX(0);
121
- box-shadow:0 0 12px rgba(124,196,255,.5);
148
+ box-shadow:0 0 14px var(--scene-soft);
149
+ transition:background .45s var(--ease),box-shadow .45s var(--ease);
122
150
  }
123
151
 
124
152
  .nav{
@@ -127,9 +155,14 @@ img{display:inline-block}
127
155
  grid-template-columns:1fr auto;
128
156
  align-items:center;gap:16px;
129
157
  padding:14px var(--pad);
130
- background:rgba(11,16,24,.82);
158
+ background:linear-gradient(90deg,rgba(11,16,24,.88),rgba(11,16,24,.72));
131
159
  border-bottom:1px solid var(--line);
160
+ box-shadow:0 18px 50px rgba(0,0,0,.22);
161
+ backdrop-filter:blur(18px);
162
+ -webkit-backdrop-filter:blur(18px);
163
+ transition:border-color .45s var(--ease),box-shadow .45s var(--ease);
132
164
  }
165
+ body[data-scene="cli"] .nav,body[data-scene="fees"] .nav{border-bottom-color:rgba(184,240,255,.22);box-shadow:0 18px 60px rgba(0,0,0,.34),0 0 42px var(--scene-soft)}
133
166
  .brand{
134
167
  display:flex;align-items:center;gap:12px;
135
168
  font-family:var(--display);font-size:var(--fs-lg);font-weight:400;letter-spacing:.02em;
@@ -1037,18 +1070,14 @@ a.chip:hover{border-color:rgba(124,196,255,.3);background:rgba(21,32,49,.6);tran
1037
1070
  .hero-shot-orb video{opacity:0;transition:opacity .6s var(--ease)}
1038
1071
  .hero-shot-orb video.ready{opacity:1}
1039
1072
  .hero-shot-orb video.ready ~ #orb-still{position:absolute;inset:0;opacity:0;pointer-events:none}
1040
- @media (prefers-reduced-motion:reduce){
1041
- .hero-shot-orb video{display:none}
1042
- .hero-shot-orb #orb-still{position:static;opacity:1}
1043
- }
1044
- /* CLI section leads with the filled active-surface still. */
1073
+ @media (prefers-reduced-motion:reduce){.hero-shot-orb video{display:none}.hero-shot-orb video.ready~#orb-still{position:static;opacity:1}}
1074
+ /* CLI section leads with a real TUI capture; poster is the reduced-motion fallback. */
1045
1075
  .cli-proof{position:relative;aspect-ratio:auto;height:auto;min-height:0;padding:0;
1046
1076
  max-width:868px;margin-inline:auto;line-height:0;display:block}
1047
- .cli-proof #cli-still{display:block;width:100%;height:auto}
1048
- .cli-proof video.ready ~ #cli-still{position:absolute;inset:0;opacity:0;pointer-events:none}
1077
+ .cli-proof picture,.cli-proof img{display:block;width:100%;height:auto}
1078
+ .cli-proof figcaption{line-height:1.4}
1049
1079
  @media (prefers-reduced-motion:reduce){
1050
- .cli-proof video{display:none}
1051
- .cli-proof #cli-still{position:static;opacity:1}
1080
+ .cli-proof img{position:static;opacity:1}
1052
1081
  }
1053
1082
 
1054
1083
  /* Recorded session leads; the still is the fallback underneath it. */
@@ -1089,6 +1118,20 @@ footer{margin-top:clamp(72px,12vh,120px);border-top:1px solid var(--line);paddin
1089
1118
  .js .rv.in{opacity:1;transform:translate3d(0,0,0);transition:opacity 1.05s var(--ease),transform 1.05s var(--ease)}
1090
1119
  .js .rv.done{transform:none;will-change:auto}
1091
1120
 
1121
+
1122
+ .section{position:relative}
1123
+ .section::before{content:"";position:absolute;left:var(--pad);right:var(--pad);top:0;height:1px;background:linear-gradient(90deg,transparent,var(--scene-a),transparent);opacity:.38;transform-origin:0 50%;transform:scaleX(.35);transition:opacity .45s var(--ease),background .45s var(--ease),transform .8s var(--ease)}
1124
+ .section.is-scene::before{opacity:.82;transform:scaleX(1)}
1125
+ .section-title em,.home-title em{transition:color .45s var(--ease),text-shadow .45s var(--ease)}
1126
+ .section.is-scene .section-title em,body[data-scene="home"] .home-title em{color:var(--scene-a);text-shadow:0 0 34px var(--scene-soft)}
1127
+ .graph-shell,.hl-surface,.strategy-surface,.cli-proof,.moat-grid,.selfcustody,.motion-lab{transition:box-shadow .55s var(--ease),border-color .55s var(--ease),transform .55s var(--ease)}
1128
+ .section.is-scene .graph-shell,.section.is-scene .hl-surface,.section.is-scene .strategy-surface,.section.is-scene .cli-proof,.section.is-scene .moat-grid,.section.is-scene .selfcustody,.section.is-scene .motion-lab{box-shadow:0 34px 120px rgba(0,0,0,.34),0 0 0 1px color-mix(in srgb,var(--scene-a) 22%,transparent),0 0 80px var(--scene-soft)}
1129
+ .premium-motion .strategy-card,.premium-motion .chain,.premium-motion .agent-panel{will-change:transform}
1130
+ .premium-motion .route-tree line{stroke-dasharray:10 7;animation:flow-down 2.4s linear infinite}
1131
+ .premium-motion .cli-proof{transform-origin:50% 45%}
1132
+ @media (max-width:980px){.scene-rail{display:none}.scroll-craft{opacity:.42}.craft-orbit{right:-18vw;top:18vh}.craft-orbit.is-b{display:none}}
1133
+ @media (prefers-reduced-motion:reduce){.scroll-craft{display:none}.scene-rail{display:none}.section::before{transform:none}.section.is-scene .graph-shell,.section.is-scene .hl-surface,.section.is-scene .strategy-surface,.section.is-scene .cli-proof,.section.is-scene .moat-grid,.section.is-scene .selfcustody,.section.is-scene .motion-lab{box-shadow:none}.premium-motion .route-tree line{animation:none}}
1134
+
1092
1135
  @media (max-width:960px){
1093
1136
  .home-inner{max-width:760px}
1094
1137
  .hero-stage{min-height:clamp(300px,44vh,460px)}.home-title{font-size:var(--fs-4xl)}
@@ -1174,6 +1217,18 @@ footer{margin-top:clamp(72px,12vh,120px);border-top:1px solid var(--line);paddin
1174
1217
  <body>
1175
1218
  <div class="grain" aria-hidden="true"></div>
1176
1219
  <div class="progress" id="progress" aria-hidden="true"></div>
1220
+ <div class="scroll-craft" aria-hidden="true">
1221
+ <div class="craft-grid"></div>
1222
+ <div class="craft-orbit is-a"></div>
1223
+ <div class="craft-orbit is-b"></div>
1224
+ </div>
1225
+ <div class="scene-rail" aria-hidden="true">
1226
+ <span data-scene-dot="home">01</span>
1227
+ <span data-scene-dot="orchestration">02</span>
1228
+ <span data-scene-dot="chains">03</span>
1229
+ <span data-scene-dot="cli">04</span>
1230
+ <span data-scene-dot="fees">05</span>
1231
+ </div>
1177
1232
 
1178
1233
  <div class="loader out" id="loader" aria-hidden="true" style="display:none">
1179
1234
  <div class="loader-inner">
@@ -1200,7 +1255,7 @@ footer{margin-top:clamp(72px,12vh,120px);border-top:1px solid var(--line);paddin
1200
1255
  <circle class="core" cx="50" cy="50" r="11"/>
1201
1256
  </svg>
1202
1257
  </span>
1203
- oracle</a>
1258
+ oracle <span class="nav-chip">beta</span></a>
1204
1259
  <nav class="nav-links" aria-label="Primary">
1205
1260
  <a class="hide-sm" href="#cli">CLI</a>
1206
1261
  <a class="hide-sm" href="#orchestration">Profiles</a>
@@ -1251,42 +1306,35 @@ footer{margin-top:clamp(72px,12vh,120px);border-top:1px solid var(--line);paddin
1251
1306
 
1252
1307
  <div class="hero-installer" data-install-tabs>
1253
1308
  <div class="hero-install-tabs" role="tablist" aria-label="Install Oracle">
1254
- <button class="hero-install-tab" id="install-tab-macos" type="button" role="tab" aria-selected="true" aria-controls="install-panel-macos" tabindex="0" data-install-tab="macos">macOS</button>
1255
- <button class="hero-install-tab" id="install-tab-linux" type="button" role="tab" aria-selected="false" aria-controls="install-panel-linux" tabindex="-1" data-install-tab="linux">Linux</button>
1309
+ <button class="hero-install-tab" id="install-tab-unix" type="button" role="tab" aria-selected="true" aria-controls="install-panel-unix" tabindex="0" data-install-tab="unix">macOS / Linux</button>
1256
1310
  <button class="hero-install-tab" id="install-tab-windows" type="button" role="tab" aria-selected="false" aria-controls="install-panel-windows" tabindex="-1" data-install-tab="windows">Windows</button>
1257
1311
  </div>
1258
- <div class="hero-install-panel" id="install-panel-macos" role="tabpanel" aria-labelledby="install-tab-macos" data-install-panel="macos">
1259
- <button class="hero-install-command" type="button" data-copy-install="curl -fsSL https://oracle.demi.la/install.sh | bash" aria-label="Copy the macOS install command">
1312
+ <div class="hero-install-panel" id="install-panel-unix" role="tabpanel" aria-labelledby="install-tab-unix" data-install-panel="unix">
1313
+ <button class="hero-install-command" type="button" data-copy-install="curl -fsSL https://oracle.demi.la/install.sh | bash" aria-label="Copy the macOS or Linux install command">
1260
1314
  <code>curl -fsSL https://oracle.demi.la/install.sh | bash</code><span class="hero-install-copy">Copy</span>
1261
1315
  </button>
1262
- <div class="hero-install-meta"><span>macOS · CLI</span><a href="/downloads/artifacts/Oracle-0.4.10-arm64.dmg">Download Oracle app · DMG</a></div>
1263
- </div>
1264
- <div class="hero-install-panel" id="install-panel-linux" role="tabpanel" aria-labelledby="install-tab-linux" data-install-panel="linux" hidden>
1265
- <button class="hero-install-command" type="button" data-copy-install="curl -fsSL https://oracle.demi.la/install.sh | bash" aria-label="Copy the Linux install command">
1266
- <code>curl -fsSL https://oracle.demi.la/install.sh | bash</code><span class="hero-install-copy">Copy</span>
1267
- </button>
1268
- <div class="hero-install-meta"><span>Linux · CLI</span><a href="/downloads/artifacts/Oracle-0.4.10.AppImage">Download Oracle app · AppImage</a></div>
1316
+ <div class="hero-install-meta"><span>macOS + Linux · CLI</span></div>
1269
1317
  </div>
1270
1318
  <div class="hero-install-panel" id="install-panel-windows" role="tabpanel" aria-labelledby="install-tab-windows" data-install-panel="windows" hidden>
1271
1319
  <button class="hero-install-command" type="button" data-copy-install="iex (irm https://oracle.demi.la/install.ps1)" aria-label="Copy the Windows install command">
1272
1320
  <code>iex (irm https://oracle.demi.la/install.ps1)</code><span class="hero-install-copy">Copy</span>
1273
1321
  </button>
1274
- <div class="hero-install-meta"><span>Windows · CLI + Oracle app</span><a href="/downloads/artifacts/Oracle-Setup-0.4.10.exe">Download installer · EXE</a></div>
1322
+ <div class="hero-install-meta"><span>Windows · CLI</span></div>
1275
1323
  </div>
1276
1324
  </div>
1277
1325
 
1278
1326
  <div class="home-stats rv" aria-label="Oracle surface metrics">
1279
- <div class="home-stat"><b id="hero-protocol-count" data-count="110">110</b><span>protocol entries wired</span></div>
1280
- <div class="home-stat"><b id="hero-provider-count" data-count="70">70</b><span>data providers</span></div>
1281
- <div class="home-stat"><b id="hero-op-count" data-count="322">322</b><span>data operations</span></div>
1282
- <div class="home-stat"><b id="hero-chain-count">13 + EVM</b><span>chains wired</span></div>
1327
+ <div class="home-stat"><b id="hero-protocol-count" data-count="220">220</b><span>protocols / venues wired</span></div>
1328
+ <div class="home-stat"><b id="hero-provider-count" data-count="109">109</b><span>data providers</span></div>
1329
+ <div class="home-stat"><b id="hero-op-count" data-count="467">467</b><span>data operations</span></div>
1330
+ <div class="home-stat"><b id="hero-chain-count">14 + EVM</b><span>chains wired</span></div>
1283
1331
  </div>
1284
1332
  </div>
1285
1333
  </section>
1286
1334
  <section class="section" id="orchestration">
1287
1335
  <p class="section-label rv">Profiles</p>
1288
1336
  <h2 class="section-title rv">Multi-profile. <em>Customizable.</em></h2>
1289
- <p class="section-lede rv">Input / Command hits the Oracle control plane, then routes across venue profiles, multi-chain EVM, Bitcoin, Solana, and the protocol builder. Any MCP harness can drive a single agent.</p>
1337
+ <p class="section-lede rv">Input hits the Oracle control plane and routes across venue profiles, multi-chain EVM, Bitcoin, Solana, and the protocol builder. Any MCP harness drives a single agent.</p>
1290
1338
 
1291
1339
  <div class="graph-shell rv">
1292
1340
  <div class="graph-top">
@@ -1358,7 +1406,7 @@ footer{margin-top:clamp(72px,12vh,120px);border-top:1px solid var(--line);paddin
1358
1406
  <div class="node route p-hl">
1359
1407
  <div class="tag">profile</div>
1360
1408
  <div class="name">hyperliquid agent</div>
1361
- <div class="sub">perps · hip-3/4 · ta</div>
1409
+ <div class="sub">perps · hip-3/4 · funding</div>
1362
1410
  <div class="chains"><span class="ch">Hyperliquid <img src="https://icons.llamao.fi/icons/protocols/hyperliquid?w=24&h=24" alt="" loading="lazy"></span><span class="ch">Hyperliquid 999 <img src="https://icons.llamao.fi/icons/chains/rsz_hyperliquid?w=24&h=24" alt="" loading="lazy"></span></div>
1363
1411
  </div>
1364
1412
  <div class="node route p-rh">
@@ -1440,7 +1488,7 @@ footer{margin-top:clamp(72px,12vh,120px);border-top:1px solid var(--line);paddin
1440
1488
  <article class="route-card p-hl">
1441
1489
  <div class="where">hyperliquid agent →</div>
1442
1490
  <h3>Hyperliquid <img src="https://icons.llamao.fi/icons/protocols/hyperliquid?w=40&h=40" alt="Hyperliquid" loading="lazy"></h3>
1443
- <p>Native perps, HIP-3/4 asset resolve, TA, event risk, and Hyperliquid when you need HL's EVM surface.</p>
1491
+ <p>Native perps, HIP-3/4 asset resolve, funding, event risk, and Hyperliquid when you need HL's EVM surface.</p>
1444
1492
  <div class="chips">
1445
1493
  <span class="chip-s">perps</span>
1446
1494
  <span class="chip-s">HIP-3/4</span>
@@ -1461,7 +1509,7 @@ footer{margin-top:clamp(72px,12vh,120px);border-top:1px solid var(--line);paddin
1461
1509
  <article class="route-card p-sol">
1462
1510
  <div class="where">solana agent →</div>
1463
1511
  <h3>Solana <img src="https://icons.llamao.fi/icons/chains/rsz_solana?w=40&h=40" alt="Solana" loading="lazy"></h3>
1464
- <p>Jupiter routes, Sanctum liquid-staking tokens, Solend lending, Kamino strategies, Meteora DLMM, Jito MEV, and Pyth feeds. The bounded lane decodes every instruction and bans delegation ops outright.</p>
1512
+ <p>Jupiter routes and one-shot swaps, Sanctum LSTs, Solend, Kamino, Meteora DLMM, Jito MEV, and Pyth feeds. The bounded lane decodes every instruction and bans delegation ops.</p>
1465
1513
  <div class="chips">
1466
1514
  <span class="chip-s">Jupiter</span>
1467
1515
  <span class="chip-s">swaps</span>
@@ -1471,7 +1519,7 @@ footer{margin-top:clamp(72px,12vh,120px);border-top:1px solid var(--line);paddin
1471
1519
  <article class="route-card p-btc">
1472
1520
  <div class="where">bitcoin agent →</div>
1473
1521
  <h3>Bitcoin <img src="https://icons.llamao.fi/icons/chains/rsz_bitcoin?w=40&h=40" alt="Bitcoin" loading="lazy"></h3>
1474
- <p>Ordinals, runes, Babylon staking, Lightning topology, mining economics, and the Liquid and Stacks sidechains. Every PSBT input carries proven provenance, so fees are computed, not asserted.</p>
1522
+ <p>Ordinals, runes, Babylon staking, Lightning, mining economics, Liquid and Stacks. Every PSBT input carries proven provenance fees are computed, not asserted.</p>
1475
1523
  <div class="chips">
1476
1524
  <span class="chip-s">ordinals</span>
1477
1525
  <span class="chip-s">runes</span>
@@ -1481,7 +1529,7 @@ footer{margin-top:clamp(72px,12vh,120px);border-top:1px solid var(--line);paddin
1481
1529
  <article class="route-card p-evm">
1482
1530
  <div class="where">evm / bridge agent →</div>
1483
1531
  <h3>Multi-chain EVM <img src="https://icons.llamao.fi/icons/chains/rsz_ethereum?w=40&h=40" alt="Ethereum" loading="lazy"></h3>
1484
- <p>Multi-chain routes, LI.FI and Relay bridges, Aave lending, Spark, Beefy, Symbiotic restaking, and CoW solver auctions. Bounded evm-swap and evm-bridge lanes.</p>
1532
+ <p>Multi-chain routes, LI.FI and Relay bridges, Aave, Spark, Beefy, Symbiotic restaking. 1inch limit posts, CoW posting, ERC-8004 agent identity, EIP-7702 last-mile execute and options typed-data. Bounded evm-swap and evm-bridge lanes.</p>
1485
1533
  <div class="chips">
1486
1534
  <span class="chip-s">evm-swap</span>
1487
1535
  <span class="chip-s">evm-bridge</span>
@@ -1491,7 +1539,7 @@ footer{margin-top:clamp(72px,12vh,120px);border-top:1px solid var(--line);paddin
1491
1539
  <article class="route-card p-nft">
1492
1540
  <div class="where">nft agent →</div>
1493
1541
  <h3>Cross-chain NFTs <img src="assets/protocols/opensea.png" alt="OpenSea" loading="lazy"></h3>
1494
- <p>List across 22 EVM chains and Solana via OpenSea. Buy and list Ordinals through Satflow with proven PSBT provenance. Solana listings via Magic Eden. Floors, holdings and PnL are read first, then prepared for your signature.</p>
1542
+ <p>List across 22 EVM chains and Solana via OpenSea, Ordinals via Satflow with proven PSBT provenance, Solana via Magic Eden. Floors, holdings and PnL read first, then prepared for your signature.</p>
1495
1543
  <div class="chips">
1496
1544
  <span class="chip-s">list</span>
1497
1545
  <span class="chip-s">buy</span>
@@ -1521,7 +1569,7 @@ footer{margin-top:clamp(72px,12vh,120px);border-top:1px solid var(--line);paddin
1521
1569
  </article>
1522
1570
  </div>
1523
1571
  <div class="why-band">
1524
- <p>The model proposes. Policy bounds. You own signatures. Multi-profile desks route each request to the right surface. Vaults, perps, bridges, and protocol scaffolds, not just swaps. Empty allowlists refuse everything until you configure them.</p>
1572
+ <p>The model proposes. Policy bounds. You own signatures. Profiles route each request to the right surface — vaults, perps, bridges, and protocol scaffolds. Empty allowlists refuse everything.</p>
1525
1573
  </div>
1526
1574
  </div>
1527
1575
 
@@ -1533,29 +1581,29 @@ footer{margin-top:clamp(72px,12vh,120px);border-top:1px solid var(--line);paddin
1533
1581
  <article class="moat-card">
1534
1582
  <div class="n">bound grants</div>
1535
1583
  <h3>Wallet with temporary agent permission</h3>
1536
- <p>Max value, chain, venue, destinations, and TTL. Outside the grant = hard refuse, not an agent with a free wallet.</p>
1584
+ <p>Max value, chain, venue, destinations, and TTL. Local x402 budgets cap what an agent may spend. Outside the grant = hard refuse, not an agent with a free wallet.</p>
1537
1585
  </article>
1538
1586
  <article class="moat-card">
1539
1587
  <div class="n">bounded surfaces</div>
1540
1588
  <h3>Three local-signer lanes, each with its own decoder</h3>
1541
- <p>evm, btc, sol transfers. Hyperliquid, Polymarket, swaps, and bridges stay wallet-signed. Each local-signer lane decodes its own envelope, proves every value-moving field, and refuses while its allowlists are empty.</p>
1589
+ <p>evm, btc, sol transfers. Hyperliquid, Polymarket, swaps, and bridges stay wallet-signed. Each lane decodes its own envelope and proves every value-moving field. CEX execution ships sealed order routing with Coinbase order paths pinned.</p>
1542
1590
  </article>
1543
1591
  <article class="moat-card">
1544
1592
  <div class="n">evidence</div>
1545
1593
  <h3>See it before you approve. Prove it after.</h3>
1546
- <p>Before you approve, Oracle shows what you will receive, the expected cost, and which app gets permission to move your tokens. Afterward, it shows whether the transaction succeeded, what changed in your wallet, and whether any permission is still active. You can review unsigned transactions on a hardware wallet. Nothing is marked complete without proof.</p>
1594
+ <p>Before you approve: what you receive, the expected cost, and which app gets permission. After: whether it succeeded, what changed, and whether any permission is still active. Exact tax-lot records and observe-only finality reconciliation keep the ledger honest. Review unsigned transactions on a hardware wallet.</p>
1547
1595
  </article>
1548
1596
  <article class="moat-card">
1549
1597
  <div class="n">fail closed</div>
1550
1598
  <h3>Unconfigured means refused</h3>
1551
- <p>A fresh install signs nothing. Destination allowlists stop silent router drift, and every lane refuses while its allowlists are empty, so new contracts stay blocked until you add them.</p>
1599
+ <p>A fresh install signs nothing. Destination allowlists stop silent router drift; empty allowlists refuse everything until you add entries. Tenant RBAC scopes who may prepare what; governance votes prepare unsigned.</p>
1552
1600
  </article>
1553
1601
  </div>
1554
1602
 
1555
1603
  <div class="selfcustody rv">
1556
1604
  <p class="section-label rv">Works in any harness</p>
1557
1605
  <h2 class="section-title rv" data-split>Ask in <em>your</em> agent.</h2>
1558
- <p class="section-lede rv">Oracle installs as an MCP server, so Claude, Codex, Cursor and the rest get Oracle skills, live swap cards, quotes, and prepare. Type the request the way you would say it. With <code>oracle signer</code> running on this machine they can also fill through the local signer same path as Telegram Allow. Keys stay here. You authorize.</p>
1606
+ <p class="section-lede rv">Oracle installs as an MCP server Claude, Codex, Cursor and the rest get Oracle skills, live swap cards, quotes, and prepare. With <code>oracle signer</code> armed, fills queue for your ack and clear through the local signer, same path as Telegram Allow. Keys stay here. You authorize.</p>
1559
1607
  <div class="agent-install rv">
1560
1608
  <span>Add Oracle to your agent:</span>
1561
1609
  <div class="install-cmds">
@@ -1614,7 +1662,7 @@ footer{margin-top:clamp(72px,12vh,120px);border-top:1px solid var(--line);paddin
1614
1662
  <noscript><p class="agent-ask">move 5k usdc into weth, cheapest route</p></noscript>
1615
1663
  </figure>
1616
1664
  </div>
1617
- <p class="agent-caption rv">Same tool from the terminal, the desktop app, any MCP client, or your agent on Telegram, Discord, WhatsApp and Signal. Buzz integration shipped. Hosted/keyless cannot hold keys. Self-host fill is MCP <code>signer_queue</code> then <code>signer_ack</code> on the local signer.</p>
1665
+ <p class="agent-caption rv">Same tool from the terminal, the desktop app, any MCP client, or your agent on Telegram, Discord, WhatsApp, Signal, Photon and Buzz. A multi-bot gateway runs role- and chain-scoped bots over an A2A bus, and Allow/Deny approval cards render natively on Telegram, Discord, WhatsApp and Photon. Hosted/keyless cannot hold keys; self-host fills through the local signer.</p>
1618
1666
  <div class="agent-icons rv" style="display:flex;flex-wrap:wrap;gap:10px;justify-content:center;margin-top:14px"><span style="display:inline-flex;align-items:center;gap:5px;padding:4px 10px;border:1px solid var(--line);border-radius:999px;font-family:var(--mono);font-size:10px;color:var(--cool);letter-spacing:.08em"><svg width="14" height="14" viewBox="0 0 24 24" fill="none"><path d="M12 2C6.48 2 2 6.48 2 12s4.48 10 10 10 10-4.48 10-10S17.52 2 12 2zm4.64 6.8c-.15 1.58-.8 5.42-1.13 7.19-.14.75-.42 1-.68 1.03-.58.05-1.02-.38-1.58-.75-.88-.58-1.38-.94-2.23-1.5-.99-.65-.35-1.01.22-1.59.15-.15 2.71-2.48 2.76-2.69.01-.03.01-.14-.07-.2-.08-.06-.19-.04-.27-.02-.12.03-1.96 1.25-5.54 3.66-.52.36-1 .53-1.42.52-.47-.01-1.37-.26-2.03-.48-.82-.27-1.47-.42-1.41-.87.03-.24.36-.49.99-.74 3.87-1.69 6.45-2.8 7.74-3.34 3.69-1.53 4.45-1.8 4.95-1.81.11 0 .36.03.52.17.14.12.18.28.2.4.02.11.04.37.01.56z" fill="#229ED9"/></svg>Telegram</span><span style="display:inline-flex;align-items:center;gap:5px;padding:4px 10px;border:1px solid var(--line);border-radius:999px;font-family:var(--mono);font-size:10px;color:var(--cool);letter-spacing:.08em"><svg width="14" height="14" viewBox="0 0 24 24" fill="none"><path d="M19.27 5.33C17.94 4.71 14.48 3.26 10.68 4.77a27.98 27.98 0 0 0-6.02 3.13c-.87.51-1.3.9-1.23 1.44.07.46.57.73 1.42 1.12l.33.15c.85.38 1.28.57 1.43 1.01.08.23.07.6-.08 1.1-.15.51-.5 1.15-1.02 2.02-.34.57-.5.85-.37.99.14.15.48.11 1.09-.26 1.76-1.07 3.18-1.93 4.23-2.59 3.22-2.06 5.08-2.82 5.55-2.28.18.21.06.84-.34 1.85-.39 1.01-1.05 2.32-1.51 3.13-.24.43-.37.64-.45.74-.11.14-.2.16-.3.15-.3-.03-.73-.45-1.41-1.3-.5-.62-.94-1.08-1.26-1.25-.64-.34-1.08-.13-1.14.26-.05.29.14.61.56 1.02.43.41 1.15 1.06 1.56 1.5.53.58.82.98.85 1.28.02.24-.04.47-.46.75-.42.27-.86.41-1.34.41-.41 0-.86-.1-1.35-.29-1.7-.68-3.25-1.94-4.64-3.79a18.7 18.7 0 0 1-3.13-5.08c-.38-.79-.16-1.31.41-1.63.47-.27 1.12-.22 1.96.14a10.26 10.26 0 0 1 3.74 2.28c.36.35.68.52.96.52.21 0 .44-.07.69-.22.37-.22.65-.6.86-1.13.21-.53.34-1.14.34-1.57 0-.5-.15-.88-.45-1.12-.52-.42-1.44-.52-2.76-.3-1.71.28-3.62 1.03-5.72 2.24l-.86.49a6.72 6.72 0 0 1-1.02.51c-.37.14-.64.17-.81.09-.18-.1-.24-.29-.2-.58.04-.3.16-.56.36-.76z" fill="#5865F2"/></svg>Discord</span><span style="display:inline-flex;align-items:center;gap:5px;padding:4px 10px;border:1px solid var(--line);border-radius:999px;font-family:var(--mono);font-size:10px;color:var(--cool);letter-spacing:.08em"><svg width="14" height="14" viewBox="0 0 24 24" fill="none"><path d="M17.472 14.382c-.297-.149-1.758-.867-2.03-.967-.273-.099-.471-.148-.67.15-.197.297-.767.966-.94 1.164-.173.199-.347.223-.644.075-.297-.15-1.255-.463-2.39-1.475-.883-.788-1.48-1.761-1.653-2.059-.173-.297-.018-.458.13-.606.134-.133.298-.347.446-.52.149-.174.198-.298.298-.497.099-.198.05-.371-.025-.52-.075-.149-.669-1.612-.916-2.207-.242-.579-.487-.5-.669-.51-.173-.008-.371-.01-.57-.01-.198 0-.52.074-.792.372-.272.297-1.04 1.016-1.04 2.479 0 1.462 1.065 2.875 1.213 3.074.149.198 2.096 3.2 5.077 4.487.709.306 1.262.489 1.694.625.712.227 1.36.195 1.871.118.571-.085 1.758-.719 2.006-1.413.248-.694.248-1.289.173-1.413-.074-.124-.272-.198-.57-.347m-5.421 7.403-.008-.005h.008l.005-.002h-.005V19.5c0-.248.009-.498.005-.746l.003-.003c.009 0 .018.001.027.002h-.02l-.011.008-.004.024zm-.006-.225h-.003l-.008.003.003.011.003-.005a.018.018 0 0 1 .005-.009zm-.004.17h.003l-.005-.002.002.001v.001zm.02-.003.003.003-.002-.002-.001-.001zM12 0C5.373 0 0 5.373 0 12s5.373 12 12 12 12-5.373 12-12S18.627 0 12 0z" fill="#25D366"/></svg>WhatsApp</span><span style="display:inline-flex;align-items:center;gap:5px;padding:4px 10px;border:1px solid var(--line);border-radius:999px;font-family:var(--mono);font-size:10px;color:var(--cool);letter-spacing:.08em"><svg width="14" height="14" viewBox="0 0 24 24" fill="none"><path d="M12 2C6.48 2 2 6.48 2 12s4.48 10 10 10 10-4.48 10-10S17.52 2 12 2zM7.64 15.52c-.38-.66-.6-1.41-.6-2.2 0-2.63 2.14-4.77 4.77-4.77 1.27 0 2.47.5 3.37 1.4.9.9 1.4 2.1 1.4 3.37 0 2.63-2.14 4.77-4.77 4.77-.79 0-1.54-.22-2.2-.6L7.5 18l.14-2.48z" fill="#3B82F6"/></svg>Signal</span><span style="display:inline-flex;align-items:center;gap:5px;padding:4px 10px;border:1px solid var(--line);border-radius:999px;font-family:var(--mono);font-size:10px;color:var(--cool);letter-spacing:.08em"><svg width="14" height="14" viewBox="0 0 24 24" fill="none"><path d="M12 2L2 7l10 5 10-5-10-5zM2 17l10 5 10-5M2 12l10 5 10-5" stroke="#7C4DFF" stroke-width="2" stroke-linecap="round" stroke-linejoin="round"/></svg>Buzz</span></div>
1619
1667
  <div class="venues rv">
1620
1668
  <div class="venues-head"><span>models // harnesses</span><span><b>bring your own model</b> · oracle is the control plane</span></div>
@@ -1626,19 +1674,19 @@ footer{margin-top:clamp(72px,12vh,120px);border-top:1px solid var(--line);paddin
1626
1674
  <div class="selfcustody-grid">
1627
1675
  <div>
1628
1676
  <h4>Everything runs on your machine</h4>
1629
- <p>The CLI and the desktop app are the whole product. There is no Oracle account, no hosted wallet, and no server that brokers your trades. Reads go straight from your machine to public RPCs and venue APIs.</p>
1677
+ <p>The CLI and the desktop app are the whole product. No Oracle account, no hosted wallet, no broker server. Reads go straight to public RPCs and venue APIs.</p>
1630
1678
  </div>
1631
1679
  <div>
1632
1680
  <h4>Hosted keys never reach Oracle</h4>
1633
- <p>Hosted/keyless Oracle has no hosted wallet and no cloud key. A self-host setup keeps the user's key in an encrypted local vault and executes through a short-lived loopback signer. Public modules still cannot import private Administrator house-signer code; a boundary test fails the build if they do.</p>
1681
+ <p>Hosted/keyless Oracle holds no cloud key. Self-host keeps your key in an encrypted local vault behind a short-lived loopback signer. Public modules cannot import house-signer code a boundary test fails the build if they do.</p>
1634
1682
  </div>
1635
1683
  <div>
1636
1684
  <h4>Hosted wallets sign outside Oracle</h4>
1637
- <p>Hosted/keyless Oracle prepares an artifact for your browser extension or hardware wallet. Self-host Oracle can execute supported artifacts through the loopback signer under sealed local policy. If you close the prompt, nothing happened.</p>
1685
+ <p>Hosted/keyless Oracle prepares an artifact for your extension or hardware wallet; self-host executes through the loopback signer under sealed local policy. If you close the prompt, nothing happened.</p>
1638
1686
  </div>
1639
1687
  <div>
1640
1688
  <h4>Nothing to seize, nothing to leak</h4>
1641
- <p>No custody means no honeypot. There is no server holding user keys to breach, no operator who can freeze you, and no counterparty risk from Oracle itself. Delete the app and your funds never moved.</p>
1689
+ <p>No custody means no honeypot. No server of user keys to breach, no operator who can freeze you, no counterparty risk from Oracle itself. Delete the app and your funds never moved.</p>
1642
1690
  </div>
1643
1691
  </div>
1644
1692
  </div>
@@ -1690,7 +1738,7 @@ footer{margin-top:clamp(72px,12vh,120px);border-top:1px solid var(--line);paddin
1690
1738
  <div class="strategy-kicker">Agentic strategies</div>
1691
1739
  <h3 id="strategies-title">Move liquidity. Bound the risk.</h3>
1692
1740
  </div>
1693
- <p>Oracle reads the position, models the route and costs, then prepares only the steps the selected lane can actually support.</p>
1741
+ <p>Oracle reads live markets, checks policy, and prepares unsigned actions. The cards below are the main shipped surfaces, not a roadmap.</p>
1694
1742
  </div>
1695
1743
  <figure class="route-proof rv">
1696
1744
  <video id="route-session" width="868" height="456"
@@ -1751,75 +1799,94 @@ footer{margin-top:clamp(72px,12vh,120px);border-top:1px solid var(--line);paddin
1751
1799
 
1752
1800
  <div class="strategy-grid">
1753
1801
  <article class="strategy-card">
1754
- <div class="mode">read · model · prepare</div>
1755
- <h4>LP rebalancing</h4>
1756
- <p>Read concentrated-liquidity positions, model new ranges and fee drag, then prepare collect, swap and redeploy steps on supported venues. You sign each step.</p>
1802
+ <div class="mode">quote · route · prepare</div>
1803
+ <h4>Route engine</h4>
1804
+ <p>Price swaps across Paraswap, Cow, Uniswap, LI.FI and more. Oracle ranks net cost and returns unsigned steps.</p>
1805
+ </article>
1806
+ <article class="strategy-card">
1807
+ <div class="mode">bridge · revoke · sign</div>
1808
+ <h4>Cross-chain bridges</h4>
1809
+ <p>deBridge, ChangeNOW, LI.FI, Squid, Stargate, THORChain, Bungee, Connext, Wormhole and Across, with approval checks first.</p>
1757
1810
  </article>
1758
1811
  <article class="strategy-card">
1759
- <div class="mode">monitor · shadow · simulate</div>
1760
- <h4>MEV</h4>
1761
- <p>Monitor cross-venue divergence and simulate net edge after gas, slippage and lender costs. Public mode is shadow analysis, not autonomous execution.</p>
1812
+ <div class="mode">perps · funding · hedge</div>
1813
+ <h4>Perps and funding</h4>
1814
+ <p>Hyperliquid, GMX, dYdX, Drift and Vertex. Funding, books, positions and unsigned order prep in one lane.</p>
1762
1815
  </article>
1763
1816
  <article class="strategy-card">
1764
- <div class="mode">simulate · policy-check</div>
1765
- <h4>Flash loans</h4>
1766
- <p>Build bounded atomic loan routes and test premium, calldata, gas and minimum-profit gates. Public live execution remains disabled.</p>
1817
+ <div class="mode">LP · vault · stake</div>
1818
+ <h4>LP and yield</h4>
1819
+ <p>Read positions, compare vaults, model fees and lockups, then prepare deposits, exits or range changes.</p>
1767
1820
  </article>
1768
1821
  <article class="strategy-card">
1769
- <div class="mode">read · quote · prepare</div>
1770
- <h4>Staking</h4>
1771
- <p>Compare validators, staking vaults, rewards and unlock periods, then prepare supported stake, withdraw and delegate actions for your signature.</p>
1822
+ <div class="mode">farm · hedge · exit</div>
1823
+ <h4>Farming playbooks</h4>
1824
+ <p>Stable loops, collateral-plus-perp hedges and LP incentives, each with exposure, monitor and exit rules.</p>
1772
1825
  </article>
1773
1826
  <article class="strategy-card">
1774
- <div class="mode">discover · compare · prepare</div>
1775
- <h4>Yield</h4>
1776
- <p>Rank staking, vault and LP opportunities by net APY after fees, liquidity, lockups and smart-contract risk, then prepare supported deposits or migrations for your signature.</p>
1827
+ <div class="mode">split · limit · dca</div>
1828
+ <h4>TWAP and limit orders</h4>
1829
+ <p>Split buys or sells into child orders, cap participation, or stage limit/DCA plans from live depth.</p>
1777
1830
  </article>
1778
1831
  <article class="strategy-card">
1779
- <div class="mode">model · hedge · prepare</div>
1780
- <h4>Farming methods</h4>
1781
- <p>Six delta-aware playbooks, from stablecoin loops to collateral-plus-perp hedges and LP incentive hedges. Each one carries explicit exposure, hedge, monitoring and exit rules rather than a bare APR.</p>
1832
+ <div class="mode">portfolio · history · pnl</div>
1833
+ <h4>Portfolio memory</h4>
1834
+ <p>Wallet balances, NFTs, known value, historical snapshots and typed workspace records persist locally.</p>
1782
1835
  </article>
1783
1836
  <article class="strategy-card">
1784
- <div class="mode">hedge · fund · rebalance</div>
1785
- <h4>Delta neutral</h4>
1786
- <p>Pair a spot or LP leg against a short perp so the position earns funding and fees without directional exposure. Oracle reads both legs, models funding, borrow and rebalance drag, then prepares each leg for your signature.</p>
1837
+ <div class="mode">scan · approve · revoke</div>
1838
+ <h4>Approval safety</h4>
1839
+ <p>Find risky allowances, bind exact approval digests, and prepare revokes without treating a scoped scan as full safety.</p>
1787
1840
  </article>
1788
1841
  <article class="strategy-card">
1789
- <div class="mode">split · schedule · prepare</div>
1790
- <h4>TWAP accumulate &amp; distribute</h4>
1791
- <p>Buy or sell over time instead of in one print. Oracle splits the notional into scheduled child orders, prices each against live venue depth, and prepares them individually so a single fill never moves the market against you. Same engine for distribution — size each tranche, cap participation, keep every child order unsigned.</p>
1842
+ <div class="mode">source · flag · gate</div>
1843
+ <h4>Contract risk</h4>
1844
+ <p>Heuristic source checks flag access control, reentrancy shape, unlimited approvals, oracle risk and replay hazards.</p>
1792
1845
  </article>
1793
1846
  <article class="strategy-card">
1794
- <div class="mode">route · revoke · bridge</div>
1795
- <h4>deBridge · ChangeNOW · LI.FI · revoke.cash</h4>
1796
- <p>Bridge and cross-chain integration with deBridge, ChangeNOW, LI.FI, Squid, Stargate, THORChain, Bungee, Connext, Wormhole, and Across. Every route checks revoke.cash before execution — Oracle prepares the unsigned tx, you sign.</p>
1847
+ <div class="mode">snipe · nft · ordinals</div>
1848
+ <h4>Token and NFT radar</h4>
1849
+ <p>EVM token sniper, OpenSea, Magic Eden, Solana NFTs, Bitcoin ordinals and runes feed prepare-only plans.</p>
1797
1850
  </article>
1798
1851
  <article class="strategy-card">
1799
- <div class="mode">discover · score · rank</div>
1800
- <h4>Live farm discovery</h4>
1801
- <p>Scan live pools across chains and score each candidate on net APR after estimated borrow, funding and gas, minus a risk haircut for thin TVL. Ranked candidates feed straight into a prepare plan.</p>
1852
+ <div class="mode">events · clob · outcomes</div>
1853
+ <h4>Polymarket and outcomes</h4>
1854
+ <p>Polymarket CLOB, Kalshi data and Hyperliquid HIP-4 outcomes share one event-market research lane.</p>
1802
1855
  </article>
1803
1856
  <article class="strategy-card">
1804
- <div class="mode">alert · shadow · notify</div>
1805
- <h4>Custom alerts + shadow trading</h4>
1806
- <p>Follow favorite chains, wallets, funds and deployer addresses, then get notified when one opens, rotates or exits. Run the playbook in shadow mode against live prices before you arm it for live execution.</p>
1857
+ <div class="mode">budget · pay · cap</div>
1858
+ <h4>x402 budgets</h4>
1859
+ <p>Decode payment requests and prepare exact capped spend. No signature, header or facilitator call is created by default.</p>
1807
1860
  </article>
1808
1861
  <article class="strategy-card">
1809
- <div class="mode">shadow · simulate · execute</div>
1810
- <h4>Paper-trade until you go live</h4>
1811
- <p>Simulate every strategy against live venue data without committing capital. Track P&L, slippage, and fill quality in shadow mode then arm it with one flag when you're ready. No gas, no exposure, no regret trades.</p>
1862
+ <div class="mode">mcp · plugins · tools</div>
1863
+ <h4>Agent harnesses</h4>
1864
+ <p>Claude, Codex, Cursor, ChatGPT and VS Code get the same Oracle tools through MCP and plugin installs.</p>
1865
+ </article>
1866
+ <article class="strategy-card">
1867
+ <div class="mode">xurl · vision · fence</div>
1868
+ <h4>Fenced web tools</h4>
1869
+ <p>xurl, vision and web helpers run through explicit allowlists. The public tool policy still has no shell tool.</p>
1870
+ </article>
1871
+ <article class="strategy-card">
1872
+ <div class="mode">session · rename · fanout</div>
1873
+ <h4>Saved sessions</h4>
1874
+ <p>New chats are remembered, older chats resume from the picker, and selected sessions can rename, delete or fan out.</p>
1875
+ </article>
1876
+ <article class="strategy-card">
1877
+ <div class="mode">chat · approve · notify</div>
1878
+ <h4>Chat approvals</h4>
1879
+ <p>Telegram, Discord, WhatsApp, Photon and Buzz receive scoped prompts, alerts and Allow/Deny approval cards.</p>
1812
1880
  </article>
1813
-
1814
1881
  </div>
1815
- <div class="strategy-posture"><b>Public posture:</b> research, simulation and unsigned preparation. MEV and flash-loan broadcast stays off; supported staking, LP, yield and farming actions require the user wallet to sign. Farm discovery reads live third-party yield data. Custom alerts and shadow loops notify or simulate first; live execution still requires arming and a user signature.</div>
1882
+ <div class="strategy-posture"><b>Public posture:</b> read, simulate, alert and prepare unsigned actions. Anything that moves value still needs explicit arming, local signer approval and your wallet signature.</div>
1816
1883
 
1817
1884
  </div>
1818
1885
 
1819
1886
  <section class="section" id="chains">
1820
1887
  <p class="section-label rv">Chains</p>
1821
1888
  <h2 class="section-title rv">Where you can <em>operate.</em></h2>
1822
- <p class="section-lede rv">Every built-in EVM chain exposes the full scanner capability set. <b>Route</b> means Oracle can price and prepare a swap there. Any additional EVM chain can be registered with a chain id and an RPC; unsupported paths fail closed rather than guessing a router.</p>
1889
+ <p class="section-lede rv">Every built-in EVM chain exposes the full scanner set. <b>Route</b> means Oracle can price and prepare a swap there. Register any extra EVM chain with a chain id and an RPC; unsupported paths fail closed.</p>
1823
1890
  <div class="chain-grid" id="chain-grid"></div>
1824
1891
  <div class="hl-surface rv">
1825
1892
  <div class="venues-head"><span>hyperliquid // what oracle actually does</span></div>
@@ -1839,28 +1906,34 @@ footer{margin-top:clamp(72px,12vh,120px);border-top:1px solid var(--line);paddin
1839
1906
  <div class="cli-install rv">
1840
1907
  <div class="cli-install-cmd"><code>curl -fsSL https://oracle.demi.la/install.sh | bash</code> <span class="cli-install-hint">then oracle setup model && oracle chat</span></div>
1841
1908
  </div>
1842
- <p class="section-lede rv">The real Oracle shell, isolated from desktop chrome. No accounts, no servers. The CLI runs on your machine and reads straight from public RPCs.</p>
1843
- <p class="section-lede rv">Pin the active surface with <code style="color:var(--blue2)">/chain hyperliquid</code>, switch models, ask naturally. Oracle reads, prices, and prepares — you sign.</p>
1909
+ <p class="section-lede rv">The real Oracle shell, isolated from desktop chrome. No accounts, no servers it runs on your machine and reads straight from public RPCs. Session start greets you, file writes need explicit approval, and there is no shell tool at all.</p>
1910
+ <p class="section-lede rv">Pin the active surface with <code style="color:var(--blue2)">/chain hyperliquid</code>, pick any model with <code style="color:var(--blue2)">/model</code> — Qwen and GLM included — switch sessions in place, ask naturally. A guided setup wizard takes a fresh install to first quote. Oracle reads, prices, and prepares — you sign.</p>
1844
1911
  <div class="convert-grid rv">
1845
1912
  <div>
1846
1913
  <figure class="cli-frame cli-proof">
1847
- <img id="cli-still" src="assets/cli-chain-hyperliquid.jpg?v=cli-visible" alt="Oracle CLI selecting Hyperliquid with the /chain hyperliquid command, showing the active surface: chain, chain id, agent, HyperCore and HyperEVM" width="1600" height="900" loading="eager" fetchpriority="high" />
1914
+ <picture>
1915
+ <source srcset="assets/oracle-cli-v035.gif?v=20260824j" type="image/gif" media="(prefers-reduced-motion: no-preference)">
1916
+ <img id="cli-still" src="assets/oracle-cli-v035-poster.jpg?v=20260824j" alt="Oracle CLI TUI v0.35.2 boot screen with Jupiter orb, starfield, Hyperliquid, and ←/→ sessions" width="1600" height="829" loading="eager" fetchpriority="high" />
1917
+ </picture>
1848
1918
  </figure>
1849
1919
  <p class="cli-cap">actual oracle shell</p>
1850
1920
  </div>
1851
1921
  <div class="convert-copy">
1852
- <p>The active chain follows each read, quote, prepare, and bounded execution path.</p>
1922
+ <p>The active chain follows each read, quote, prepare, and bounded execution path. <code style="color:var(--blue2)">oracle doctor</code> checks the read plane before you trade, <code style="color:var(--blue2)">oracle equities</code> opens the HIP-3, Arcus, Robinhood Chain and Solana equities crossbook, and <code style="color:var(--blue2)">oracle plugins</code> installs Agent Plugins into any harness.</p>
1853
1923
  <div class="convert-pills">
1854
1924
  <span>HyperCore + HyperEVM</span>
1855
1925
  <span>multichain routing</span>
1856
1926
  <span>self-custody</span>
1927
+ <span>equities crossbook</span>
1928
+ <span>agent plugins</span>
1929
+ <span>read-plane doctor</span>
1857
1930
  </div>
1858
1931
  <h2 class="section-title app-shot-title">Oracle Desktop App <sup style="font-size:14px;color:var(--blue);font-weight:400">beta</sup></h2>
1859
1932
  <figure class="app-shot">
1860
1933
  <img src="assets/desktop-app.jpg" width="1736" height="959" loading="lazy" decoding="async" alt="Oracle desktop app showing the specialist mesh, with Portfolio, Approvals, Prepare, CLI, Farming Methods, Agent Connect, Receipts, Campaigns and Routes panes.">
1861
1934
  <figcaption>Portfolio, approvals, prepare, farming, receipts and routes in one pane.</figcaption>
1862
1935
  </figure>
1863
- <div class="os-dl"><a class="os-link" href="/downloads/artifacts/Oracle-0.4.10-arm64.dmg">macOS</a><a class="os-link" href="/downloads/artifacts/Oracle-0.4.10.AppImage">Linux</a><a class="os-link" href="/downloads/artifacts/Oracle-Setup-0.4.10.exe">Windows</a></div>
1936
+ <p class="platform-beta"><b>Private beta</b> Desktop builds are in private beta while we finish the app. Public downloads return when it ships. The CLI above is the full product today.</p>
1864
1937
  </div>
1865
1938
  </div>
1866
1939
  </section>
@@ -1868,7 +1941,7 @@ footer{margin-top:clamp(72px,12vh,120px);border-top:1px solid var(--line);paddin
1868
1941
  <section class="section" id="fees">
1869
1942
  <p class="section-label rv">Fees</p>
1870
1943
  <h2 class="section-title rv">5 bps. <em>Holders zero.</em></h2>
1871
- <p class="section-lede rv">Oracle charges 5 basis points (0.05%) on swaps it routes. Eligible Hyperliquid orders can separately include a 1–2 bps builder fee after wallet approval. Both are shown before you sign.</p>
1944
+ <p class="section-lede rv">5 basis points (0.05%) on swaps Oracle routes. Eligible Hyperliquid orders can add a 1–2 bps builder fee after wallet approval. Both show before you sign.</p>
1872
1945
  <div class="moat-grid rv" style="margin-top:28px">
1873
1946
  <article class="moat-card">
1874
1947
  <div class="n">swap fee</div>
@@ -2319,17 +2392,44 @@ var activeLenis = null;
2319
2392
 
2320
2393
  var progress = document.getElementById("progress");
2321
2394
  var ticking = false;
2395
+ var lastScrollY = window.scrollY || 0;
2396
+ function clamp(n, min, max) { return Math.max(min, Math.min(max, n)); }
2322
2397
  function onScroll() {
2323
2398
  if (ticking) return;
2324
2399
  ticking = true;
2325
2400
  requestAnimationFrame(function () {
2326
2401
  var h = document.scrollingElement || document.documentElement;
2327
- var max = h.scrollHeight - h.clientHeight;
2328
- progress.style.transform = "scaleX(" + (max > 0 ? h.scrollTop / max : 0) + ")";
2402
+ var max = Math.max(1, h.scrollHeight - h.clientHeight);
2403
+ var y = h.scrollTop || window.scrollY || 0;
2404
+ var p = clamp(y / max, 0, 1);
2405
+ var velocity = clamp(y - lastScrollY, -90, 90);
2406
+ lastScrollY = y;
2407
+ progress.style.transform = "scaleX(" + p.toFixed(4) + ")";
2408
+ document.documentElement.style.setProperty("--scroll-pct", (p * 100).toFixed(2) + "%");
2409
+ document.documentElement.style.setProperty("--scroll-shift", (p * 170).toFixed(2) + "px");
2410
+ document.documentElement.style.setProperty("--scroll-shift-neg", (p * -170).toFixed(2) + "px");
2411
+ document.documentElement.style.setProperty("--scroll-shift-soft", (p * -119).toFixed(2) + "px");
2412
+ document.documentElement.style.setProperty("--scroll-drift", (velocity * .36).toFixed(2) + "px");
2413
+ document.documentElement.style.setProperty("--scroll-rot", (p * 620).toFixed(2) + "deg");
2414
+ document.documentElement.style.setProperty("--scroll-rot-neg", (p * -620).toFixed(2) + "deg");
2415
+ document.documentElement.style.setProperty("--scroll-zoom", (.94 + p * .16).toFixed(3));
2416
+ if (sceneSections.length) pickScene();
2329
2417
  ticking = false;
2330
2418
  });
2331
2419
  }
2332
2420
  window.addEventListener("scroll", onScroll, { passive: true });
2421
+
2422
+ var sceneSections = Array.prototype.slice.call(document.querySelectorAll("section[id]"));
2423
+ function activateScene(id) {
2424
+ document.body.dataset.scene = id || "home";
2425
+ sceneSections.forEach(function (section) { section.classList.toggle("is-scene", section.id === id); });
2426
+ }
2427
+ function pickScene(){
2428
+ var mark=innerHeight*.46,best="home",bestDist=1e9;
2429
+ sceneSections.forEach(function(section){var r=section.getBoundingClientRect();if(r.bottom<80||r.top>innerHeight-80)return;var d=Math.abs(r.top+r.height*.42-mark);if(d<bestDist){bestDist=d;best=section.id;}});
2430
+ activateScene(best);
2431
+ }
2432
+ pickScene();
2333
2433
  onScroll();
2334
2434
 
2335
2435
  var heroOrb = document.getElementById("hero-orb");
@@ -2400,9 +2500,14 @@ var activeLenis = null;
2400
2500
  if (window.ScrollTrigger) {
2401
2501
  gsap.fromTo("[data-split] .word-mask > span", { yPercent:112, rotate:2 }, { yPercent:0, rotate:0, duration:1.1, ease:"power4.out", stagger:.035, scrollTrigger:{ trigger:"[data-split]", start:"top 78%" }, clearProps:"transform" });
2402
2502
  gsap.to(".hero-art", { yPercent:18, scale:.9, ease:"none", scrollTrigger:{ trigger:".home", start:"top top", end:"bottom top", scrub:true } });
2503
+ gsap.fromTo(".hero-installer", { y:24, rotateX:2, filter:"brightness(.92)" }, { y:0, rotateX:0, filter:"brightness(1)", duration:1.1, ease:"power4.out", scrollTrigger:{ trigger:".hero-installer", start:"top 88%" }, clearProps:"transform,filter" });
2403
2504
  gsap.fromTo(".motion-card", { y:80, rotateX:8, scale:.965 }, { y:0, rotateX:0, scale:1, duration:1.25, ease:"power4.out", stagger:.08, scrollTrigger:{ trigger:".operator-grid", start:"top 82%" }, clearProps:"transform" });
2404
- gsap.to(".motion-command", { y:-34, rotateX:3, ease:"none", scrollTrigger:{ trigger:".motion-lab", start:"top 70%", end:"bottom top", scrub:true } });
2405
- gsap.to(".mega-oracle", { xPercent:-8, ease:"none", scrollTrigger:{ trigger:".mega-oracle", start:"top bottom", end:"bottom top", scrub:true } });
2505
+ gsap.to(".motion-command", { y:-54, rotateX:4, rotateY:-5, ease:"none", scrollTrigger:{ trigger:".motion-lab", start:"top 76%", end:"bottom top", scrub:true } });
2506
+ gsap.fromTo(".chain", { y:42, rotateX:6, opacity:.55 }, { y:0, rotateX:0, opacity:1, duration:.9, ease:"power3.out", stagger:.035, scrollTrigger:{ trigger:"#chains", start:"top 76%" }, clearProps:"transform,opacity" });
2507
+ gsap.fromTo(".strategy-card", { y:46, rotateX:7, opacity:.58 }, { y:0, rotateX:0, opacity:1, duration:1.05, ease:"power3.out", stagger:.025, scrollTrigger:{ trigger:".strategy-grid", start:"top 78%" }, clearProps:"transform,opacity" });
2508
+ gsap.fromTo(".cli-proof", { scale:.94, rotateX:3, y:40 }, { scale:1, rotateX:0, y:0, ease:"none", scrollTrigger:{ trigger:".cli-proof", start:"top 86%", end:"bottom 38%", scrub:1 }, clearProps:"transform" });
2509
+ gsap.to(".route-tree", { scale:1.018, ease:"none", transformOrigin:"50% 50%", scrollTrigger:{ trigger:".route-tree", start:"top 82%", end:"bottom 40%", scrub:1 } });
2510
+ gsap.to(".mega-oracle", { xPercent:-14, letterSpacing:".02em", ease:"none", scrollTrigger:{ trigger:".mega-oracle", start:"top bottom", end:"bottom top", scrub:true } });
2406
2511
  }
2407
2512
  document.documentElement.classList.add("premium-motion");
2408
2513
  }
@@ -2676,46 +2781,5 @@ var activeLenis = null;
2676
2781
  }
2677
2782
  })();
2678
2783
  </script>
2679
- <script>
2680
- // Scroll-triggered reveal animations
2681
- (function(){
2682
- var observer = new IntersectionObserver(function(entries) {
2683
- entries.forEach(function(e) {
2684
- if (e.isIntersecting) {
2685
- e.target.classList.add('revealed');
2686
- observer.unobserve(e.target);
2687
- }
2688
- });
2689
- }, { threshold: 0.15, rootMargin: '0px 0px -40px 0px' });
2690
-
2691
- // Animate: section titles, agent panels, strategy cards, profile cards, proto-cards, bridge demo
2692
- var targets = document.querySelectorAll('.rv, .agent-panel, .strategy-card, .proto-card, .bridge-demo, .strategy-head, .strategy-grid article');
2693
- for (var i = 0; i < targets.length; i++) {
2694
- targets[i].style.opacity = '0';
2695
- targets[i].style.transform = 'translateY(24px)';
2696
- targets[i].style.transition = 'opacity .6s var(--ease), transform .6s var(--ease)';
2697
- observer.observe(targets[i]);
2698
- }
2699
-
2700
- // CSS class applied on scroll
2701
- var style = document.createElement('style');
2702
- style.textContent =
2703
- '.revealed { opacity: 1 !important; transform: translateY(0) !important; }' +
2704
- '.strategy-card:nth-child(1) { transition-delay: 0s !important; }' +
2705
- '.strategy-card:nth-child(2) { transition-delay: .1s !important; }' +
2706
- '.strategy-card:nth-child(3) { transition-delay: .15s !important; }' +
2707
- '.strategy-card:nth-child(4) { transition-delay: .2s !important; }' +
2708
- '.strategy-card:nth-child(5) { transition-delay: .25s !important; }' +
2709
- '.strategy-card:nth-child(6) { transition-delay: .3s !important; }' +
2710
- '.strategy-card:nth-child(7) { transition-delay: .35s !important; }' +
2711
- '.proto-card:nth-child(1) { transition-delay: 0s !important; }' +
2712
- '.proto-card:nth-child(2) { transition-delay: .06s !important; }' +
2713
- '.proto-card:nth-child(3) { transition-delay: .12s !important; }' +
2714
- '.proto-card:nth-child(4) { transition-delay: .18s !important; }' +
2715
- '.proto-card:nth-child(5) { transition-delay: .24s !important; }' +
2716
- '.proto-card:nth-child(6) { transition-delay: .3s !important; }';
2717
- document.head.appendChild(style);
2718
- })();
2719
- </script>
2720
2784
  </body>
2721
2785
  </html>