@oracle-agent/oracle 0.35.34 → 0.35.36

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 (64) hide show
  1. package/README.md +43 -8
  2. package/artifacts/specialist-packs/oracle-full-crypto.json +11 -0
  3. package/dist/address-book.mjs +2 -2
  4. package/dist/agent-sessions.mjs +8 -8
  5. package/dist/assets/profiles/canton-agent/SOUL.md +44 -0
  6. package/dist/assets/profiles/canton-agent/profile.json +30 -0
  7. package/dist/assets/profiles/oracle/SOUL.md +1 -0
  8. package/dist/assets/skills/oracle-canton/SKILL.md +49 -0
  9. package/dist/assets/skills/oracle-desk-product/SKILL.md +1 -1
  10. package/dist/bin/desk-server.mjs +35 -35
  11. package/dist/bin/oracle-data-mcp.mjs +17 -17
  12. package/dist/bin/oracle-gateway.mjs +14 -14
  13. package/dist/bin/oracle-launch-radar-shadow.mjs +4 -4
  14. package/dist/bin/oracle-mev-arb-shadow.mjs +4 -4
  15. package/dist/bin/oracle-mev-shadow.mjs +4 -4
  16. package/dist/bin/oracle-public-server.mjs +4 -4
  17. package/dist/bin/oracle-route.mjs +8 -8
  18. package/dist/bin/oracle-scan.mjs +10 -10
  19. package/dist/bin/oracle.mjs +8 -6
  20. package/dist/cli/commands/agent-session.mjs +10 -10
  21. package/dist/cli/commands/airdrop.mjs +16 -0
  22. package/dist/cli/commands/chain.mjs +1 -1
  23. package/dist/cli/commands/chat.mjs +215 -204
  24. package/dist/cli/commands/doctor.mjs +5 -5
  25. package/dist/cli/commands/eval.mjs +151 -141
  26. package/dist/cli/commands/extension-policy.mjs +3 -3
  27. package/dist/cli/commands/farm.mjs +22 -22
  28. package/dist/cli/commands/mint.mjs +22 -0
  29. package/dist/cli/commands/model.mjs +219 -208
  30. package/dist/cli/commands/plugins.mjs +42 -39
  31. package/dist/cli/commands/quickstart.mjs +6 -6
  32. package/dist/cli/commands/session-vault.mjs +1 -1
  33. package/dist/cli/commands/sign.mjs +12 -12
  34. package/dist/cli/commands/signer.mjs +25 -23
  35. package/dist/cli/commands/snipe.mjs +6 -6
  36. package/dist/cli/commands/swap.mjs +12 -12
  37. package/dist/cli/commands/venues.mjs +2 -2
  38. package/dist/control/receipt-lineage.mjs +1 -0
  39. package/dist/data/desk-data.mjs +33 -33
  40. package/dist/data/providers/farming.mjs +2 -2
  41. package/dist/data/providers/lp-destination-discovery.mjs +4 -4
  42. package/dist/index.mjs +50 -49
  43. package/dist/launch-radar/index.mjs +4 -4
  44. package/dist/local-signer/anvil-attestation-worker.mjs +1 -1
  45. package/dist/local-signer/index.mjs +3 -3
  46. package/dist/local-signer/runtime.mjs +22 -20
  47. package/dist/router/index.mjs +3 -3
  48. package/dist/router/prepare-bridge.mjs +1 -1
  49. package/dist/scanner/index.mjs +4 -4
  50. package/dist/task.mjs +2 -2
  51. package/dist/teams/index.mjs +3 -1
  52. package/dist/tui/standalone-client.mjs +85 -75
  53. package/package.json +3 -2
  54. package/public/eval-report.json +6 -6
  55. package/public/oracle-splash/assets/desktop-app.jpg +0 -0
  56. package/public/oracle-splash/assets/hero/agent-session-poster.jpg +0 -0
  57. package/public/oracle-splash/assets/hero/agent-session.mp4 +0 -0
  58. package/public/oracle-splash/assets/hero/agent-session.webm +0 -0
  59. package/public/oracle-splash/assets/oracle-cli-v03535-poster.jpg +0 -0
  60. package/public/oracle-splash/assets/oracle-cli-v03535.gif +0 -0
  61. package/public/oracle-splash/assets/protocol-build-time.jpg +0 -0
  62. package/public/oracle-splash/downloads/index.html +2 -2
  63. package/public/oracle-splash/index.html +132 -54
  64. package/server.json +2 -2
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@oracle-agent/oracle",
3
- "version": "0.35.34",
3
+ "version": "0.35.36",
4
4
  "description": "Oracle: standalone multichain agent control plane with an optional encrypted, loopback-only self-hosted signer.",
5
5
  "license": "BUSL-1.1",
6
6
  "type": "module",
@@ -89,6 +89,7 @@
89
89
  "./connect": "./dist/onboarding/harness-configs.mjs",
90
90
  "./finality": "./dist/control/finality.mjs",
91
91
  "./verified-receipts": "./dist/control/verified-receipts.mjs",
92
+ "./receipt-lineage": "./dist/control/receipt-lineage.mjs",
92
93
  "./receipts": "./dist/action-receipts.mjs",
93
94
  "./tax-lots": "./dist/tax-lots.mjs",
94
95
  "./position-health": "./dist/position-health.mjs",
@@ -121,7 +122,7 @@
121
122
  "@scure/bip39": "^1.6.0",
122
123
  "@scure/btc-signer": "2.3.0",
123
124
  "@solana/addresses": "^7.1.0",
124
- "@solana/transaction-messages": "7.1.1",
125
+ "@solana/transaction-messages": "8.0.0",
125
126
  "ethers": "^6.16.0",
126
127
  "sharp": "^0.35.3",
127
128
  "sql.js": "^1.14.2",
@@ -1,14 +1,14 @@
1
1
  {
2
2
  "surface": "oracle-public-eval",
3
3
  "version": 1,
4
- "generatedAt": "2026-08-28T04:49:55.414782+00:00",
4
+ "generatedAt": "2026-08-30T11:08:57.894Z",
5
5
  "source": {
6
- "commit": "bcb69c03bf1ab4cd682fba1893174cdc6ac03a0e",
7
- "dirty": false,
6
+ "commit": "80c515a0482c79c38ed08d209e8c44d3b05debff",
7
+ "dirty": true,
8
8
  "node": "v26.7.0"
9
9
  },
10
10
  "package": "@oracle-agent/oracle",
11
- "packageVersion": "0.35.32",
11
+ "packageVersion": "0.35.36",
12
12
  "methodology": "Reproduce locally: npx @oracle-agent/oracle eval guards|adversarial|fidelity --json. Dated, commit-stamped output; no chain state or live keys involved. A report is evidence of the pinned commit only.",
13
13
  "suites": {
14
14
  "guards": {
@@ -20,7 +20,7 @@
20
20
  {
21
21
  "name": "version",
22
22
  "ok": true,
23
- "detail": "oracle 0.35.32"
23
+ "detail": "oracle 0.35.36"
24
24
  },
25
25
  {
26
26
  "name": "help-loads",
@@ -88,7 +88,7 @@
88
88
  "code": 0,
89
89
  "signal": null,
90
90
  "summary": "summary: 3/3 ok, 0 prepare-fail, 0 structural-fail, 0 sim-fail, 3 simulated",
91
- "tail": "prepare-fidelity eval taker=0x70997970... generated=2026-08-28T04:48:53.333Z\nid status artifact sim liq% notes\nethereum-weth-usdc ok unsigned-transactionnofund 100% execution reverted: STF\nbase-weth-usdc ok unsigned-transactionnofund 100% execution reverted: STF\narbitrum-weth-usdc ok unsigned-transactionnofund 100% execution reverted: STF\nsummary: 3/3 ok, 0 prepare-fail, 0 structural-fail, 0 sim-fail, 3 simulated\n\n"
91
+ "tail": "prepare-fidelity eval taker=0x70997970... generated=2026-08-30T11:09:07.599Z\nid status artifact sim liq% notes\nethereum-weth-usdc ok unsigned-transactionnofund 100% execution reverted: STF\nbase-weth-usdc ok unsigned-transactionnofund 100% execution reverted: STF\narbitrum-weth-usdc ok unsigned-transactionnofund 100% execution reverted: STF\nsummary: 3/3 ok, 0 prepare-fail, 0 structural-fail, 0 sim-fail, 3 simulated\n\n"
92
92
  }
93
93
  },
94
94
  "adversarialClassesCovered": [
@@ -27,9 +27,9 @@ section{padding-top:72px;scroll-margin-top:90px}.sub{color:var(--muted);line-hei
27
27
  <main class="wrap">
28
28
  <header><p class="eyebrow">Public release</p><h1>Install Oracle.<br><em>Hosted wallets sign outside Oracle.</em></h1><p class="lede">The CLI, desktop beta, source, research tools, and unsigned transaction preparation are public to everyone. No wallet connection or NFT is required to download or run Oracle.</p></header>
29
29
  <aside class="policy"><h2>Locals Only means 0% Oracle fees</h2><p>A Locals Only NFT waives the <b>Oracle integrator fee</b>. It does not unlock the product, waive provider or network costs, or change the hosted/keyless custody boundary. Self-host execution uses the local signer.</p></aside>
30
- <section id="cli"><p class="eyebrow">Oracle CLI</p><h2>Install with curl</h2><p class="sub">One line. Linux and macOS. Requires Node 20.19+ (the script checks and tells you how to get it). Installs into <code>~/.local</code> — no sudo, no global npm.</p><div class="install"><div class="cmd"><code id="cmd">curl -fsSL https://oracle.demi.la/install.sh | bash</code><button class="copy" id="copy" type="button">Copy</button></div><div class="meta"><span>curl install</span><span>hosted keyless</span><span>hosted wallet signs</span><span>user prefix</span></div></div><p class="sub" style="margin-top:18px">npm still works if you prefer: <code>npm i -g @oracle-agent/oracle</code></p></section>
30
+ <section id="cli"><p class="eyebrow">Oracle CLI</p><h2>Install with curl</h2><p class="sub">One line. Linux and macOS. Requires Node 20.19+ (the script checks and tells you how to get it). Installs into <code>~/.local</code> — no sudo, no global npm.</p><div class="install"><div class="cmd"><code id="cmd">curl -fL https://oracle.demi.la/install.sh | bash</code><button class="copy" id="copy" type="button">Copy</button></div><div class="meta"><span>curl install</span><span>hosted keyless</span><span>hosted wallet signs</span><span>user prefix</span></div></div><p class="sub" style="margin-top:18px">npm still works if you prefer: <code>npm i -g @oracle-agent/oracle</code></p></section>
31
31
  <section id="windows"><p class="eyebrow">Oracle CLI · Windows</p><h2>Install with PowerShell</h2><p class="sub">Same shape as Hermes: one line. Installs the CLI (<code>npm i -g @oracle-agent/oracle</code>). Never asks for a key or seed.</p><div class="install"><div class="cmd"><code id="cmd-win">iex (irm https://oracle.demi.la/install.ps1)</code><button class="copy" id="copy-win" type="button">Copy</button></div><div class="meta"><span>irm | iex</span><span>CLI only</span><span>no keys ever</span></div></div></section>
32
- <section id="desktop"><p class="eyebrow">Desktop beta</p><h2>Private beta</h2><p class="sub">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></section>
32
+ <section id="desktop"><p class="eyebrow">Desktop</p><h2>Linux, macOS, Windows</h2><p class="sub">Packaged <b>0.4.16</b>. Settings can Check for updates against this feed.</p><div class="artifacts"><div class="artifact"><div><h3>Linux</h3><small>AppImage · x64</small></div><div class="build">Oracle-0.4.16.AppImage</div><div class="hash">sha256 f90dd91613ef22af9bc724f631692cc4e7b2272ef073f724d77cea54bea7872a</div><a class="dl-btn" href="/downloads/artifacts/Oracle-0.4.16.AppImage">Download</a></div><div class="artifact"><div><h3>macOS</h3><small>DMG · arm64</small></div><div class="build">Oracle-0.4.16-arm64.dmg</div><div class="hash">sha256 613f1ecea2f224c55ec562a3deccfaf906ebe60739261cddd08e3fa076d408a7</div><a class="dl-btn" href="/downloads/artifacts/Oracle-0.4.16-arm64.dmg">Download</a></div><div class="artifact"><div><h3>Windows</h3><small>NSIS Setup · x64</small></div><div class="build">Oracle-Setup-0.4.16.exe</div><div class="hash">sha256 cb7c121580eb016f1f5f0a6587f6415861dcf3e6fe73bb08ce553abf5d83cadc</div><a class="dl-btn" href="/downloads/artifacts/Oracle-Setup-0.4.16.exe">Download</a></div></div><p class="platform-note"><a class="checksum" href="/downloads/SHA256SUMS.txt">SHA256SUMS.txt</a></p></section>
33
33
  </main>
34
34
  <footer><div class="nav-inner"><span>oracle · locals only labs</span><span>public / self-custody / local signer</span></div></footer>
35
35
  <script>
@@ -85,10 +85,10 @@
85
85
  --max:1100px;
86
86
  }
87
87
  *{box-sizing:border-box;margin:0;padding:0}
88
- html{scroll-behavior:smooth;-webkit-font-smoothing:antialiased;-moz-osx-font-smoothing:grayscale;text-rendering:optimizeLegibility;overflow-x:clip;max-width:100%}
88
+ html{scroll-behavior:smooth;-webkit-font-smoothing:antialiased;-moz-osx-font-smoothing:grayscale;text-rendering:optimizeLegibility;overflow-x:hidden;max-width:100%}
89
89
  body{
90
90
  min-height:100dvh;background:var(--bg);color:var(--ink);position:relative;isolation:isolate;
91
- font-family:var(--sans);font-weight:400;overflow-x:clip;max-width:100vw;
91
+ font-family:var(--sans);font-weight:400;overflow-x:hidden;max-width:100vw;
92
92
  }
93
93
  ::selection{background:var(--blue);color:#071018}
94
94
  a{color:inherit;text-decoration:none}
@@ -415,6 +415,11 @@ code{font-family:var(--mono)}
415
415
  .node.p-build:hover{border-color:#ff8c5a;box-shadow:0 12px 30px rgba(255,140,90,.14)}
416
416
  .route-card.p-build .where{color:#ffb089}
417
417
  .route-card.p-build{box-shadow:inset 3px 0 0 #ff8c5a}
418
+ .route-card.p-build .build-copy{display:grid;grid-template-columns:1fr;gap:16px;align-items:start}
419
+ .route-card.p-build .build-copy > div{display:flex;flex-direction:column;gap:10px;min-width:0}
420
+ .route-card.p-build .build-bench{margin:0;border:1px solid rgba(255,140,90,.22);border-radius:var(--r-md);overflow:hidden;background:#080d15;line-height:0}
421
+ .route-card.p-build .build-bench img{display:block;width:100%;height:auto;border-radius:0;object-fit:contain;background:transparent}
422
+ .route-card.p-build .build-bench figcaption{line-height:1.4;padding:10px 14px;border-top:1px solid rgba(255,140,90,.16);font-family:var(--mono);font-size:var(--fs-micro);letter-spacing:.14em;text-transform:uppercase;color:#ffb089}
418
423
  .node.p-stable .tag,.node.p-stable .name{color:#fcd34d}
419
424
  .node.p-stable .chains{color:#fcd34d}
420
425
  .node.p-stable:hover{border-color:var(--stable);box-shadow:0 12px 30px rgba(240,185,11,.12)}
@@ -455,6 +460,15 @@ code{font-family:var(--mono)}
455
460
 
456
461
  .selfcustody{margin-top:clamp(34px,5vw,58px);padding-top:clamp(28px,4vw,40px);border-top:1px solid var(--line)}
457
462
  .selfcustody h3{font-family:var(--display);font-weight:400;font-size:var(--fs-xl);line-height:1.12;margin-top:8px;max-width:24ch}
463
+ .teams-flow{display:flex;flex-wrap:wrap;align-items:stretch;gap:8px;margin-top:clamp(22px,3vw,32px)}
464
+ .teams-node{flex:1 1 128px;display:flex;flex-direction:column;gap:3px;padding:13px 14px;border:1px solid var(--line);border-radius:var(--r-md);background:rgba(17,25,37,.82)}
465
+ .teams-node b{font-size:.8rem;letter-spacing:-.01em}
466
+ .teams-node i{font-family:var(--font-mono,monospace);font-style:normal;font-size:.54rem;text-transform:uppercase;letter-spacing:.12em;opacity:.62}
467
+ .teams-node.is-terminal{border-color:color-mix(in srgb,var(--scene-a) 55%,var(--line))}
468
+ .teams-arrow{display:flex;align-items:center;opacity:.4;font-size:.85rem}
469
+ .teams-templates{margin-top:18px;padding-bottom:clamp(12px,2vw,20px);line-height:1.7}
470
+ .section-label.teams-next{margin-top:clamp(46px,6vw,78px)}
471
+ @media (max-width:860px){.teams-flow{flex-direction:column}.teams-arrow{transform:rotate(90deg);justify-content:center;padding:1px 0}}
458
472
  .selfcustody-grid{display:grid;grid-template-columns:repeat(2,minmax(0,1fr));gap:clamp(18px,2.6vw,30px);margin-top:clamp(22px,3vw,32px)}
459
473
  .selfcustody-grid h4{font-family:var(--mono);font-size:var(--fs-micro);letter-spacing:.14em;text-transform:uppercase;color:var(--blue2);font-weight:500;margin-bottom:8px}
460
474
  .selfcustody-grid p{color:var(--cool);font-size:var(--fs-base);line-height:1.65;max-width:52ch}
@@ -510,15 +524,15 @@ code{font-family:var(--mono)}
510
524
  @media (max-width:620px){.strategy-grid{grid-template-columns:1fr}.strategy-card{min-height:0}}
511
525
 
512
526
  /* actual Oracle CLI */
513
- .convert-grid{display:grid;grid-template-columns:1fr;gap:clamp(18px,3vw,28px);align-items:stretch;margin-top:8px}
514
- .convert-copy{display:flex;flex-direction:column;gap:14px;text-align:left;max-width:780px}
527
+ .convert-grid{display:grid;grid-template-columns:minmax(0,1.15fr) minmax(220px,.85fr);gap:clamp(22px,3.2vw,40px);align-items:start;margin-top:clamp(20px,3vw,32px)}
528
+ .convert-copy{display:flex;flex-direction:column;gap:16px;text-align:left;min-width:0}
515
529
  .convert-copy h3{font-family:var(--display);font-weight:400;font-size:var(--fs-xl);line-height:1.1}
516
- .convert-copy p{color:var(--cool);font-size:var(--fs-base);line-height:1.65;max-width:54ch}
530
+ .convert-copy p{color:var(--cool);font-size:var(--fs-base);line-height:1.65}
517
531
  .convert-pills{display:flex;flex-wrap:wrap;gap:8px;margin-top:4px}
518
532
  .convert-pills span{font-family:var(--mono);font-size:var(--fs-micro);letter-spacing:.14em;text-transform:uppercase;border:1px solid rgba(124,196,255,.28);border-radius:999px;padding:8px 12px;color:var(--blue2)}
519
533
  .platform-beta{display:block;max-width:56ch;font-family:var(--sans);font-size:var(--fs-sm);line-height:1.7;letter-spacing:0;color:var(--mute)}
520
534
  .platform-beta b{float:left;margin:3px 10px 0 0;font-family:var(--mono);font-size:var(--fs-micro);letter-spacing:.16em;text-transform:uppercase;color:#071018;background:var(--blue2);border-radius:var(--r-pill);padding:4px 9px}
521
- .app-shot-title{margin-top:clamp(34px,4.5vw,56px)}
535
+ .app-shot-title{margin-top:clamp(48px,6vw,80px)}
522
536
  .app-shot{margin-top:clamp(20px,2.6vw,30px);display:flex;flex-direction:column;gap:10px}
523
537
  .app-shot{margin-top:12px}
524
538
  .app-shot + .platform-beta{margin-top:14px}
@@ -1138,6 +1152,8 @@ footer{margin-top:clamp(72px,12vh,120px);border-top:1px solid var(--line);paddin
1138
1152
  .nav-chip{display:none}
1139
1153
  .nav-links .hide-sm{display:none}
1140
1154
  .route-strip{grid-template-columns:1fr}
1155
+ .route-card.p-build .build-copy{grid-template-columns:1fr}
1156
+ .convert-grid{grid-template-columns:1fr}
1141
1157
  .chain-grid{grid-template-columns:repeat(2,minmax(0,1fr))}
1142
1158
  .row.profiles{grid-template-columns:repeat(2,minmax(0,1fr))}
1143
1159
  }
@@ -1222,13 +1238,6 @@ footer{margin-top:clamp(72px,12vh,120px);border-top:1px solid var(--line);paddin
1222
1238
  <div class="craft-orbit is-a"></div>
1223
1239
  <div class="craft-orbit is-b"></div>
1224
1240
  </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>
1232
1241
 
1233
1242
  <div class="loader out" id="loader" aria-hidden="true" style="display:none">
1234
1243
  <div class="loader-inner">
@@ -1310,8 +1319,8 @@ footer{margin-top:clamp(72px,12vh,120px);border-top:1px solid var(--line);paddin
1310
1319
  <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>
1311
1320
  </div>
1312
1321
  <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">
1314
- <code>curl -fsSL https://oracle.demi.la/install.sh | bash</code><span class="hero-install-copy">Copy</span>
1322
+ <button class="hero-install-command" type="button" data-copy-install="curl -fL https://oracle.demi.la/install.sh | bash" aria-label="Copy the macOS or Linux install command">
1323
+ <code>curl -fL https://oracle.demi.la/install.sh | bash</code><span class="hero-install-copy">Copy</span>
1315
1324
  </button>
1316
1325
  <div class="hero-install-meta"><span>macOS + Linux · CLI</span></div>
1317
1326
  </div>
@@ -1321,13 +1330,18 @@ footer{margin-top:clamp(72px,12vh,120px);border-top:1px solid var(--line);paddin
1321
1330
  </button>
1322
1331
  <div class="hero-install-meta"><span>Windows · CLI</span></div>
1323
1332
  </div>
1333
+ <div class="os-dl">
1334
+ <a class="os-link" href="/downloads/artifacts/Oracle-0.4.16.AppImage">Linux AppImage</a>
1335
+ <a class="os-link" href="/downloads/artifacts/Oracle-0.4.16-arm64.dmg">macOS DMG</a>
1336
+ <a class="os-link" href="/downloads/artifacts/Oracle-Setup-0.4.16.exe">Windows Setup</a>
1337
+ </div>
1324
1338
  </div>
1325
1339
 
1326
1340
  <div class="home-stats rv" aria-label="Oracle surface metrics">
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="127">127</b><span>data providers</span></div>
1329
- <div class="home-stat"><b id="hero-op-count" data-count="548">548</b><span>data operations</span></div>
1330
- <div class="home-stat"><b id="hero-chain-count">14 + EVM</b><span>chains wired</span></div>
1341
+ <div class="home-stat"><b id="hero-protocol-count" data-count="221">221</b><span>protocols / venues wired</span></div>
1342
+ <div class="home-stat"><b id="hero-provider-count" data-count="134">134</b><span>data providers</span></div>
1343
+ <div class="home-stat"><b id="hero-op-count" data-count="594">594</b><span>data operations</span></div>
1344
+ <div class="home-stat"><b id="hero-chain-count">15 + EVM</b><span>chains wired</span></div>
1331
1345
  </div>
1332
1346
  </div>
1333
1347
  </section>
@@ -1558,13 +1572,21 @@ footer{margin-top:clamp(72px,12vh,120px);border-top:1px solid var(--line);paddin
1558
1572
  </div>
1559
1573
  </article>
1560
1574
  <article class="route-card p-build">
1561
- <div class="where">protocol builder →</div>
1562
- <h3>Build protocols</h3>
1563
- <p>Scaffold contracts, run security gates (Foundry + static checks), prepare unsigned deploys through pinned factories. You still sign every deploy.</p>
1564
- <div class="chips">
1565
- <span class="chip-s">scaffold</span>
1566
- <span class="chip-s">security gate</span>
1567
- <span class="chip-s">unsigned deploy</span>
1575
+ <div class="build-copy">
1576
+ <div>
1577
+ <div class="where">protocol builder →</div>
1578
+ <h3>Build protocols</h3>
1579
+ <p>Scaffold contracts, run security gates (Foundry + static checks), prepare unsigned deploys through pinned factories. You still sign every deploy.</p>
1580
+ <div class="chips">
1581
+ <span class="chip-s">scaffold</span>
1582
+ <span class="chip-s">security gate</span>
1583
+ <span class="chip-s">unsigned deploy</span>
1584
+ </div>
1585
+ </div>
1586
+ <figure class="build-bench">
1587
+ <img src="assets/protocol-build-time.jpg" width="1280" height="720" alt="EVM protocol build time benchmark: Codex and Claude with Oracle versus a plain harness on a gated safe ERC-721 drop. Quality gate 24/24. One controlled trial." loading="lazy" decoding="async">
1588
+ <figcaption>identical prompt · clean tool isolation · own tests green · 24/24 hidden acceptance</figcaption>
1589
+ </figure>
1568
1590
  </div>
1569
1591
  </article>
1570
1592
  </div>
@@ -1669,7 +1691,41 @@ footer{margin-top:clamp(72px,12vh,120px);border-top:1px solid var(--line);paddin
1669
1691
  <div class="marquee"><div class="track" id="llm-track"></div></div>
1670
1692
  </div>
1671
1693
 
1672
- <p class="section-label rv">Self-custodial agents</p>
1694
+ <p class="section-label rv">Teams</p>
1695
+ <h2 class="section-title rv" data-split>Specialists that <em>hand off</em>, not a single agent guessing.</h2>
1696
+ <p class="section-lede rv">A team is a compiled pipeline: a scanner gathers bounded public evidence, a sentiment agent scores the narrative, a strategy agent writes a falsifiable thesis, a risk gate enforces every cap exactly, and an executor prepares an operator handoff. Each stage is a different model if you want it to be. The last stage still cannot sign.</p>
1697
+ <div class="teams-flow rv">
1698
+ <span class="teams-node"><b>Scanner</b><i>deterministic</i></span>
1699
+ <span class="teams-arrow">→</span>
1700
+ <span class="teams-node"><b>Sentiment</b><i>model</i></span>
1701
+ <span class="teams-arrow">→</span>
1702
+ <span class="teams-node"><b>Strategy</b><i>model</i></span>
1703
+ <span class="teams-arrow">→</span>
1704
+ <span class="teams-node"><b>Risk</b><i>policy</i></span>
1705
+ <span class="teams-arrow">→</span>
1706
+ <span class="teams-node is-terminal"><b>Executor</b><i>operator</i></span>
1707
+ </div>
1708
+ <div class="selfcustody-grid">
1709
+ <div>
1710
+ <h4>The shape is compiled, not suggested</h4>
1711
+ <p>A team that lets a non-executor prepare intents, or puts the executor anywhere but last, does not compile. Policy without wallet confirmation and a kill switch is refused. So is an unbounded chain allowlist, an expired policy, and a DAG with a cycle.</p>
1712
+ </div>
1713
+ <div>
1714
+ <h4>Autonomy is opt-in by construction</h4>
1715
+ <p>Six modes: draft, shadow, confirm, armed, autonomous, halted. Templates ship as draft. Autonomous mode is rejected outright unless the policy carries an explicit opt-in flag, so it is never something you forget to turn off.</p>
1716
+ </div>
1717
+ <div>
1718
+ <h4>Same team, same hash, every machine</h4>
1719
+ <p>Compilation is canonical: key order does not change the team hash, and handoff payloads hash the same regardless of how they were assembled. A team is an identity you can pin, diff, and audit.</p>
1720
+ </div>
1721
+ <div>
1722
+ <h4>Still prepare-only at the end</h4>
1723
+ <p>Every handoff reports executionAllowed, backendSigner, signingReady and broadcastReady as false. All 14 team tools declare that they neither sign nor broadcast. Secret-like values are stripped at compile time, so a key cannot ride along in agent metadata.</p>
1724
+ </div>
1725
+ </div>
1726
+ <p class="cmd-hint teams-templates rv">Seven templates ship in the box: Hyperliquid Alpha, Perp Market Breadth, Perp Technical Strategy, Basket Relative Value, Wallet Watch, EVM Launch Radar, NFT Mint Guard. Teams run in the <b>desktop app</b> — the CLI stays a single-agent shell.</p>
1727
+
1728
+ <p class="section-label rv teams-next">Self-custodial agents</p>
1673
1729
  <h2 class="section-title rv" data-split>No third party holds your keys. Not even Oracle.</h2>
1674
1730
  <div class="selfcustody-grid">
1675
1731
  <div>
@@ -1741,15 +1797,15 @@ footer{margin-top:clamp(72px,12vh,120px);border-top:1px solid var(--line);paddin
1741
1797
  <p>Oracle reads live markets, checks policy, and prepares unsigned actions. The cards below are the main shipped surfaces, not a roadmap.</p>
1742
1798
  </div>
1743
1799
  <figure class="route-proof rv">
1744
- <video id="route-session" width="868" height="456"
1745
- poster="assets/hero/route-session-poster.jpg"
1800
+ <video id="agent-session" width="1280" height="720"
1801
+ poster="assets/hero/agent-session-poster.jpg"
1746
1802
  muted loop playsinline preload="none"
1747
- aria-label="Recorded Oracle session pricing one swap across five venues and ranking them net of cost">
1748
- <source src="assets/hero/route-session.webm" type="video/webm">
1749
- <source src="assets/hero/route-session.mp4" type="video/mp4">
1803
+ aria-label="Oracle agent session: swap ranked net of cost, NFT mint pipeline, protocol scaffold. You sign.">
1804
+ <source src="assets/hero/agent-session.webm" type="video/webm">
1805
+ <source src="assets/hero/agent-session.mp4" type="video/mp4">
1750
1806
  </video>
1751
- <img id="route-still" src="assets/hero/route-session-poster.jpg" alt="Oracle pricing a swap across paraswap, cow, uniswap-v3, lifi and uniswap-v4, ranked net of cost" width="868" height="456" loading="lazy" decoding="async">
1752
- <figcaption>one swap, five venues, ranked net of cost</figcaption>
1807
+ <img id="route-still" src="assets/hero/agent-session-poster.jpg" alt="Oracle preparing 500 USDC to 6.14 HYPE on HyperEVM via LI.FI, ranked net of cost, awaiting signature" width="1280" height="720" loading="lazy" decoding="async">
1808
+ <figcaption>swap · mint · scaffold · you sign</figcaption>
1753
1809
  </figure>
1754
1810
  <figure class="route-proof rv" style="margin-top:18px">
1755
1811
  <svg viewBox="0 0 868 456" preserveAspectRatio="xMidYMid meet" class="route-tree" aria-label="Oracle routing tree">
@@ -1829,9 +1885,9 @@ footer{margin-top:clamp(72px,12vh,120px);border-top:1px solid var(--line);paddin
1829
1885
  <p>Split buys or sells into child orders, cap participation, or stage limit/DCA plans from live depth.</p>
1830
1886
  </article>
1831
1887
  <article class="strategy-card">
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>
1888
+ <div class="mode">rebalance · stake · yield</div>
1889
+ <h4>LP rebalance and staking</h4>
1890
+ <p>Cross-chain LP rebalance ranks destination liquidity net of gas. HyperCore HYPE stake, delegate and 7-day unstake. Yield vaults compared before unsigned deposits.</p>
1835
1891
  </article>
1836
1892
  <article class="strategy-card">
1837
1893
  <div class="mode">scan · approve · revoke</div>
@@ -1878,6 +1934,26 @@ footer{margin-top:clamp(72px,12vh,120px);border-top:1px solid var(--line);paddin
1878
1934
  <h4>Chat approvals</h4>
1879
1935
  <p>Telegram, Discord, WhatsApp, Photon and Buzz receive scoped prompts, alerts and Allow/Deny approval cards.</p>
1880
1936
  </article>
1937
+ <article class="strategy-card">
1938
+ <div class="mode">mint · quantity · gas-war</div>
1939
+ <h4>Multi mint</h4>
1940
+ <p>Unsigned NFT mints with a quantity you set, wallet-signable calldata, and gas-war caps so a contested drop cannot unbounded-bid.</p>
1941
+ </article>
1942
+ <article class="strategy-card">
1943
+ <div class="mode">lp · sell-sim · native</div>
1944
+ <h4>Native token exit</h4>
1945
+ <p>One-sided exit quotes the bag back to the chain's native or base asset via the liquidity pool, then sell-sims before you prepare. A clean book quote is not a SAFE until the sim passes.</p>
1946
+ </article>
1947
+ <article class="strategy-card">
1948
+ <div class="mode">wallet · etherscan · bubblemaps</div>
1949
+ <h4>Chain investigator</h4>
1950
+ <p>Wallet evidence via Etherscan, Solscan, Blockscout, Bitcoin. Holder graphs via Bubblemaps. Read-only. Flow is not identity.</p>
1951
+ </article>
1952
+ <article class="strategy-card">
1953
+ <div class="mode">observe · flash-loan · arm</div>
1954
+ <h4>Flash loans and MEV</h4>
1955
+ <p>Loopback observer on Base and Arbitrum. Flash-loan execute stays idle until you arm one exact loan. No searcher loop. You still sign.</p>
1956
+ </article>
1881
1957
  </div>
1882
1958
  <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>
1883
1959
 
@@ -1904,19 +1980,15 @@ footer{margin-top:clamp(72px,12vh,120px);border-top:1px solid var(--line);paddin
1904
1980
  <p class="section-label rv">Oracle CLI</p>
1905
1981
  <h2 class="section-title rv" data-split>One surface. <em>Every chain.</em></h2>
1906
1982
  <div class="cli-install rv">
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>
1983
+ <div class="cli-install-cmd"><code>curl -fL https://oracle.demi.la/install.sh | bash</code> <span class="cli-install-hint">then oracle setup model && oracle chat</span></div>
1908
1984
  </div>
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>
1985
+ <p class="section-lede rv">Type <code style="color:var(--blue2)">oracle</code>. Local signer. THE FUTURE IS AGENTIC. <code style="color:var(--blue2)">←/→</code> saved chats. Reads, prices, prepares — you sign.</p>
1911
1986
  <div class="convert-grid rv">
1912
1987
  <div>
1913
1988
  <figure class="cli-frame cli-proof">
1914
- <picture>
1915
- <source srcset="assets/oracle-cli-v035.gif?v=20260824l" type="image/gif" media="(prefers-reduced-motion: no-preference)">
1916
- <img id="cli-still" src="assets/oracle-cli-v035-poster.jpg?v=20260824l" alt="Oracle CLI TUI v0.35.4 boot screen with blue globe, starfield, Hyperliquid, and ←/→ sessions" width="1600" height="815" loading="eager" fetchpriority="high" />
1917
- </picture>
1989
+ <img id="cli-still" src="assets/oracle-cli-v035-poster.jpg?v=20260830b" alt="Oracle CLI boot: globe wordmark, THE FUTURE IS AGENTIC, local signer ready, gpt-5.6-sol, Hyperliquid, ←/→ sessions" width="1600" height="815" loading="eager" fetchpriority="high" />
1918
1990
  </figure>
1919
- <p class="cli-cap">actual oracle shell</p>
1991
+ <p class="cli-cap">what you see when you type oracle</p>
1920
1992
  </div>
1921
1993
  <div class="convert-copy">
1922
1994
  <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>
@@ -1928,14 +2000,18 @@ footer{margin-top:clamp(72px,12vh,120px);border-top:1px solid var(--line);paddin
1928
2000
  <span>agent plugins</span>
1929
2001
  <span>read-plane doctor</span>
1930
2002
  </div>
2003
+ </div>
2004
+ </div>
1931
2005
  <h2 class="section-title app-shot-title">Oracle Desktop App <sup style="font-size:14px;color:var(--blue);font-weight:400">beta</sup></h2>
1932
2006
  <figure class="app-shot">
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.">
1934
- <figcaption>Portfolio, approvals, prepare, farming, receipts and routes in one pane.</figcaption>
2007
+ <img src="assets/desktop-app.jpg?v=20260830" width="1280" height="860" loading="lazy" decoding="async" alt="Oracle desktop 0.4.14 setup: connect Claude, Codex or Grok, local llama.cpp or Ollama, then pick model and chain.">
2008
+ <figcaption>Native desktop. Connect a provider, then chat.</figcaption>
1935
2009
  </figure>
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>
2010
+ <div class="os-dl">
2011
+ <a class="os-link" href="/downloads/artifacts/Oracle-0.4.16.AppImage">Linux AppImage</a>
2012
+ <a class="os-link" href="/downloads/artifacts/Oracle-0.4.16-arm64.dmg">macOS DMG</a>
2013
+ <a class="os-link" href="/downloads/artifacts/Oracle-Setup-0.4.16.exe">Windows Setup</a>
1937
2014
  </div>
1938
- </div>
1939
2015
  </section>
1940
2016
 
1941
2017
  <section class="section" id="fees">
@@ -2296,10 +2372,12 @@ var PROTOS_B = [
2296
2372
  // The hero stat is animated from data-count, so only the atlas value is
2297
2373
  // written directly here -- otherwise this would stomp the count mid-flight.
2298
2374
  ["atlas-protocol-count"].forEach(function (id) { var el = document.getElementById(id); if (el) el.textContent = String(entries.length); });
2299
- // Keep the hero target honest: if the protocol table grows, the number the
2300
- // counter climbs to grows with it.
2301
- var heroProto = document.getElementById("hero-protocol-count");
2302
- if (heroProto) heroProto.setAttribute("data-count", String(entries.length));
2375
+ // The hero protocol total is the GROUNDED roster claim (221), verified in
2376
+ // docs-accuracy against the Jupiter venue roster and pinned by
2377
+ // oracle-splash-ux. `entries` is only the logo-marquee rail — a presentation
2378
+ // subset (117) that has been added to and trimmed over time. Writing it here
2379
+ // silently overwrote the real claim with a rail count, so the hero rendered
2380
+ // 117 while the markup, README and tests all said 221.
2303
2381
  // Only the atlas count tracks the splash's own chain cards. The hero stat
2304
2382
  // reports the catalog's 21 wired chainIds, which is a different, larger set.
2305
2383
  ["atlas-chain-count"].forEach(function (id) { var el = document.getElementById(id); if (el) el.textContent = CHAINS.length + " + EVM"; });
@@ -2666,7 +2744,7 @@ var activeLenis = null;
2666
2744
  orb.addEventListener("error",function(){orb.style.display="none";},{once:true});
2667
2745
  var pl=orb.play&&orb.play();if(pl&&pl.catch)pl.catch(function(){});
2668
2746
  }
2669
- var vids=[document.getElementById("route-session"),document.getElementById("risk-session")].filter(Boolean);
2747
+ var vids=[document.getElementById("agent-session"),document.getElementById("risk-session")].filter(Boolean);
2670
2748
  if(!vids.length)return;
2671
2749
  var reduce=window.matchMedia&&window.matchMedia("(prefers-reduced-motion:reduce)").matches;
2672
2750
  if(reduce)return;
package/server.json CHANGED
@@ -3,12 +3,12 @@
3
3
  "name": "io.github.demi-hl/oracle",
4
4
  "description": "Keyless multichain crypto desk: chain reads + prepare-only unsigned txs. Your wallet signs.",
5
5
  "websiteUrl": "https://oracle.demi.la",
6
- "version": "0.35.34",
6
+ "version": "0.35.36",
7
7
  "packages": [
8
8
  {
9
9
  "registryType": "npm",
10
10
  "identifier": "@oracle-agent/oracle",
11
- "version": "0.35.34",
11
+ "version": "0.35.36",
12
12
  "transport": {
13
13
  "type": "stdio"
14
14
  },