@oracle-agent/oracle 0.35.38 → 0.35.40
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/README.md +1 -1
- package/dist/agent-sessions.mjs +13 -13
- package/dist/assets/skills/blocked-page-recovery.md +16 -0
- package/dist/assets/skills/browser-use.md +19 -0
- package/dist/assets/skills/chrome-profile-browser.md +21 -0
- package/dist/assets/skills/oracle-agentic-crypto/SKILL.md +27 -0
- package/dist/assets/skills/oracle-desk-product/SKILL.md +1 -1
- package/dist/assets/skills/oracle-x402/SKILL.md +54 -11
- package/dist/assets/skills/web-form-filling.md +19 -0
- package/dist/assets/skills/web-research.md +17 -0
- package/dist/assets/skills/x-read-browser.md +17 -0
- package/dist/assets/skills/xurl.md +1 -1
- package/dist/bin/desk-server.mjs +30 -30
- package/dist/bin/oracle-data-mcp.mjs +17 -13
- package/dist/bin/oracle-public-server.mjs +1 -1
- package/dist/bin/oracle-route.mjs +26 -14
- package/dist/bin/oracle-scan.mjs +4 -4
- package/dist/bin/oracle.mjs +11 -10
- package/dist/cli/commands/agent-session.mjs +18 -18
- package/dist/cli/commands/auth.mjs +20 -17
- package/dist/cli/commands/chat.mjs +231 -228
- package/dist/cli/commands/data.mjs +5 -5
- package/dist/cli/commands/doctor.mjs +1 -1
- package/dist/cli/commands/eval.mjs +154 -152
- package/dist/cli/commands/extension-policy.mjs +1 -1
- package/dist/cli/commands/follow.mjs +57 -19
- package/dist/cli/commands/governance-prepare.mjs +1 -1
- package/dist/cli/commands/init.mjs +2 -2
- package/dist/cli/commands/model.mjs +235 -232
- package/dist/cli/commands/public.mjs +3 -3
- package/dist/cli/commands/route.mjs +1 -1
- package/dist/cli/commands/setup.mjs +62 -59
- package/dist/cli/commands/signer.mjs +4 -4
- package/dist/cli/commands/upgrade.mjs +2 -2
- package/dist/cli/commands/x402.mjs +19 -0
- package/dist/control-plane/index.mjs +1 -1
- package/dist/data/desk-data.mjs +28 -28
- package/dist/index.mjs +46 -46
- package/dist/local-signer/runtime.mjs +6 -6
- package/dist/teams/index.mjs +6 -5
- package/dist/tui/standalone-client.mjs +84 -82
- package/package.json +1 -1
- package/public/eval-report.json +2 -2
- package/public/oracle-splash/docs/browser-and-web/index.html +32 -0
- package/public/oracle-splash/docs/connectors/index.html +18 -0
- package/public/oracle-splash/docs/docs.css +21 -0
- package/public/oracle-splash/docs/docs.js +108 -0
- package/public/oracle-splash/docs/getting-started/index.html +36 -0
- package/public/oracle-splash/docs/index.html +26 -0
- package/public/oracle-splash/docs/reference/index.html +20 -0
- package/public/oracle-splash/docs/security/index.html +19 -0
- package/public/oracle-splash/docs/using-oracle/index.html +32 -0
- package/public/oracle-splash/download/index.html +2584 -0
- package/public/oracle-splash/index.html +313 -942
- package/public/oracle-splash/pricing/index.html +2570 -0
- package/public/oracle-splash/security/index.html +2574 -0
- package/public/oracle-splash/what-it-does/index.html +2608 -0
- package/public/oracle-splash/where-it-works/index.html +2635 -0
- package/server.json +2 -2
- package/dist/assets/equities-fixtures/bridge_routes.json +0 -159
|
@@ -3,10 +3,10 @@
|
|
|
3
3
|
<head>
|
|
4
4
|
<meta charset="UTF-8" />
|
|
5
5
|
<meta name="viewport" content="width=device-width, initial-scale=1.0" />
|
|
6
|
-
<title>ORACLE</title>
|
|
6
|
+
<title>ORACLE | The control plane between AI and on-chain action</title>
|
|
7
7
|
<link rel="icon" href="/favicon.svg" type="image/svg+xml">
|
|
8
8
|
<link rel="shortcut icon" href="/favicon.ico">
|
|
9
|
-
<meta name="description" content="
|
|
9
|
+
<meta name="description" content="Oracle reads chain state, prices routes, and prepares unsigned transactions across 15+ chains. Your wallet signs.">
|
|
10
10
|
<meta name="theme-color" content="#0B1018" />
|
|
11
11
|
<meta name="robots" content="index,follow" />
|
|
12
12
|
<meta property="og:title" content="ORACLE | The all-in-one multichain agent">
|
|
@@ -174,8 +174,41 @@ body[data-scene="cli"] .nav,body[data-scene="fees"] .nav{border-bottom-color:rgb
|
|
|
174
174
|
display:flex;align-items:center;gap:18px;justify-self:end;
|
|
175
175
|
font-family:var(--mono);font-size:var(--fs-micro);letter-spacing:.18em;text-transform:uppercase;color:var(--cool);
|
|
176
176
|
}
|
|
177
|
-
.nav-links a{opacity:.78;transition:opacity .25s,color .25s}
|
|
177
|
+
.nav-links a{opacity:.78;transition:opacity .25s,color .25s;position:relative}
|
|
178
178
|
.nav-links a:hover{opacity:1;color:var(--blue2)}
|
|
179
|
+
.nav-links a::after{
|
|
180
|
+
content:"";position:absolute;left:0;right:0;bottom:-6px;height:1px;
|
|
181
|
+
background:var(--blue);transform:scaleX(0);transform-origin:left;
|
|
182
|
+
transition:transform .3s var(--ease);
|
|
183
|
+
}
|
|
184
|
+
.nav-links a:hover::after{transform:scaleX(1)}
|
|
185
|
+
.nav-links a.is-active{opacity:1;color:var(--blue2)}
|
|
186
|
+
.nav-links a.is-active::after{transform:scaleX(1)}
|
|
187
|
+
/* Download reads as the action, not a fifth link of equal weight. */
|
|
188
|
+
.nav-links a.nav-download{
|
|
189
|
+
opacity:1;color:#071018;
|
|
190
|
+
background:linear-gradient(180deg,rgba(184,240,255,.98),rgba(124,196,255,.9));
|
|
191
|
+
border-radius:999px;padding:8px 15px;
|
|
192
|
+
}
|
|
193
|
+
.nav-links a.nav-download::after{display:none}
|
|
194
|
+
.nav-links a.nav-download:hover{color:#071018;box-shadow:0 0 0 1px rgba(184,240,255,.4),0 12px 30px rgba(124,196,255,.24)}
|
|
195
|
+
/* Mobile menu: hidden on desktop, drawer below. */
|
|
196
|
+
.nav-toggle{
|
|
197
|
+
display:none;justify-self:end;width:38px;height:38px;
|
|
198
|
+
align-items:center;justify-content:center;
|
|
199
|
+
border:1px solid var(--line-2);border-radius:10px;background:none;
|
|
200
|
+
color:var(--cool);cursor:pointer;padding:0;
|
|
201
|
+
}
|
|
202
|
+
.nav-toggle span{display:block;width:16px;height:1px;background:currentColor;position:relative}
|
|
203
|
+
.nav-toggle span::before,.nav-toggle span::after{
|
|
204
|
+
content:"";position:absolute;left:0;width:16px;height:1px;background:currentColor;
|
|
205
|
+
transition:transform .3s var(--ease),opacity .2s;
|
|
206
|
+
}
|
|
207
|
+
.nav-toggle span::before{top:-5px}
|
|
208
|
+
.nav-toggle span::after{top:5px}
|
|
209
|
+
.nav[data-open="1"] .nav-toggle span{background:transparent}
|
|
210
|
+
.nav[data-open="1"] .nav-toggle span::before{transform:translateY(5px) rotate(45deg)}
|
|
211
|
+
.nav[data-open="1"] .nav-toggle span::after{transform:translateY(-5px) rotate(-45deg)}
|
|
179
212
|
.nav-chip{
|
|
180
213
|
font-family:var(--mono);font-size:var(--fs-micro);letter-spacing:.16em;text-transform:uppercase;
|
|
181
214
|
border:1px solid rgba(124,196,255,.3);border-radius:999px;padding:7px 11px;color:var(--blue2);opacity:.95;
|
|
@@ -305,9 +338,10 @@ code{font-family:var(--mono)}
|
|
|
305
338
|
.section-title{
|
|
306
339
|
font-family:var(--display);font-weight:400;
|
|
307
340
|
font-size:var(--fs-2xl);line-height:1.06;letter-spacing:-.01em;
|
|
308
|
-
max-width:18ch;margin-bottom:
|
|
341
|
+
max-width:18ch;margin-bottom:20px;
|
|
309
342
|
}
|
|
310
343
|
.section-title em{font-style:italic;color:var(--blue2)}
|
|
344
|
+
.done .word-mask{overflow:visible!important}
|
|
311
345
|
.section-lede{max-width:52ch;color:var(--cool);font-size:var(--fs-base);line-height:1.7;margin-bottom:clamp(28px,4vw,44px)}
|
|
312
346
|
|
|
313
347
|
/* orchestration graph */
|
|
@@ -514,6 +548,14 @@ code{font-family:var(--mono)}
|
|
|
514
548
|
.strategy-card .mode{font-family:var(--mono);font-size:var(--fs-micro);letter-spacing:.16em;text-transform:uppercase;color:var(--blue2)}
|
|
515
549
|
.strategy-card h4{font-family:var(--display);font-weight:400;font-size:var(--fs-lg)}
|
|
516
550
|
.strategy-card p{color:var(--cool);font-size:var(--fs-sm);line-height:1.6}
|
|
551
|
+
.strategy-more{border-top:1px solid var(--line);background:rgba(11,16,24,.72)}
|
|
552
|
+
.strategy-more > summary{list-style:none;display:flex;align-items:center;justify-content:center;gap:12px;padding:18px 24px;cursor:pointer;font-family:var(--mono);font-size:var(--fs-micro);letter-spacing:.18em;text-transform:uppercase;color:var(--blue2);transition:background .25s var(--ease),color .25s var(--ease)}
|
|
553
|
+
.strategy-more > summary::-webkit-details-marker{display:none}
|
|
554
|
+
.strategy-more > summary::after{content:"+";font-size:var(--fs-sm);transition:transform .3s var(--ease)}
|
|
555
|
+
.strategy-more[open] > summary::after{transform:rotate(45deg)}
|
|
556
|
+
.strategy-more > summary:hover{background:rgba(124,196,255,.05);color:var(--ink)}
|
|
557
|
+
.strategy-more > summary:focus-visible{outline:2px solid var(--blue2);outline-offset:-4px}
|
|
558
|
+
.strategy-grid-more{border-top:1px solid var(--line)}
|
|
517
559
|
.strategy-posture{padding:14px clamp(20px,3vw,34px);border-top:1px solid var(--line);font-family:var(--mono);font-size:var(--fs-micro);line-height:1.6;letter-spacing:.11em;text-transform:uppercase;color:var(--mute)}
|
|
518
560
|
.strategy-posture b{font-weight:500;color:var(--warm);letter-spacing:.04em}
|
|
519
561
|
@media (max-width:900px){
|
|
@@ -526,7 +568,7 @@ code{font-family:var(--mono)}
|
|
|
526
568
|
|
|
527
569
|
.strategy-posture b{color:var(--blue2);font-weight:500}
|
|
528
570
|
@media (max-width:980px){.strategy-grid{grid-template-columns:repeat(2,minmax(0,1fr))}.strategy-head{align-items:start;flex-direction:column}}
|
|
529
|
-
@media (max-width:620px){.strategy-grid{grid-template-columns:1fr}.strategy-card{min-height:0}}
|
|
571
|
+
@media (max-width:620px){.strategy-card .mode{display:none}.strategy-grid{grid-template-columns:1fr}.strategy-card{min-height:0;padding:24px 22px;gap:8px}}
|
|
530
572
|
|
|
531
573
|
/* actual Oracle CLI */
|
|
532
574
|
.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)}
|
|
@@ -905,19 +947,14 @@ a.chip:hover{border-color:rgba(124,196,255,.3);background:rgba(21,32,49,.6);tran
|
|
|
905
947
|
.atlas-orbit::before{content:"";position:absolute;width:360px;height:360px;border-radius:50%;background:radial-gradient(circle,rgba(124,196,255,.24),rgba(124,196,255,.08) 28%,transparent 62%);filter:blur(12px);animation:home-breathe 5.8s var(--ease) infinite}
|
|
906
948
|
.atlas-orbit .orbital{width:124px;height:124px;filter:drop-shadow(0 0 32px rgba(124,196,255,.4))}
|
|
907
949
|
.atlas-copy{padding:clamp(20px,3vw,30px)}
|
|
908
|
-
.atlas-
|
|
909
|
-
.atlas-count span{font-style:italic;color:var(--blue2)}
|
|
950
|
+
.atlas-copy h3{font-family:var(--display);font-weight:400;font-size:var(--fs-xl);line-height:1;letter-spacing:-.025em;color:var(--ink)}
|
|
910
951
|
.atlas-sub{margin-top:16px;color:var(--cool);font-size:var(--fs-base);line-height:1.68;max-width:34ch}
|
|
911
|
-
.atlas-ledger{display:grid;gap:1px;margin-top:24px;border:1px solid var(--line);border-radius:var(--r-md);overflow:hidden;background:var(--line)}
|
|
912
|
-
.atlas-ledger div{display:grid;grid-template-columns:1fr auto;gap:16px;padding:11px 13px;background:rgba(11,16,24,.62);font-family:var(--mono);font-size:var(--fs-micro);letter-spacing:.13em;text-transform:uppercase;color:var(--mute)}
|
|
913
|
-
.atlas-ledger b{color:var(--blue2);font-weight:500}
|
|
914
|
-
.mega-oracle{font-family:var(--display);font-weight:300;font-size:var(--fs-4xl);line-height:.8;letter-spacing:-.06em;text-align:center;color:transparent;-webkit-text-stroke:1px rgba(124,196,255,.20);margin:clamp(54px,9vw,110px) auto -26px;max-width:1280px;mask-image:linear-gradient(180deg,#000 28%,transparent 96%);-webkit-mask-image:linear-gradient(180deg,#000 28%,transparent 96%)}
|
|
915
952
|
|
|
916
953
|
@media (max-width:960px){
|
|
917
954
|
.home-stats{grid-template-columns:repeat(2,minmax(0,1fr))}
|
|
918
955
|
.atlas-sticky{position:relative;top:auto}
|
|
919
956
|
}
|
|
920
|
-
@media (max-width:560px){.home-stats{grid-template-columns:1fr}.home-stat{min-height:0}.atlas-orbit{height:170px}
|
|
957
|
+
@media (max-width:560px){.home-stats{grid-template-columns:1fr}.home-stat{min-height:0}.atlas-orbit{height:170px}}
|
|
921
958
|
|
|
922
959
|
|
|
923
960
|
|
|
@@ -933,11 +970,8 @@ a.chip:hover{border-color:rgba(124,196,255,.3);background:rgba(21,32,49,.6);tran
|
|
|
933
970
|
.motion-card::after{content:"";position:absolute;inset:0;background:linear-gradient(120deg,transparent 0%,rgba(255,255,255,.08) 44%,transparent 58%);transform:translateX(-120%);transition:transform .9s var(--ease);pointer-events:none}
|
|
934
971
|
.motion-card:hover{border-color:rgba(184,240,255,.38);box-shadow:0 34px 110px rgba(0,0,0,.34),0 0 0 1px rgba(184,240,255,.06)}
|
|
935
972
|
.motion-card:hover::after{transform:translateX(120%)}
|
|
936
|
-
.motion-card
|
|
937
|
-
.motion-card h3{position:relative;z-index:1;margin:44px 0 12px;font-family:var(--display);font-weight:400;font-size:var(--fs-2xl);line-height:.96;letter-spacing:-.03em}
|
|
973
|
+
.motion-card h3{position:relative;z-index:1;margin:10px 0 14px;font-family:var(--display);font-weight:400;font-size:var(--fs-2xl);line-height:.96;letter-spacing:-.03em}
|
|
938
974
|
.motion-card p{position:relative;z-index:1;color:var(--cool);font-size:var(--fs-base);line-height:1.62;max-width:34ch}
|
|
939
|
-
.motion-card .sig{position:absolute;left:clamp(20px,3vw,30px);right:clamp(20px,3vw,30px);bottom:18px;z-index:1;display:flex;justify-content:space-between;gap:14px;font-family:var(--mono);font-size:var(--fs-micro);letter-spacing:.14em;text-transform:uppercase;color:var(--mute);border-top:1px solid rgba(124,196,255,.12);padding-top:13px}
|
|
940
|
-
.motion-card.is-hot .sig span:last-child{color:var(--blue2)}
|
|
941
975
|
.motion-scan{position:absolute;inset:0;pointer-events:none;background:linear-gradient(180deg,transparent,rgba(124,196,255,.08),transparent);height:38%;animation:scan-pass 4.8s var(--ease) infinite;mix-blend-mode:screen}
|
|
942
976
|
.word-mask{display:inline-block;overflow:hidden;vertical-align:bottom;padding-bottom:.16em;margin-bottom:-.16em}.word-mask>span{display:inline-block}
|
|
943
977
|
@keyframes card-spin{to{--spin:360deg}}
|
|
@@ -947,17 +981,21 @@ a.chip:hover{border-color:rgba(124,196,255,.3);background:rgba(21,32,49,.6);tran
|
|
|
947
981
|
|
|
948
982
|
/* ── hero: product-first split. Real artifact leads, orb is ambience ── */
|
|
949
983
|
.hero-split{
|
|
950
|
-
display:grid;grid-template-columns:minmax(0
|
|
984
|
+
display:grid;grid-template-columns:minmax(0,1fr) minmax(0,1fr);
|
|
951
985
|
gap:clamp(28px,4vw,56px);align-items:center;text-align:left;width:100%;
|
|
952
986
|
}
|
|
953
987
|
.hero-lede{min-width:0;display:flex;flex-direction:column;align-items:flex-start}
|
|
954
988
|
.hero-lede .home-kicker{margin-bottom:14px}
|
|
989
|
+
/* One shared measure so the headline and the paragraph under it are the same
|
|
990
|
+
block width; the headline is sized to break onto two lines inside it. */
|
|
991
|
+
.hero-lede{--hero-measure:min(100%,620px)}
|
|
955
992
|
.hero-split .home-title{
|
|
956
|
-
font-size:
|
|
993
|
+
font-size:clamp(40px,4.4vw,58px);line-height:1.02;letter-spacing:-.03em;
|
|
957
994
|
text-transform:none;text-align:left;margin:0;
|
|
995
|
+
max-width:var(--hero-measure);
|
|
958
996
|
}
|
|
959
997
|
.hero-sub{
|
|
960
|
-
max-width:
|
|
998
|
+
max-width:var(--hero-measure);margin:20px 0 0;color:var(--cool);
|
|
961
999
|
font-size:var(--fs-base);line-height:1.65;text-shadow:0 1px 20px rgba(0,0,0,.6);
|
|
962
1000
|
}
|
|
963
1001
|
.hero-split .home-actions{justify-content:flex-start;margin-top:30px}
|
|
@@ -982,6 +1020,66 @@ a.chip:hover{border-color:rgba(124,196,255,.3);background:rgba(21,32,49,.6);tran
|
|
|
982
1020
|
.hero-note-line{flex-direction:column;align-items:flex-start}
|
|
983
1021
|
.hero-note-sep{display:none}
|
|
984
1022
|
}
|
|
1023
|
+
/* Five sequential steps. Numbers carry the order, so these are lighter than
|
|
1024
|
+
moat-cards: no heavy border box, just a rule per column. At five across a
|
|
1025
|
+
2-column grid would strand the last one, hence its own track sizing. */
|
|
1026
|
+
.steps-grid{
|
|
1027
|
+
display:grid;grid-template-columns:repeat(5,minmax(0,1fr));
|
|
1028
|
+
gap:clamp(18px,2.4vw,30px);margin-top:22px;
|
|
1029
|
+
}
|
|
1030
|
+
@media (max-width:980px){.steps-grid{grid-template-columns:repeat(2,minmax(0,1fr))}}
|
|
1031
|
+
@media (max-width:620px){.steps-grid{grid-template-columns:1fr}}
|
|
1032
|
+
/* Trailing "see the full X" line under a grid. Shares moat-grid's rhythm so
|
|
1033
|
+
sections do not each invent their own spacing. */
|
|
1034
|
+
.agent-icons{display:flex;flex-wrap:wrap;gap:10px;justify-content:center;margin-top:14px}
|
|
1035
|
+
.agent-icons span{
|
|
1036
|
+
display:inline-flex;align-items:center;gap:5px;padding:4px 10px;
|
|
1037
|
+
border:1px solid var(--line);border-radius:999px;
|
|
1038
|
+
font-family:var(--mono);font-size:var(--fs-micro);color:var(--cool);letter-spacing:.08em;
|
|
1039
|
+
}
|
|
1040
|
+
.section-more{margin-top:22px}
|
|
1041
|
+
.section-more a{color:var(--blue2);text-decoration:none;transition:color .25s}
|
|
1042
|
+
.section-more a:hover{color:var(--ink)}
|
|
1043
|
+
.step-card{position:relative;padding-top:18px;border-top:1px solid var(--line-2)}
|
|
1044
|
+
.step-card .n{
|
|
1045
|
+
font-family:var(--mono);font-size:var(--fs-micro);letter-spacing:.14em;
|
|
1046
|
+
text-transform:uppercase;color:var(--blue);opacity:.85;
|
|
1047
|
+
}
|
|
1048
|
+
.step-card h3{
|
|
1049
|
+
font-family:var(--display);font-weight:400;font-size:var(--fs-lg);
|
|
1050
|
+
line-height:1.18;margin:10px 0 8px;color:var(--ink);
|
|
1051
|
+
}
|
|
1052
|
+
.step-card p{color:var(--cool);font-size:var(--fs-sm);line-height:1.6}
|
|
1053
|
+
/* Two-column client/chain roster on the landing. Chips are static labels, not
|
|
1054
|
+
links: the section header carries the one link that matters. */
|
|
1055
|
+
.reach-cols{
|
|
1056
|
+
display:grid;grid-template-columns:repeat(auto-fit,minmax(280px,1fr));
|
|
1057
|
+
gap:clamp(20px,3vw,40px);margin-top:22px;
|
|
1058
|
+
}
|
|
1059
|
+
.reach-chips{display:flex;flex-wrap:wrap;gap:8px;margin-top:14px}
|
|
1060
|
+
.reach-chips span{
|
|
1061
|
+
font-family:var(--mono);font-size:var(--fs-micro);letter-spacing:.08em;
|
|
1062
|
+
color:var(--cool);border:1px solid var(--line);border-radius:999px;
|
|
1063
|
+
padding:7px 13px;background:rgba(124,196,255,.03);
|
|
1064
|
+
transition:border-color .25s,color .25s;
|
|
1065
|
+
}
|
|
1066
|
+
.reach-chips span:hover{border-color:var(--line-2);color:var(--ink)}
|
|
1067
|
+
.cmd-hint a{color:var(--blue2);text-decoration:none;transition:color .25s}
|
|
1068
|
+
.cmd-hint a:hover{color:var(--ink)}
|
|
1069
|
+
/* Inline links inside body copy need to read as links; the global rule strips
|
|
1070
|
+
color and underline for nav and card-wrapper anchors. */
|
|
1071
|
+
.section-lede a{
|
|
1072
|
+
color:var(--blue2);text-decoration:none;
|
|
1073
|
+
border-bottom:1px solid rgba(124,196,255,.35);
|
|
1074
|
+
transition:border-color .25s,color .25s;
|
|
1075
|
+
}
|
|
1076
|
+
.section-lede a:hover{color:var(--ink);border-bottom-color:var(--blue)}
|
|
1077
|
+
.moat-card p a{
|
|
1078
|
+
color:var(--blue2);text-decoration:none;
|
|
1079
|
+
border-bottom:1px solid rgba(124,196,255,.35);
|
|
1080
|
+
transition:border-color .25s,color .25s;
|
|
1081
|
+
}
|
|
1082
|
+
.moat-card p a:hover{color:var(--ink);border-bottom-color:var(--blue)}
|
|
985
1083
|
.hero-installer{
|
|
986
1084
|
margin:clamp(24px,4vw,38px) 0 0;width:100%;border:1px solid var(--line-2);border-radius:var(--r-md);
|
|
987
1085
|
overflow:hidden;background:linear-gradient(145deg,rgba(17,25,37,.95),rgba(10,16,25,.98));
|
|
@@ -1118,27 +1216,16 @@ a.chip:hover{border-color:rgba(124,196,255,.3);background:rgba(21,32,49,.6);tran
|
|
|
1118
1216
|
#cli-still{position:static;opacity:1}
|
|
1119
1217
|
}
|
|
1120
1218
|
|
|
1121
|
-
footer{margin-top:clamp(
|
|
1219
|
+
footer{margin-top:clamp(64px,10vh,100px);border-top:1px solid var(--line);padding:30px var(--pad) 36px;position:relative;z-index:2}
|
|
1122
1220
|
.labs-link{font-family:"UnifrakturCook","Old English Text MT","Lucida Blackletter",serif;font-size:var(--fs-base);letter-spacing:.04em;text-transform:none;color:var(--blue2)}
|
|
1123
1221
|
.labs-link:hover{color:var(--ink)}
|
|
1124
1222
|
.foot-row{
|
|
1125
|
-
max-width:var(--max);margin:0 auto
|
|
1223
|
+
max-width:var(--max);margin:0 auto;
|
|
1126
1224
|
display:flex;flex-wrap:wrap;gap:14px 24px;justify-content:space-between;align-items:center;
|
|
1225
|
+
font-family:var(--mono);font-size:var(--fs-micro);letter-spacing:.16em;text-transform:uppercase;color:var(--mute);
|
|
1127
1226
|
}
|
|
1128
|
-
.powered{
|
|
1129
|
-
display:inline-flex;align-items:center;gap:10px;
|
|
1130
|
-
font-family:var(--mono);font-size:var(--fs-xs);letter-spacing:.2em;text-transform:uppercase;color:var(--mute);
|
|
1131
|
-
}
|
|
1132
|
-
.powered .mark{width:7px;height:7px;border-radius:50%;background:var(--blue);box-shadow:0 0 12px rgba(124,196,255,.7)}
|
|
1133
|
-
.powered a{color:var(--blue);font-weight:600;border-bottom:1px solid transparent;transition:border-color .25s,color .25s}
|
|
1134
|
-
.powered a:hover{border-bottom-color:var(--blue);color:var(--ink)}
|
|
1135
1227
|
.foot-links{display:flex;gap:18px;font-family:var(--mono);font-size:var(--fs-micro);letter-spacing:.16em;text-transform:uppercase;color:var(--mute)}
|
|
1136
1228
|
.foot-links a:hover{color:var(--blue)}
|
|
1137
|
-
.foot-meta{
|
|
1138
|
-
max-width:var(--max);margin:0 auto;
|
|
1139
|
-
display:flex;flex-wrap:wrap;gap:12px 22px;justify-content:space-between;
|
|
1140
|
-
font-family:var(--mono);font-size:var(--fs-micro);letter-spacing:.16em;text-transform:uppercase;color:var(--mute);
|
|
1141
|
-
}
|
|
1142
1229
|
|
|
1143
1230
|
.js .rv{opacity:0;transform:translate3d(0,22px,0);will-change:opacity,transform}
|
|
1144
1231
|
.js .rv.in{opacity:1;transform:translate3d(0,0,0);transition:opacity 1.05s var(--ease),transform 1.05s var(--ease)}
|
|
@@ -1166,7 +1253,24 @@ footer{margin-top:clamp(72px,12vh,120px);border-top:1px solid var(--line);paddin
|
|
|
1166
1253
|
.home-inner{max-width:760px}
|
|
1167
1254
|
.hero-stage{min-height:clamp(300px,44vh,460px)}.home-title{font-size:var(--fs-4xl)}
|
|
1168
1255
|
.nav-chip{display:none}
|
|
1169
|
-
.
|
|
1256
|
+
/* Links collapse into a drawer; the toggle takes their place. */
|
|
1257
|
+
.nav-toggle{display:flex}
|
|
1258
|
+
.nav-links{
|
|
1259
|
+
position:fixed;top:64px;left:0;right:0;
|
|
1260
|
+
flex-direction:column;align-items:stretch;gap:0;
|
|
1261
|
+
background:rgba(11,16,24,.97);
|
|
1262
|
+
backdrop-filter:blur(18px);-webkit-backdrop-filter:blur(18px);
|
|
1263
|
+
border-bottom:1px solid var(--line);
|
|
1264
|
+
padding:6px var(--pad) 18px;
|
|
1265
|
+
opacity:0;visibility:hidden;transform:translateY(-8px);
|
|
1266
|
+
transition:opacity .25s var(--ease),transform .25s var(--ease),visibility .25s;
|
|
1267
|
+
}
|
|
1268
|
+
.nav[data-open="1"] .nav-links{opacity:1;visibility:visible;transform:translateY(0)}
|
|
1269
|
+
.nav-links a{padding:15px 0;border-bottom:1px solid var(--line);opacity:1;font-size:var(--fs-micro)}
|
|
1270
|
+
.nav-links a::after{display:none}
|
|
1271
|
+
.nav-links a.nav-download{
|
|
1272
|
+
margin-top:16px;border-bottom:none;text-align:center;padding:14px 15px;
|
|
1273
|
+
}
|
|
1170
1274
|
.route-strip{grid-template-columns:1fr}
|
|
1171
1275
|
.route-card.p-build .build-copy{grid-template-columns:1fr}
|
|
1172
1276
|
.convert-grid{grid-template-columns:1fr}
|
|
@@ -1225,7 +1329,7 @@ footer{margin-top:clamp(72px,12vh,120px);border-top:1px solid var(--line);paddin
|
|
|
1225
1329
|
.chip img.wm{height:24px;max-width:132px}
|
|
1226
1330
|
.chip img.wm.tall{width:26px;height:26px;min-width:26px;max-width:26px}
|
|
1227
1331
|
footer{padding:28px var(--pad) 34px}
|
|
1228
|
-
.foot-row
|
|
1332
|
+
.foot-row{justify-content:center;text-align:center}
|
|
1229
1333
|
.foot-links{flex-wrap:wrap;justify-content:center;gap:12px 16px}
|
|
1230
1334
|
}
|
|
1231
1335
|
@media (max-width:560px){
|
|
@@ -1277,7 +1381,6 @@ footer{margin-top:clamp(72px,12vh,120px);border-top:1px solid var(--line);paddin
|
|
|
1277
1381
|
display:flex;align-items:center;gap:14px;width:100%;margin-bottom:18px;
|
|
1278
1382
|
font-family:var(--mono);font-size:var(--fs-micro);letter-spacing:.3em;text-transform:uppercase;color:var(--mute);
|
|
1279
1383
|
}
|
|
1280
|
-
.hero-index b{font-weight:500;color:var(--blue2)}
|
|
1281
1384
|
.hero-index i{flex:1;height:1px;background:linear-gradient(90deg,var(--line-2),transparent);font-style:normal;transform-origin:0 50%}
|
|
1282
1385
|
.home{align-content:center}
|
|
1283
1386
|
/* The old centred hairline was an unlabelled decoration. One cue, anchored to
|
|
@@ -1345,7 +1448,7 @@ footer{margin-top:clamp(72px,12vh,120px);border-top:1px solid var(--line);paddin
|
|
|
1345
1448
|
.stack-readout b{display:block;color:var(--blue2);font-weight:500;font-size:var(--fs-sm);letter-spacing:.1em}
|
|
1346
1449
|
.stack-layers{list-style:none;display:grid;gap:0;border-top:1px solid var(--line);margin:0}
|
|
1347
1450
|
.stack-layer{
|
|
1348
|
-
position:relative;display:grid;grid-template-columns:
|
|
1451
|
+
position:relative;display:grid;grid-template-columns:minmax(0,1fr) auto;
|
|
1349
1452
|
gap:clamp(14px,2.6vw,34px);align-items:center;
|
|
1350
1453
|
padding:clamp(12px,1.7vh,20px) 0;border-bottom:1px solid var(--line);
|
|
1351
1454
|
isolation:isolate;overflow:hidden;
|
|
@@ -1356,10 +1459,6 @@ footer{margin-top:clamp(72px,12vh,120px);border-top:1px solid var(--line);paddin
|
|
|
1356
1459
|
mask-image:linear-gradient(90deg,transparent,#000 8%,#000 92%,transparent);
|
|
1357
1460
|
}
|
|
1358
1461
|
.stack-layer > *:not(.layer-ridge){position:relative;z-index:1}
|
|
1359
|
-
.stack-idx{
|
|
1360
|
-
font-family:var(--mono);font-size:var(--fs-micro);letter-spacing:.2em;color:var(--blue);
|
|
1361
|
-
min-width:2.4em;
|
|
1362
|
-
}
|
|
1363
1462
|
.stack-body{min-width:0}
|
|
1364
1463
|
.stack-body h3{
|
|
1365
1464
|
font-family:var(--display);font-weight:400;font-size:var(--fs-lg);line-height:1.04;letter-spacing:-.02em;
|
|
@@ -1382,7 +1481,7 @@ footer{margin-top:clamp(72px,12vh,120px);border-top:1px solid var(--line);paddin
|
|
|
1382
1481
|
.premium-motion .stack-sticky{position:static}
|
|
1383
1482
|
.stack-head{grid-template-columns:1fr}
|
|
1384
1483
|
.stack-readout{text-align:left;white-space:normal}
|
|
1385
|
-
.stack-layer{grid-template-columns:
|
|
1484
|
+
.stack-layer{grid-template-columns:minmax(0,1fr)}
|
|
1386
1485
|
.stack-sig{grid-column:1/-1;justify-self:start;text-align:left;white-space:normal}
|
|
1387
1486
|
/* A 900-unit ridge squeezed into a phone column reads as hatching over the
|
|
1388
1487
|
copy rather than as depth. Drop it back to a texture. */
|
|
@@ -1411,65 +1510,17 @@ footer{margin-top:clamp(72px,12vh,120px);border-top:1px solid var(--line);paddin
|
|
|
1411
1510
|
.telemetry-track span.k::before{background:var(--hl);box-shadow:0 0 10px rgba(80,210,193,.7)}
|
|
1412
1511
|
.marquee{transform:skewX(var(--kin-skew,0deg));transition:transform .42s var(--ease)}
|
|
1413
1512
|
|
|
1414
|
-
/* ──
|
|
1513
|
+
/* ── chapter labels on the existing capability sections ─────────── */
|
|
1415
1514
|
.chapter-tab{
|
|
1416
|
-
position:
|
|
1417
|
-
margin-bottom:clamp(14px,2.4vh,26px);padding:7px 14px
|
|
1515
|
+
position:relative;top:auto;z-index:6;display:flex;width:fit-content;align-items:center;gap:12px;
|
|
1516
|
+
margin-bottom:clamp(14px,2.4vh,26px);padding:7px 14px;
|
|
1418
1517
|
border:1px solid var(--line);border-radius:999px;background:rgba(11,16,24,.82);
|
|
1419
1518
|
backdrop-filter:blur(12px);-webkit-backdrop-filter:blur(12px);
|
|
1420
1519
|
font-family:var(--mono);font-size:var(--fs-micro);letter-spacing:.2em;text-transform:uppercase;color:var(--mute);
|
|
1421
1520
|
transition:border-color .5s var(--ease),color .5s var(--ease);
|
|
1422
1521
|
}
|
|
1423
|
-
.chapter-tab b{
|
|
1424
|
-
display:grid;place-items:center;min-width:26px;height:20px;border-radius:999px;
|
|
1425
|
-
background:rgba(124,196,255,.12);color:var(--blue2);font-weight:500;letter-spacing:.08em;
|
|
1426
|
-
}
|
|
1427
1522
|
.section.is-scene .chapter-tab{border-color:var(--line-2);color:var(--cool)}
|
|
1428
1523
|
|
|
1429
|
-
/* ── chapter 06 · the close ──────────────────────────────────────── */
|
|
1430
|
-
.close-scene{
|
|
1431
|
-
position:relative;z-index:2;margin-top:clamp(60px,12vh,140px);
|
|
1432
|
-
padding:clamp(64px,13vh,150px) var(--pad) 0;overflow:hidden;
|
|
1433
|
-
}
|
|
1434
|
-
/* Sits low enough that both resolved lines run through the display title, not
|
|
1435
|
-
through the eyebrow above it, which a hairline made unreadable on phones. */
|
|
1436
|
-
.close-ridge{
|
|
1437
|
-
position:absolute;left:50%;top:clamp(28px,5vh,46px);width:min(1680px,150vw);height:clamp(200px,34vh,380px);
|
|
1438
|
-
transform:translateX(-50%);z-index:0;
|
|
1439
|
-
-webkit-mask-image:linear-gradient(180deg,transparent,#000 46%,transparent);
|
|
1440
|
-
mask-image:linear-gradient(180deg,transparent,#000 46%,transparent);
|
|
1441
|
-
}
|
|
1442
|
-
.close-inner{position:relative;z-index:1;max-width:var(--max);margin:0 auto}
|
|
1443
|
-
.close-eyebrow{font-family:var(--mono);font-size:var(--fs-micro);letter-spacing:.34em;text-transform:uppercase;color:var(--blue);margin-bottom:16px}
|
|
1444
|
-
.close-title{
|
|
1445
|
-
font-family:var(--display);font-weight:300;font-size:var(--fs-3xl);line-height:.96;letter-spacing:-.04em;
|
|
1446
|
-
max-width:16ch;margin-bottom:20px;
|
|
1447
|
-
}
|
|
1448
|
-
.close-title em{font-style:italic;color:var(--blue2)}
|
|
1449
|
-
.close-lede{max-width:50ch;color:var(--cool);font-size:var(--fs-base);line-height:1.7}
|
|
1450
|
-
.close-grid{
|
|
1451
|
-
display:grid;grid-template-columns:minmax(0,1.25fr) minmax(0,.75fr);
|
|
1452
|
-
gap:clamp(20px,4vw,54px);align-items:end;margin-top:clamp(26px,5vh,48px);
|
|
1453
|
-
}
|
|
1454
|
-
.close-cmds{display:flex;flex-direction:column;gap:12px;min-width:0}
|
|
1455
|
-
.close-cmd{
|
|
1456
|
-
display:flex;align-items:center;justify-content:space-between;gap:16px;min-width:0;
|
|
1457
|
-
border:1px solid var(--line-2);border-radius:var(--r-sm);padding:14px 16px;
|
|
1458
|
-
background:rgba(17,25,37,.9);
|
|
1459
|
-
}
|
|
1460
|
-
.close-cmd code{min-width:0;overflow-x:auto;white-space:nowrap;font-size:clamp(11px,1.3vw,15px);color:var(--blue2);scrollbar-width:none}
|
|
1461
|
-
.close-cmd code::-webkit-scrollbar{display:none}
|
|
1462
|
-
.close-cmd em{flex:none;font-style:normal;font-family:var(--mono);font-size:var(--fs-micro);letter-spacing:.14em;text-transform:uppercase;color:var(--mute)}
|
|
1463
|
-
.close-side{display:flex;flex-direction:column;gap:12px;min-width:0}
|
|
1464
|
-
.close-note{font-family:var(--mono);font-size:var(--fs-micro);letter-spacing:.14em;text-transform:uppercase;color:var(--mute);line-height:1.9}
|
|
1465
|
-
.close-scene .os-dl{margin-top:4px}
|
|
1466
|
-
/* The wordmark and footer used to follow the fees grid; behind the close they
|
|
1467
|
-
are tightened so the whole handoff — eyebrow, title, commands — fits the
|
|
1468
|
-
final resting viewport on a desktop instead of sliding under the nav. */
|
|
1469
|
-
.close-scene + .mega-oracle{margin-top:clamp(36px,5vw,60px)}
|
|
1470
|
-
.close-scene ~ footer{margin-top:clamp(52px,8vh,76px)}
|
|
1471
|
-
@media (max-width:860px){.close-grid{grid-template-columns:1fr;align-items:start}}
|
|
1472
|
-
|
|
1473
1524
|
/* ── environment + failure posture ───────────────────────────────── */
|
|
1474
1525
|
@media (max-width:900px){
|
|
1475
1526
|
.marquee{transform:none}
|
|
@@ -1522,7 +1573,7 @@ footer{margin-top:clamp(72px,12vh,120px);border-top:1px solid var(--line);paddin
|
|
|
1522
1573
|
</div>
|
|
1523
1574
|
|
|
1524
1575
|
<header class="nav">
|
|
1525
|
-
<a class="brand" href="
|
|
1576
|
+
<a class="brand" href="/">
|
|
1526
1577
|
<span class="orbital" aria-hidden="true">
|
|
1527
1578
|
<svg viewBox="0 0 100 100">
|
|
1528
1579
|
<g class="ring r1"><ellipse cx="50" cy="50" rx="45" ry="17"/></g>
|
|
@@ -1532,17 +1583,19 @@ footer{margin-top:clamp(72px,12vh,120px);border-top:1px solid var(--line);paddin
|
|
|
1532
1583
|
</svg>
|
|
1533
1584
|
</span>
|
|
1534
1585
|
oracle <span class="nav-chip">beta</span></a>
|
|
1535
|
-
<nav class="nav-links" aria-label="Primary">
|
|
1536
|
-
<a
|
|
1537
|
-
<a
|
|
1538
|
-
<a
|
|
1586
|
+
<nav class="nav-links" id="nav-links" aria-label="Primary">
|
|
1587
|
+
<a href="/what-it-does/">What it does</a>
|
|
1588
|
+
<a href="/where-it-works/">Where it works</a>
|
|
1589
|
+
<a href="/security/">Security</a>
|
|
1590
|
+
<a href="/pricing/">Pricing</a>
|
|
1591
|
+
<a href="/docs/">Docs</a>
|
|
1592
|
+
<a class="nav-download" href="/download/">Download</a>
|
|
1539
1593
|
</nav>
|
|
1594
|
+
<button class="nav-toggle" id="nav-toggle" type="button" aria-label="Menu" aria-expanded="false" aria-controls="nav-links"><span></span></button>
|
|
1540
1595
|
</header>
|
|
1541
|
-
|
|
1542
1596
|
<main id="top">
|
|
1543
1597
|
<canvas id="gl" aria-hidden="true"></canvas>
|
|
1544
1598
|
<div class="veil" aria-hidden="true"></div>
|
|
1545
|
-
|
|
1546
1599
|
<section class="home" id="home">
|
|
1547
1600
|
<svg class="ridge hero-ridge" viewBox="0 40 900 340" preserveAspectRatio="none" aria-hidden="true" focusable="false">
|
|
1548
1601
|
<g class="rg rg-0"><use href="#rg0"/></g>
|
|
@@ -1554,13 +1607,12 @@ footer{margin-top:clamp(72px,12vh,120px);border-top:1px solid var(--line);paddin
|
|
|
1554
1607
|
<div class="home-inner">
|
|
1555
1608
|
<div class="hero-split">
|
|
1556
1609
|
<div class="hero-lede">
|
|
1557
|
-
<p class="
|
|
1558
|
-
<
|
|
1559
|
-
<
|
|
1560
|
-
<p class="hero-sub rv">Eleven built-in EVM chains, Solana, Bitcoin, Canton reads and the Polymarket venue share one control plane; registered EVM chains extend it. Hosted Oracle reads state, prices routes and prepares unsigned artifacts without receiving a key. Your wallet signs.</p>
|
|
1610
|
+
<p class="home-kicker rv">control plane between AI and on-chain action</p>
|
|
1611
|
+
<h1 class="home-title rv" data-split>Trade, build, mint, scan across <em>15+</em> chains</h1>
|
|
1612
|
+
<p class="hero-sub rv">AI agents execute. You sign. Oracle is the control plane between AI and on-chain action across 15+ chains, inside any MCP client. Public routing stays unsigned. Self-hosted execution stays local, owner-gated, bounded, and receipt-verified.</p>
|
|
1561
1613
|
<div class="home-actions">
|
|
1562
|
-
<a class="enter-cta primary" href="
|
|
1563
|
-
<a class="enter-cta ghost" href="
|
|
1614
|
+
<a class="enter-cta primary" href="/download/">Download desktop</a>
|
|
1615
|
+
<a class="enter-cta ghost" href="/what-it-does/">How Oracle works</a>
|
|
1564
1616
|
</div>
|
|
1565
1617
|
<p class="hero-note-line"><span>macOS · Windows · Linux</span><i class="hero-note-sep" aria-hidden="true">·</i><span>desktop app or public CLI</span></p>
|
|
1566
1618
|
</div>
|
|
@@ -1580,9 +1632,9 @@ footer{margin-top:clamp(72px,12vh,120px);border-top:1px solid var(--line);paddin
|
|
|
1580
1632
|
poster="assets/hero/orb-poster.jpg?v=2026080623"
|
|
1581
1633
|
muted loop playsinline autoplay preload="metadata"
|
|
1582
1634
|
aria-label="Oracle mark">
|
|
1583
|
-
<source src="assets/hero/orb.webm?v=2026080623" type="video/webm">
|
|
1635
|
+
<source src="/assets/hero/orb.webm?v=2026080623" type="video/webm">
|
|
1584
1636
|
</video>
|
|
1585
|
-
<img id="orb-still" src="assets/hero/orb-poster.jpg?v=2026080623" alt="Oracle mark" width="900" height="900" loading="eager" fetchpriority="high" decoding="async">
|
|
1637
|
+
<img id="orb-still" src="/assets/hero/orb-poster.jpg?v=2026080623" alt="Oracle mark" width="900" height="900" loading="eager" fetchpriority="high" decoding="async">
|
|
1586
1638
|
</div>
|
|
1587
1639
|
<figcaption>the future is agentic</figcaption>
|
|
1588
1640
|
</figure>
|
|
@@ -1614,746 +1666,104 @@ footer{margin-top:clamp(72px,12vh,120px);border-top:1px solid var(--line);paddin
|
|
|
1614
1666
|
|
|
1615
1667
|
<div class="home-stats rv" aria-label="Oracle surface metrics">
|
|
1616
1668
|
<div class="home-stat"><b id="hero-protocol-count" data-count="221">221</b><span>protocols / venues wired</span></div>
|
|
1617
|
-
<div class="home-stat"><b id="hero-provider-count" data-count="
|
|
1618
|
-
<div class="home-stat"><b id="hero-op-count" data-count="
|
|
1669
|
+
<div class="home-stat"><b id="hero-provider-count" data-count="138">138</b><span>data providers</span></div>
|
|
1670
|
+
<div class="home-stat"><b id="hero-op-count" data-count="605">605</b><span>data operations</span></div>
|
|
1619
1671
|
<div class="home-stat"><b id="hero-chain-count">15 + EVM</b><span>working chain / venue surfaces</span></div>
|
|
1620
1672
|
</div>
|
|
1621
|
-
<p class="hero-cue" aria-hidden="true"><span></span> scroll · 02 the read</p>
|
|
1622
|
-
</div>
|
|
1623
|
-
</section>
|
|
1624
|
-
|
|
1625
|
-
<!-- ── 02 · the thesis. A deliberately quiet passage: big type, long gaps,
|
|
1626
|
-
one claim per line. The lines dim until the scroll reaches them, so
|
|
1627
|
-
reading pace and scroll pace are the same thing. ── -->
|
|
1628
|
-
<section class="thesis" id="thesis" aria-labelledby="thesis-title">
|
|
1629
|
-
<p class="thesis-label rv" id="thesis-title">02 — the read</p>
|
|
1630
|
-
<ol class="thesis-lines">
|
|
1631
|
-
<li>A market emits noise continuously.</li>
|
|
1632
|
-
<li>Most tooling hands you <em>more of it.</em></li>
|
|
1633
|
-
<li>Oracle reads the state first — balances, positions, pools, books, venue status.</li>
|
|
1634
|
-
<li>Then it prices routes against each other and holds every value-moving path against policy you set on your own machine.</li>
|
|
1635
|
-
<li>What comes out is an <em>unsigned</em> action you can read before it exists.</li>
|
|
1636
|
-
</ol>
|
|
1637
|
-
<p class="thesis-close rv">Oracle prepares.<br>Your wallet signs.<br>Broadcast stays behind explicit arming.</p>
|
|
1638
|
-
</section>
|
|
1639
|
-
|
|
1640
|
-
<!-- ── 03 · the instrument. The frame pins and the five capability layers
|
|
1641
|
-
resolve on scrub, each sitting on its own ridge line: raw noise at
|
|
1642
|
-
the top, a single routed signal at the bottom. Without JS the frame
|
|
1643
|
-
is a normal static list and every layer is already legible. ── -->
|
|
1644
|
-
<section class="section stack-scene" id="resolve" aria-labelledby="resolve-title">
|
|
1645
|
-
<div class="stack-run">
|
|
1646
|
-
<div class="stack-sticky">
|
|
1647
|
-
<div class="stack-head">
|
|
1648
|
-
<div>
|
|
1649
|
-
<p class="section-label rv">03 — the instrument</p>
|
|
1650
|
-
<h2 class="section-title" id="resolve-title" data-split>Noise in. <em>Structure out.</em></h2>
|
|
1651
|
-
</div>
|
|
1652
|
-
<p class="stack-readout"><b data-stack-stage>read</b>five layers · one handoff</p>
|
|
1653
|
-
</div>
|
|
1654
|
-
<ol class="stack-layers">
|
|
1655
|
-
<li class="stack-layer" data-stack-layer="0" data-stage="read">
|
|
1656
|
-
<svg class="ridge layer-ridge" viewBox="0 56 900 120" preserveAspectRatio="none" aria-hidden="true" focusable="false"><g class="rg rg-0"><use href="#rg0"/></g></svg>
|
|
1657
|
-
<div class="stack-idx">01</div>
|
|
1658
|
-
<div class="stack-body">
|
|
1659
|
-
<h3>Read</h3>
|
|
1660
|
-
<p>Portfolio, markets, positions, pools, NFTs, ordinals and venue state are pulled from public RPCs and venue APIs before anything is proposed.</p>
|
|
1661
|
-
</div>
|
|
1662
|
-
<div class="stack-sig">state before opinion</div>
|
|
1663
|
-
</li>
|
|
1664
|
-
<li class="stack-layer" data-stack-layer="1" data-stage="route">
|
|
1665
|
-
<svg class="ridge layer-ridge" viewBox="0 137 900 120" preserveAspectRatio="none" aria-hidden="true" focusable="false"><g class="rg rg-1"><use href="#rg1"/></g></svg>
|
|
1666
|
-
<div class="stack-idx">02</div>
|
|
1667
|
-
<div class="stack-body">
|
|
1668
|
-
<h3>Route</h3>
|
|
1669
|
-
<p>Quotes and bridges normalize into comparable intents, then rank net of cost — so a cheaper headline price with worse slippage cannot win by looking good.</p>
|
|
1670
|
-
</div>
|
|
1671
|
-
<div class="stack-sig">ranked net of cost</div>
|
|
1672
|
-
</li>
|
|
1673
|
-
<li class="stack-layer" data-stack-layer="2" data-stage="bound">
|
|
1674
|
-
<svg class="ridge layer-ridge" viewBox="0 184 900 120" preserveAspectRatio="none" aria-hidden="true" focusable="false"><g class="rg rg-2"><use href="#rg2"/></g></svg>
|
|
1675
|
-
<div class="stack-idx">03</div>
|
|
1676
|
-
<div class="stack-body">
|
|
1677
|
-
<h3>Bound</h3>
|
|
1678
|
-
<p>Chain, spender, destination, amount, TTL and simulation posture are checked locally. Unconfigured means refused; an empty allowlist refuses everything.</p>
|
|
1679
|
-
</div>
|
|
1680
|
-
<div class="stack-sig">fail closed</div>
|
|
1681
|
-
</li>
|
|
1682
|
-
<li class="stack-layer" data-stack-layer="3" data-stage="prepare">
|
|
1683
|
-
<svg class="ridge layer-ridge" viewBox="0 244 900 120" preserveAspectRatio="none" aria-hidden="true" focusable="false"><g class="rg rg-3"><use href="#rg3"/></g></svg>
|
|
1684
|
-
<div class="stack-idx">04</div>
|
|
1685
|
-
<div class="stack-body">
|
|
1686
|
-
<h3>Prepare</h3>
|
|
1687
|
-
<p>The output is an unsigned artifact: what you receive, the expected cost, the calldata shape and which app is being granted permission.</p>
|
|
1688
|
-
</div>
|
|
1689
|
-
<div class="stack-sig">unsigned artifact</div>
|
|
1690
|
-
</li>
|
|
1691
|
-
<li class="stack-layer" data-stack-layer="4" data-stage="sign">
|
|
1692
|
-
<svg class="ridge layer-ridge" viewBox="0 281 900 120" preserveAspectRatio="none" aria-hidden="true" focusable="false"><g class="rg rg-4"><use href="#rg4"/></g></svg>
|
|
1693
|
-
<div class="stack-idx">05</div>
|
|
1694
|
-
<div class="stack-body">
|
|
1695
|
-
<h3>Sign</h3>
|
|
1696
|
-
<p>Your wallet closes the loop. Prepare is not sign, sign is not broadcast, and broadcast needs explicit arming and local signer approval.</p>
|
|
1697
|
-
</div>
|
|
1698
|
-
<div class="stack-sig">you sign</div>
|
|
1699
|
-
</li>
|
|
1700
|
-
</ol>
|
|
1701
|
-
<div class="stack-meter" aria-hidden="true"><i></i></div>
|
|
1702
|
-
</div>
|
|
1703
|
-
</div>
|
|
1704
|
-
<div class="telemetry" aria-hidden="true">
|
|
1705
|
-
<div class="telemetry-track">
|
|
1706
|
-
<span>read state</span><span>price routes</span><span>simulate</span><span class="k">bound by policy</span><span>prepare unsigned</span><span class="k">you sign</span><span>self custody</span><span>no hosted keys</span><span>fail closed</span><span>local signer</span><span>receipts</span>
|
|
1707
|
-
<span>read state</span><span>price routes</span><span>simulate</span><span class="k">bound by policy</span><span>prepare unsigned</span><span class="k">you sign</span><span>self custody</span><span>no hosted keys</span><span>fail closed</span><span>local signer</span><span>receipts</span>
|
|
1708
|
-
<span>read state</span><span>price routes</span><span>simulate</span><span class="k">bound by policy</span><span>prepare unsigned</span><span class="k">you sign</span><span>self custody</span><span>no hosted keys</span><span>fail closed</span><span>local signer</span><span>receipts</span>
|
|
1709
|
-
</div>
|
|
1710
1673
|
</div>
|
|
1711
1674
|
</section>
|
|
1712
|
-
|
|
1713
|
-
<
|
|
1714
|
-
<
|
|
1715
|
-
<p class="section-
|
|
1716
|
-
<
|
|
1717
|
-
|
|
1718
|
-
|
|
1719
|
-
|
|
1720
|
-
|
|
1721
|
-
|
|
1722
|
-
|
|
1723
|
-
|
|
1724
|
-
|
|
1725
|
-
<
|
|
1726
|
-
<span class="evolve-pill on">protocol builder</span>
|
|
1727
|
-
<span class="evolve-pill on">more chains</span>
|
|
1728
|
-
</div>
|
|
1729
|
-
|
|
1730
|
-
<div class="graph-canvas">
|
|
1731
|
-
<div class="orch" aria-label="Oracle multi-profile graph">
|
|
1732
|
-
<div class="row">
|
|
1733
|
-
<div class="node" style="width:220px">
|
|
1734
|
-
<div class="tag">you</div>
|
|
1735
|
-
<div class="name">Input / Command</div>
|
|
1736
|
-
<div class="sub">what you type or ask</div>
|
|
1737
|
-
</div>
|
|
1738
|
-
</div>
|
|
1739
|
-
|
|
1740
|
-
<div class="wires" aria-hidden="true">
|
|
1741
|
-
<svg viewBox="0 0 100 36" preserveAspectRatio="none">
|
|
1742
|
-
<path d="M50 2 V34" pathLength="1"/><circle cx="50" cy="2" r="1.4"/><circle cx="50" cy="34" r="1.4"/>
|
|
1743
|
-
</svg>
|
|
1744
|
-
</div>
|
|
1745
|
-
|
|
1746
|
-
<div class="row">
|
|
1747
|
-
<div class="node hub">
|
|
1748
|
-
<div class="tag">control plane</div>
|
|
1749
|
-
<div class="orbital" aria-hidden="true">
|
|
1750
|
-
<svg viewBox="0 0 100 100">
|
|
1751
|
-
<g class="ring r1"><ellipse cx="50" cy="50" rx="46" ry="16"/></g>
|
|
1752
|
-
<g class="ring r2"><ellipse cx="50" cy="50" rx="46" ry="16" transform="rotate(60 50 50)"/></g>
|
|
1753
|
-
<g class="ring r3"><ellipse cx="50" cy="50" rx="46" ry="16" transform="rotate(120 50 50)"/></g>
|
|
1754
|
-
<circle class="tickring" cx="50" cy="50" r="32"/>
|
|
1755
|
-
<circle class="halo" cx="50" cy="50" r="10"/>
|
|
1756
|
-
<circle class="core" cx="50" cy="50" r="7.5"/>
|
|
1757
|
-
</svg>
|
|
1758
|
-
</div>
|
|
1759
|
-
<div class="name">oracle</div>
|
|
1760
|
-
<div class="sub">route · bound · evolve</div>
|
|
1761
|
-
</div>
|
|
1762
|
-
</div>
|
|
1763
|
-
|
|
1764
|
-
<div class="wires multi" aria-hidden="true">
|
|
1765
|
-
<svg viewBox="0 0 100 44" preserveAspectRatio="none">
|
|
1766
|
-
<path d="M50 2 V12" pathLength="1"/>
|
|
1767
|
-
<path class="w-poly w-2" d="M12.5 42 V20 H50 V12" pathLength="1"/>
|
|
1768
|
-
<path class="w-hl w-3" d="M37.5 42 V20 H50 V12" pathLength="1"/>
|
|
1769
|
-
<path class="w-rh w-4" d="M62.5 42 V20 H50 V12" pathLength="1"/>
|
|
1770
|
-
<path class="w-sol w-5" d="M87.5 42 V20 H50 V12" pathLength="1"/>
|
|
1771
|
-
<circle cx="50" cy="2" r="1.3"/>
|
|
1772
|
-
<circle class="c-poly" cx="12.5" cy="42" r="1.3"/>
|
|
1773
|
-
<circle class="c-hl" cx="37.5" cy="42" r="1.3"/>
|
|
1774
|
-
<circle class="c-rh" cx="62.5" cy="42" r="1.3"/>
|
|
1775
|
-
<circle class="c-sol" cx="87.5" cy="42" r="1.3"/>
|
|
1776
|
-
</svg>
|
|
1777
|
-
</div>
|
|
1778
|
-
|
|
1779
|
-
<div class="row profiles" id="profile-grid">
|
|
1780
|
-
<div class="node route p-poly">
|
|
1781
|
-
<div class="tag">profile</div>
|
|
1782
|
-
<div class="name">polymarket agent</div>
|
|
1783
|
-
<div class="sub">events · arb · markets</div>
|
|
1784
|
-
<div class="chains"><span class="ch">Polymarket <img src="https://icons.llamao.fi/icons/protocols/polymarket?w=24&h=24" alt="" loading="lazy"></span></div>
|
|
1785
|
-
</div>
|
|
1786
|
-
<div class="node route p-hl">
|
|
1787
|
-
<div class="tag">profile</div>
|
|
1788
|
-
<div class="name">hyperliquid agent</div>
|
|
1789
|
-
<div class="sub">perps · hip-3/4 · funding</div>
|
|
1790
|
-
<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">HyperEVM 999 <img src="https://icons.llamao.fi/icons/chains/rsz_hyperliquid?w=24&h=24" alt="" loading="lazy"></span></div>
|
|
1791
|
-
</div>
|
|
1792
|
-
<div class="node route p-rh">
|
|
1793
|
-
<div class="tag">profile</div>
|
|
1794
|
-
<div class="name">robinhood agent</div>
|
|
1795
|
-
<div class="sub">markets · memecoins · nfts</div>
|
|
1796
|
-
<div class="chains"><span class="ch">Robinhood Chain <img src="https://icons.llamao.fi/icons/chains/rsz_robinhood?w=24&h=24" alt="" loading="lazy"></span></div>
|
|
1797
|
-
</div>
|
|
1798
|
-
<div class="node route p-sol">
|
|
1799
|
-
<div class="tag">profile</div>
|
|
1800
|
-
<div class="name">solana agent</div>
|
|
1801
|
-
<div class="sub">jup · lst · lending · mev</div>
|
|
1802
|
-
<div class="chains"><span class="ch">Solana <img src="https://icons.llamao.fi/icons/chains/rsz_solana?w=24&h=24" alt="" loading="lazy"></span></div>
|
|
1803
|
-
</div>
|
|
1804
|
-
<div class="node route p-btc">
|
|
1805
|
-
<div class="tag">profile</div>
|
|
1806
|
-
<div class="name">bitcoin agent</div>
|
|
1807
|
-
<div class="sub">ord · runes · staking · lightning</div>
|
|
1808
|
-
<div class="chains"><span class="ch">Bitcoin <img src="https://icons.llamao.fi/icons/chains/rsz_bitcoin?w=24&h=24" alt="" loading="lazy"></span><span class="ch">inscriptions</span></div>
|
|
1809
|
-
</div>
|
|
1810
|
-
<div class="node route p-stable">
|
|
1811
|
-
<div class="tag">profile</div>
|
|
1812
|
-
<div class="name">stable agent</div>
|
|
1813
|
-
<div class="sub">launches · memecoins</div>
|
|
1814
|
-
<div class="chains"><span class="ch">Stable <img src="https://icons.llamao.fi/icons/chains/rsz_stable?w=24&h=24" alt="" loading="lazy"></span></div>
|
|
1815
|
-
</div>
|
|
1816
|
-
<div class="node route p-base">
|
|
1817
|
-
<div class="tag">profile</div>
|
|
1818
|
-
<div class="name">base agent</div>
|
|
1819
|
-
<div class="sub">swaps · defi · onchain apps</div>
|
|
1820
|
-
<div class="chains"><span class="ch">Base <img src="https://icons.llamao.fi/icons/chains/rsz_base?w=24&h=24" alt="" loading="lazy"></span></div>
|
|
1821
|
-
</div>
|
|
1822
|
-
<div class="node route p-evm">
|
|
1823
|
-
<div class="tag">profile</div>
|
|
1824
|
-
<div class="name">evm / bridge agent</div>
|
|
1825
|
-
<div class="sub">swaps · bridges · lending · restaking</div>
|
|
1826
|
-
<div class="chains"><span class="ch">ETH <img src="https://icons.llamao.fi/icons/chains/rsz_ethereum?w=24&h=24" alt="" loading="lazy"></span><span class="ch">Arb <img src="https://icons.llamao.fi/icons/chains/rsz_arbitrum?w=24&h=24" alt="" loading="lazy"></span><span class="ch">OP <img src="https://icons.llamao.fi/icons/chains/rsz_optimism?w=24&h=24" alt="" loading="lazy"></span><span class="ch">BNB <img src="https://icons.llamao.fi/icons/chains/rsz_binance?w=24&h=24" alt="" loading="lazy"></span><span class="ch">Avax <img src="https://icons.llamao.fi/icons/chains/rsz_avalanche?w=24&h=24" alt="" loading="lazy"></span><span class="ch">Polygon <img src="https://icons.llamao.fi/icons/chains/rsz_polygon?w=24&h=24" alt="" loading="lazy"></span><span class="ch">Abstract <img src="https://icons.llamao.fi/icons/chains/rsz_abstract?w=24&h=24" alt="" loading="lazy"></span><span class="ch ch-add" title="Any EVM chain: register a chainId and RPC, no code change">+ any EVM chain</span></div>
|
|
1827
|
-
</div>
|
|
1828
|
-
</div>
|
|
1829
|
-
|
|
1830
|
-
<div class="wires funnel" aria-hidden="true">
|
|
1831
|
-
<svg viewBox="0 0 100 62" preserveAspectRatio="none">
|
|
1832
|
-
<path class="w-1" d="M6 2 C6 30 50 22 50 60" pathLength="1"/>
|
|
1833
|
-
<path class="w-2" d="M19 2 C19 28 50 26 50 60" pathLength="1"/>
|
|
1834
|
-
<path class="w-3" d="M32 2 C32 34 50 34 50 60" pathLength="1"/>
|
|
1835
|
-
<path class="w-4" d="M45 2 C45 38 50 42 50 60" pathLength="1"/>
|
|
1836
|
-
<path class="w-5" d="M55 2 C55 38 50 42 50 60" pathLength="1"/>
|
|
1837
|
-
<path class="w-3" d="M68 2 C68 34 50 34 50 60" pathLength="1"/>
|
|
1838
|
-
<path class="w-2" d="M81 2 C81 28 50 26 50 60" pathLength="1"/>
|
|
1839
|
-
<path class="w-1" d="M94 2 C94 30 50 22 50 60" pathLength="1"/>
|
|
1840
|
-
<circle cx="50" cy="60" r="1.8"/>
|
|
1841
|
-
</svg>
|
|
1842
|
-
</div>
|
|
1843
|
-
|
|
1844
|
-
<div class="row builder-row">
|
|
1845
|
-
<div class="node route p-build builder-sink">
|
|
1846
|
-
<div class="tag">bottom layer</div>
|
|
1847
|
-
<div class="name">protocol builder</div>
|
|
1848
|
-
<div class="sub">every profile can funnel into new contracts, scripts, checks, deploy prep, and chain-specific scaffolds.</div>
|
|
1849
|
-
<div class="chains"><span class="ch">any EVM · pinned factories · user-signed deploys</span></div>
|
|
1850
|
-
</div>
|
|
1851
|
-
</div>
|
|
1852
|
-
</div>
|
|
1853
|
-
</div>
|
|
1854
|
-
|
|
1855
|
-
|
|
1856
|
-
|
|
1857
|
-
<div class="route-strip">
|
|
1858
|
-
<article class="route-card p-poly">
|
|
1859
|
-
<div class="where">polymarket agent →</div>
|
|
1860
|
-
<h3>Polymarket <img src="https://icons.llamao.fi/icons/protocols/polymarket?w=40&h=40" alt="Polymarket" loading="lazy"></h3>
|
|
1861
|
-
<p>Event markets, sports, arb paths, and prediction flow under bounds you set. CLOB prepare shipped in the public plane.</p>
|
|
1862
|
-
<div class="chips">
|
|
1863
|
-
<span class="chip-s">events</span>
|
|
1864
|
-
<span class="chip-s">arb</span>
|
|
1865
|
-
<span class="chip-s">clob prepare</span>
|
|
1866
|
-
</div>
|
|
1867
|
-
</article>
|
|
1868
|
-
<article class="route-card p-hl">
|
|
1869
|
-
<div class="where">hyperliquid agent →</div>
|
|
1870
|
-
<h3>Hyperliquid <img src="https://icons.llamao.fi/icons/protocols/hyperliquid?w=40&h=40" alt="Hyperliquid" loading="lazy"></h3>
|
|
1871
|
-
<p>Native perps, HIP-3/4 asset resolve, funding, event risk, and HyperEVM when you need HL's EVM surface.</p>
|
|
1872
|
-
<div class="chips">
|
|
1873
|
-
<span class="chip-s">perps</span>
|
|
1874
|
-
<span class="chip-s">HIP-3/4</span>
|
|
1875
|
-
<span class="chip-s">HyperEVM</span>
|
|
1876
|
-
</div>
|
|
1877
|
-
</article>
|
|
1878
|
-
<article class="route-card p-rh">
|
|
1879
|
-
<div class="where">robinhood agent →</div>
|
|
1880
|
-
<h3>Robinhood <img src="https://icons.llamao.fi/icons/chains/rsz_robinhood?w=40&h=40" alt="Robinhood Chain" loading="lazy"></h3>
|
|
1881
|
-
<p>RH Chain markets, memecoins, NFTs, names, token scans, and chain-local routing.</p>
|
|
1882
|
-
<div class="chips">
|
|
1883
|
-
<span class="chip-s">markets</span>
|
|
1884
|
-
<span class="chip-s">memecoins</span>
|
|
1885
|
-
<span class="chip-s">NFTs</span>
|
|
1886
|
-
<span class="chip-s">rh chain</span>
|
|
1887
|
-
</div>
|
|
1888
|
-
</article>
|
|
1889
|
-
<article class="route-card p-sol">
|
|
1890
|
-
<div class="where">solana agent →</div>
|
|
1891
|
-
<h3>Solana <img src="https://icons.llamao.fi/icons/chains/rsz_solana?w=40&h=40" alt="Solana" loading="lazy"></h3>
|
|
1892
|
-
<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>
|
|
1893
|
-
<div class="chips">
|
|
1894
|
-
<span class="chip-s">Jupiter</span>
|
|
1895
|
-
<span class="chip-s">swaps</span>
|
|
1896
|
-
<span class="chip-s">decoded ix</span>
|
|
1897
|
-
</div>
|
|
1898
|
-
</article>
|
|
1899
|
-
<article class="route-card p-btc">
|
|
1900
|
-
<div class="where">bitcoin agent →</div>
|
|
1901
|
-
<h3>Bitcoin <img src="https://icons.llamao.fi/icons/chains/rsz_bitcoin?w=40&h=40" alt="Bitcoin" loading="lazy"></h3>
|
|
1902
|
-
<p>Ordinals, runes, Babylon staking, Lightning, mining economics, Liquid and Stacks. Every PSBT input carries proven provenance — fees are computed, not asserted.</p>
|
|
1903
|
-
<div class="chips">
|
|
1904
|
-
<span class="chip-s">ordinals</span>
|
|
1905
|
-
<span class="chip-s">runes</span>
|
|
1906
|
-
<span class="chip-s">psbt proof</span>
|
|
1907
|
-
</div>
|
|
1908
|
-
</article>
|
|
1909
|
-
<article class="route-card p-evm">
|
|
1910
|
-
<div class="where">evm / bridge agent →</div>
|
|
1911
|
-
<h3>Multi-chain EVM <img src="https://icons.llamao.fi/icons/chains/rsz_ethereum?w=40&h=40" alt="Ethereum" loading="lazy"></h3>
|
|
1912
|
-
<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>
|
|
1913
|
-
<div class="chips">
|
|
1914
|
-
<span class="chip-s">evm-swap</span>
|
|
1915
|
-
<span class="chip-s">evm-bridge</span>
|
|
1916
|
-
<span class="chip-s">best route</span>
|
|
1917
|
-
</div>
|
|
1918
|
-
</article>
|
|
1919
|
-
<article class="route-card p-nft">
|
|
1920
|
-
<div class="where">nft agent →</div>
|
|
1921
|
-
<h3>Cross-chain NFTs <img src="assets/protocols/opensea.png" alt="OpenSea" loading="lazy"></h3>
|
|
1922
|
-
<p>Research floors, holdings and PnL across 26 OpenSea chains; prepare OpenSea list, mint and cancel on six EVM networks. Ordinals via Satflow with proven PSBT provenance, Solana via Magic Eden. Reads come first, then artifacts prepared for your signature.</p>
|
|
1923
|
-
<div class="chips">
|
|
1924
|
-
<span class="chip-s">list</span>
|
|
1925
|
-
<span class="chip-s">buy</span>
|
|
1926
|
-
<span class="chip-s">floor · pnl</span>
|
|
1927
|
-
</div>
|
|
1928
|
-
</article>
|
|
1929
|
-
<article class="route-card p-stable">
|
|
1930
|
-
<div class="where">stable agent →</div>
|
|
1931
|
-
<h3>Stable <img src="https://icons.llamao.fi/icons/chains/rsz_stable?w=40&h=40" alt="Stable" loading="lazy"></h3>
|
|
1932
|
-
<p>Stable mainnet launch radar, memecoins, USDT0 gas, and venue ops, scanned straight from the chain's own logs.</p>
|
|
1933
|
-
<div class="chips">
|
|
1934
|
-
<span class="chip-s">launches</span>
|
|
1935
|
-
<span class="chip-s">memecoins</span>
|
|
1936
|
-
<span class="chip-s">USDT0 gas</span>
|
|
1937
|
-
<span class="chip-s">Stable</span>
|
|
1938
|
-
</div>
|
|
1939
|
-
</article>
|
|
1940
|
-
<article class="route-card p-build">
|
|
1941
|
-
<div class="build-copy">
|
|
1942
|
-
<div>
|
|
1943
|
-
<div class="where">protocol builder →</div>
|
|
1944
|
-
<h3>Build protocols</h3>
|
|
1945
|
-
<p>Scaffold contracts, run security gates (Foundry + static checks), prepare unsigned deploys through pinned factories. You still sign every deploy.</p>
|
|
1946
|
-
<div class="chips">
|
|
1947
|
-
<span class="chip-s">scaffold</span>
|
|
1948
|
-
<span class="chip-s">security gate</span>
|
|
1949
|
-
<span class="chip-s">unsigned deploy</span>
|
|
1950
|
-
</div>
|
|
1951
|
-
</div>
|
|
1952
|
-
<figure class="build-bench">
|
|
1953
|
-
<img src="assets/protocol-build-time.jpg" width="1280" height="720" alt="Captured EVM protocol build-time comparison for a safe ERC-721 drop using Oracle-assisted and plain harness runs in one controlled trial." loading="lazy" decoding="async">
|
|
1954
|
-
<figcaption>captured controlled comparison · safe ERC-721 drop · repository benchmark asset</figcaption>
|
|
1955
|
-
</figure>
|
|
1956
|
-
</div>
|
|
1957
|
-
</article>
|
|
1958
|
-
</div>
|
|
1959
|
-
<div class="why-band">
|
|
1960
|
-
<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>
|
|
1961
|
-
</div>
|
|
1962
|
-
</div>
|
|
1963
|
-
|
|
1964
|
-
<div class="band-head rv">
|
|
1965
|
-
<p class="eyebrow">Custody</p>
|
|
1966
|
-
<h2>The wallet stays yours.</h2>
|
|
1967
|
-
</div>
|
|
1968
|
-
<div class="moat-grid rv" style="margin-top:28px">
|
|
1969
|
-
<article class="moat-card">
|
|
1970
|
-
<div class="n">bound grants</div>
|
|
1971
|
-
<h3>Wallet with temporary agent permission</h3>
|
|
1972
|
-
<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>
|
|
1675
|
+
<section class="section" id="steps">
|
|
1676
|
+
<p class="section-label rv">What it does</p>
|
|
1677
|
+
<h2 class="section-title rv" data-split>Five steps. <em>You sign the last one.</em></h2>
|
|
1678
|
+
<p class="section-lede rv">Your agent proposes. Oracle checks it against policy you set locally, then hands your wallet something you can read before it exists.</p>
|
|
1679
|
+
<div class="steps-grid rv">
|
|
1680
|
+
<article class="step-card">
|
|
1681
|
+
<div class="n">01 · read</div>
|
|
1682
|
+
<h3>State before opinion</h3>
|
|
1683
|
+
<p>Balances, positions, pools, books and venue status, pulled from public RPCs before anything is proposed.</p>
|
|
1684
|
+
</article>
|
|
1685
|
+
<article class="step-card">
|
|
1686
|
+
<div class="n">02 · route</div>
|
|
1687
|
+
<h3>Ranked net of cost</h3>
|
|
1688
|
+
<p>Quotes and bridges compared like for like, so a cheaper headline price with worse slippage cannot win by looking good.</p>
|
|
1973
1689
|
</article>
|
|
1974
|
-
<article class="
|
|
1975
|
-
<div class="n">
|
|
1976
|
-
<h3>
|
|
1977
|
-
<p>
|
|
1690
|
+
<article class="step-card">
|
|
1691
|
+
<div class="n">03 · bound</div>
|
|
1692
|
+
<h3>Fail closed</h3>
|
|
1693
|
+
<p>Chain, spender, destination, amount and expiry checked on your machine. Unconfigured means refused.</p>
|
|
1978
1694
|
</article>
|
|
1979
|
-
<article class="
|
|
1980
|
-
<div class="n">
|
|
1981
|
-
<h3>
|
|
1982
|
-
<p>
|
|
1695
|
+
<article class="step-card">
|
|
1696
|
+
<div class="n">04 · prepare</div>
|
|
1697
|
+
<h3>An unsigned artifact</h3>
|
|
1698
|
+
<p>What you receive, the expected cost, and which app is being granted permission. Readable before it exists.</p>
|
|
1983
1699
|
</article>
|
|
1984
|
-
<article class="
|
|
1985
|
-
<div class="n">
|
|
1986
|
-
<h3>
|
|
1987
|
-
<p>
|
|
1700
|
+
<article class="step-card">
|
|
1701
|
+
<div class="n">05 · sign</div>
|
|
1702
|
+
<h3>Your wallet closes the loop</h3>
|
|
1703
|
+
<p>Public routing stops at prepare. Self-hosted signing and broadcast stay local, owner-gated, bounded, and receipt-verified.</p>
|
|
1988
1704
|
</article>
|
|
1989
1705
|
</div>
|
|
1706
|
+
<p class="cmd-hint rv section-more"><a href="/what-it-does/">See the full sequence, step by step →</a></p>
|
|
1707
|
+
</section>
|
|
1990
1708
|
|
|
1991
|
-
|
|
1992
|
-
|
|
1993
|
-
<h2 class="section-title rv" data-split>
|
|
1994
|
-
<p class="section-lede rv">Oracle installs into
|
|
1995
|
-
<div class="
|
|
1996
|
-
<span>
|
|
1997
|
-
<div class="
|
|
1998
|
-
|
|
1999
|
-
<button class="btn btn-claude" onclick="navigator.clipboard.writeText('oracle mcp install claude-code');var b=this;b.textContent='Copied ✓';setTimeout(function(){b.textContent='Claude'},1500)">Claude</button>
|
|
2000
|
-
<button class="btn btn-chatgpt" onclick="navigator.clipboard.writeText('oracle mcp install chatgpt');var b=this;b.textContent='Copied ✓';setTimeout(function(){b.textContent='ChatGPT'},1500)">ChatGPT</button>
|
|
2001
|
-
<button class="btn btn-cursor" onclick="navigator.clipboard.writeText('oracle mcp install cursor');var b=this;b.textContent='Copied ✓';setTimeout(function(){b.textContent='Cursor'},1500)">Cursor</button>
|
|
2002
|
-
<button class="btn btn-vscode" onclick="navigator.clipboard.writeText('oracle mcp install claude-desktop');var b=this;b.textContent='Copied ✓';setTimeout(function(){b.textContent='Claude Desktop'},1500)">Claude Desktop</button>
|
|
2003
|
-
<button class="btn btn-copilot" onclick="navigator.clipboard.writeText('oracle mcp install codex');var b=this;b.textContent='Copied ✓';setTimeout(function(){b.textContent='Codex'},1500)">Codex</button>
|
|
2004
|
-
<button class="btn" onclick="navigator.clipboard.writeText('oracle mcp install copilot');var b=this;b.textContent='Copied ✓';setTimeout(function(){b.textContent='Copilot'},1500)">Copilot</button>
|
|
2005
|
-
<button class="btn" onclick="navigator.clipboard.writeText('oracle mcp install vscode');var b=this;b.textContent='Copied ✓';setTimeout(function(){b.textContent='VS Code'},1500)">VS Code</button>
|
|
2006
|
-
<button class="btn" onclick="navigator.clipboard.writeText('oracle mcp install generic');var b=this;b.textContent='Copied ✓';setTimeout(function(){b.textContent='Generic MCP'},1500)">Generic MCP</button>
|
|
2007
|
-
</div>
|
|
2008
|
-
<p class="cmd-hint">Click copies the install command — paste it in your terminal</p>
|
|
2009
|
-
</div>
|
|
2010
|
-
<div class="agent-prompts rv">
|
|
2011
|
-
<figure class="agent-panel is-claude" data-agent-seq
|
|
2012
|
-
data-ask="is this token safe to buy on base?">
|
|
2013
|
-
<div class="agent-box">
|
|
2014
|
-
<div class="agent-line"><span class="agent-typed" data-ph="Do anything"></span><span class="agent-caret"></span></div>
|
|
2015
|
-
<div class="agent-bar">
|
|
2016
|
-
<svg class="ai" viewBox="0 0 24 24" aria-hidden="true"><path d="M12 5v14M5 12h14"/></svg>
|
|
2017
|
-
<span class="ca-access"><svg class="ai" viewBox="0 0 24 24" aria-hidden="true"><path d="M8.2 3h7.6L21 8.2v7.6L15.8 21H8.2L3 15.8V8.2z"/><path d="M12 8v5"/><path d="M12 16.2v.1"/></svg>Full access</span>
|
|
2018
|
-
<span class="agent-spacer"></span>
|
|
2019
|
-
<span class="ca-model"><b>5.6 Sol</b><span>Extra High</span><svg class="ai" viewBox="0 0 24 24" aria-hidden="true"><path d="M6 9l6 6 6-6"/></svg></span>
|
|
2020
|
-
<svg class="ai" viewBox="0 0 24 24" aria-hidden="true"><rect x="9" y="3" width="6" height="11" rx="3"/><path d="M5 11a7 7 0 0 0 14 0M12 18v3"/></svg>
|
|
2021
|
-
<span class="ca-orb"><svg viewBox="0 0 24 24" aria-hidden="true"><path d="M5 10v4M9 6v12M13 8v8M17 10v4M21 11v2"/></svg></span>
|
|
2022
|
-
</div>
|
|
2023
|
-
</div>
|
|
2024
|
-
<p class="agent-out" hidden><b>PASS</b> metadata · <b>PASS</b> liquidity · <b>PASS</b> sellable · unknown is not pass</p>
|
|
2025
|
-
<noscript><p class="agent-ask">is this token safe to buy on base?</p></noscript>
|
|
2026
|
-
</figure>
|
|
2027
|
-
<figure class="agent-panel is-codex" data-agent-seq
|
|
2028
|
-
data-ask="move 5k usdc into weth, cheapest route">
|
|
2029
|
-
<div class="cx-chips">
|
|
2030
|
-
<span class="cx-chip"><svg class="ai" viewBox="0 0 24 24" aria-hidden="true"><rect x="3" y="5" width="18" height="12" rx="2"/><path d="M2 20h20"/></svg>Local</span>
|
|
2031
|
-
<span class="cx-chip"><svg class="ai" viewBox="0 0 24 24" aria-hidden="true"><path d="M3 7a2 2 0 0 1 2-2h4l2 2h8a2 2 0 0 1 2 2v8a2 2 0 0 1-2 2H5a2 2 0 0 1-2-2z"/></svg>clawd-local</span>
|
|
2032
|
-
<span class="cx-chip cx-sq"><svg class="ai" viewBox="0 0 24 24" aria-hidden="true"><path d="M3 7a2 2 0 0 1 2-2h4l2 2h8a2 2 0 0 1 2 2v8a2 2 0 0 1-2 2H5a2 2 0 0 1-2-2z"/><path d="M12 11v5M9.5 13.5h5"/></svg></span>
|
|
2033
|
-
</div>
|
|
2034
|
-
<div class="agent-box">
|
|
2035
|
-
<div class="agent-line"><span class="agent-typed" data-ph="Describe a task or ask a question"></span><span class="agent-caret"></span></div>
|
|
2036
|
-
<svg class="ai cx-return" viewBox="0 0 24 24" aria-hidden="true"><path d="M20 6v5a3 3 0 0 1-3 3H5"/><path d="M8 11l-3 3 3 3"/></svg>
|
|
2037
|
-
</div>
|
|
2038
|
-
<div class="agent-bar">
|
|
2039
|
-
<span class="cx-auto">Auto</span>
|
|
2040
|
-
<svg class="ai" viewBox="0 0 24 24" aria-hidden="true"><path d="M12 5v14M5 12h14"/></svg>
|
|
2041
|
-
<svg class="ai" viewBox="0 0 24 24" aria-hidden="true"><rect x="9" y="3" width="6" height="11" rx="3"/><path d="M5 11a7 7 0 0 0 14 0M12 18v3"/></svg>
|
|
2042
|
-
<svg class="ai" viewBox="0 0 24 24" aria-hidden="true"><path d="M6 9l6 6 6-6"/></svg>
|
|
2043
|
-
<span class="agent-spacer"></span>
|
|
2044
|
-
<span class="cx-model">Fable 5</span>
|
|
2045
|
-
<span class="cx-eff">High</span>
|
|
2046
|
-
<span class="cx-ring"></span>
|
|
2047
|
-
</div>
|
|
2048
|
-
<p class="agent-out" hidden>best route across available source adapters · quoted live · <b>unsigned</b> — your wallet signs</p>
|
|
2049
|
-
<noscript><p class="agent-ask">move 5k usdc into weth, cheapest route</p></noscript>
|
|
2050
|
-
</figure>
|
|
2051
|
-
</div>
|
|
2052
|
-
<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>
|
|
2053
|
-
<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>
|
|
2054
|
-
<div class="venues rv">
|
|
2055
|
-
<div class="venues-head"><span>models // harnesses</span><span><b>bring your own model</b> · oracle is the control plane</span></div>
|
|
2056
|
-
<div class="marquee"><div class="track" id="llm-track"></div></div>
|
|
1709
|
+
<section class="section" id="reach">
|
|
1710
|
+
<p class="section-label rv">Where it works</p>
|
|
1711
|
+
<h2 class="section-title rv" data-split>Your agent. <em>Your chains.</em></h2>
|
|
1712
|
+
<p class="section-lede rv">Oracle installs into any MCP client and operates across 15+ chains and venues. Register any extra EVM chain with a chain id and an RPC.</p>
|
|
1713
|
+
<div class="venues rv" id="protocol-marquee" aria-label="Supported protocols and venues">
|
|
1714
|
+
<div class="venues-head"><span>protocol surface</span><b>221 protocols and venues</b></div>
|
|
1715
|
+
<div class="marquee"><div class="track" id="proto-track-a"></div></div>
|
|
1716
|
+
<div class="marquee rev"><div class="track" id="proto-track-b"></div></div>
|
|
2057
1717
|
</div>
|
|
2058
|
-
|
|
2059
|
-
<
|
|
2060
|
-
|
|
2061
|
-
|
|
2062
|
-
|
|
2063
|
-
|
|
2064
|
-
|
|
2065
|
-
<span class="teams-node"><b>Sentiment</b><i>model</i></span>
|
|
2066
|
-
<span class="teams-arrow">→</span>
|
|
2067
|
-
<span class="teams-node"><b>Strategy</b><i>model</i></span>
|
|
2068
|
-
<span class="teams-arrow">→</span>
|
|
2069
|
-
<span class="teams-node"><b>Risk</b><i>policy</i></span>
|
|
2070
|
-
<span class="teams-arrow">→</span>
|
|
2071
|
-
<span class="teams-node is-terminal"><b>Executor</b><i>operator</i></span>
|
|
2072
|
-
</div>
|
|
2073
|
-
<div class="selfcustody-grid">
|
|
2074
|
-
<div>
|
|
2075
|
-
<h4>The shape is compiled, not suggested</h4>
|
|
2076
|
-
<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>
|
|
2077
|
-
</div>
|
|
2078
|
-
<div>
|
|
2079
|
-
<h4>Autonomy is opt-in by construction</h4>
|
|
2080
|
-
<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>
|
|
2081
|
-
</div>
|
|
2082
|
-
<div>
|
|
2083
|
-
<h4>Same team, same hash, every machine</h4>
|
|
2084
|
-
<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>
|
|
2085
|
-
</div>
|
|
2086
|
-
<div>
|
|
2087
|
-
<h4>Still prepare-only at the end</h4>
|
|
2088
|
-
<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>
|
|
1718
|
+
<div class="reach-cols rv">
|
|
1719
|
+
<div>
|
|
1720
|
+
<div class="venues-head"><span>clients</span></div>
|
|
1721
|
+
<div class="reach-chips">
|
|
1722
|
+
<span>Claude</span><span>ChatGPT</span><span>Cursor</span><span>Codex</span>
|
|
1723
|
+
<span>VS Code</span><span>Copilot</span><span>Telegram</span><span>Discord</span>
|
|
1724
|
+
<span>WhatsApp</span><span>Signal</span><span>Any MCP client</span>
|
|
2089
1725
|
</div>
|
|
2090
1726
|
</div>
|
|
2091
|
-
<
|
|
2092
|
-
|
|
2093
|
-
|
|
2094
|
-
|
|
2095
|
-
|
|
2096
|
-
|
|
2097
|
-
<
|
|
2098
|
-
<p>The CLI and desktop app are public clients. Hosted/keyless services may read and prepare unsigned artifacts, but they receive no wallet key. Signing stays with your wallet or an optional owner-operated local signer.</p>
|
|
2099
|
-
</div>
|
|
2100
|
-
<div>
|
|
2101
|
-
<h4>Hosted keys never reach Oracle</h4>
|
|
2102
|
-
<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>
|
|
2103
|
-
</div>
|
|
2104
|
-
<div>
|
|
2105
|
-
<h4>Hosted wallets sign outside Oracle</h4>
|
|
2106
|
-
<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>
|
|
2107
|
-
</div>
|
|
2108
|
-
<div>
|
|
2109
|
-
<h4>Nothing to seize, nothing to leak</h4>
|
|
2110
|
-
<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>
|
|
1727
|
+
<div>
|
|
1728
|
+
<div class="venues-head"><span>chains and venues</span></div>
|
|
1729
|
+
<div class="reach-chips">
|
|
1730
|
+
<span>Ethereum</span><span>Solana</span><span>Bitcoin</span><span>Hyperliquid</span>
|
|
1731
|
+
<span>Base</span><span>Arbitrum</span><span>Optimism</span><span>Polygon</span>
|
|
1732
|
+
<span>BNB Chain</span><span>Avalanche</span><span>HyperEVM</span><span>Polymarket</span>
|
|
1733
|
+
<span>Robinhood</span><span>Stable</span><span>Abstract</span><span>+ any EVM</span>
|
|
2111
1734
|
</div>
|
|
2112
1735
|
</div>
|
|
2113
1736
|
</div>
|
|
1737
|
+
<p class="cmd-hint rv section-more"><a href="/where-it-works/">Every chain and what Oracle can do on it →</a></p>
|
|
1738
|
+
</section>
|
|
2114
1739
|
|
|
2115
|
-
|
|
2116
|
-
|
|
2117
|
-
|
|
2118
|
-
|
|
2119
|
-
|
|
2120
|
-
|
|
2121
|
-
|
|
2122
|
-
|
|
2123
|
-
|
|
2124
|
-
|
|
2125
|
-
|
|
2126
|
-
|
|
2127
|
-
|
|
2128
|
-
|
|
2129
|
-
|
|
2130
|
-
|
|
2131
|
-
<div class="atlas-count"><span id="atlas-protocol-count">110</span></div>
|
|
2132
|
-
<p class="atlas-sub">Featured logo-rail subset. The source-backed 221 protocol and venue total remains in the hero.</p>
|
|
2133
|
-
<div class="atlas-ledger">
|
|
2134
|
-
<div><span>quote / route</span><b id="atlas-route-count">0</b></div>
|
|
2135
|
-
<div><span>prepare / policy</span><b id="atlas-prepare-count">0</b></div>
|
|
2136
|
-
<div><span>featured chains</span><b id="atlas-chain-count">13</b></div>
|
|
2137
|
-
<div><span>custody</span><b>self</b></div>
|
|
2138
|
-
</div>
|
|
2139
|
-
</div>
|
|
2140
|
-
</aside>
|
|
2141
|
-
<div class="motion-main">
|
|
2142
|
-
<div class="toolbelt" aria-label="What the operator stack does">
|
|
2143
|
-
<span>read state</span><span>price routes</span><span>prepare unsigned</span><span>enforce policy</span><span>you sign</span>
|
|
2144
|
-
</div>
|
|
2145
|
-
<div class="operator-grid" id="protocol-atlas-grid" aria-live="polite"></div>
|
|
2146
|
-
</div>
|
|
2147
|
-
</div>
|
|
2148
|
-
<div class="venues rv">
|
|
2149
|
-
<div class="venues-head"><span>protocols // venues</span></div>
|
|
2150
|
-
<div class="marquee"><div class="track" id="proto-track-a"></div></div>
|
|
2151
|
-
<div class="marquee rev"><div class="track" id="proto-track-b"></div></div>
|
|
2152
|
-
</div>
|
|
2153
|
-
</section>
|
|
2154
|
-
|
|
2155
|
-
|
|
2156
|
-
<div class="strategy-surface rv" id="strategies" aria-labelledby="strategies-title">
|
|
2157
|
-
<div class="strategy-head">
|
|
2158
|
-
<div>
|
|
2159
|
-
<div class="strategy-kicker">Agentic strategies</div>
|
|
2160
|
-
<h3 id="strategies-title">Move liquidity. Bound the risk.</h3>
|
|
2161
|
-
</div>
|
|
2162
|
-
<p>Oracle reads live markets, checks policy, and prepares unsigned actions. The cards below are the main shipped surfaces, not a roadmap.</p>
|
|
2163
|
-
</div>
|
|
2164
|
-
<figure class="route-proof rv">
|
|
2165
|
-
<video id="agent-session" width="1280" height="720"
|
|
2166
|
-
poster="assets/hero/agent-session-poster.jpg"
|
|
2167
|
-
muted loop playsinline preload="none"
|
|
2168
|
-
aria-label="Oracle agent session: swap ranked net of cost, NFT mint pipeline, protocol scaffold. You sign.">
|
|
2169
|
-
<source src="assets/hero/agent-session.webm" type="video/webm">
|
|
2170
|
-
<source src="assets/hero/agent-session.mp4" type="video/mp4">
|
|
2171
|
-
</video>
|
|
2172
|
-
<img id="route-still" src="assets/hero/agent-session-poster.jpg" alt="Oracle agent session showing a route comparison, NFT mint pipeline, and protocol scaffold awaiting user review" width="1280" height="720" loading="lazy" decoding="async">
|
|
2173
|
-
<figcaption>swap · mint · scaffold · you sign</figcaption>
|
|
2174
|
-
</figure>
|
|
2175
|
-
<figure class="route-proof rv" style="margin-top:18px">
|
|
2176
|
-
<svg viewBox="0 0 868 456" preserveAspectRatio="xMidYMid meet" class="route-tree" aria-label="Oracle routing tree">
|
|
2177
|
-
<style>
|
|
2178
|
-
.route-tree text { fill:#f4f8fc; font-size:15px; font-weight:600; letter-spacing:.02em; paint-order:stroke; stroke:#080d15; stroke-width:2px; stroke-linejoin:round; }
|
|
2179
|
-
.route-tree rect { fill:#111d2b; stroke:rgba(124,196,255,.72); }
|
|
2180
|
-
.route-tree line { stroke:#8bd2ff; stroke-dasharray:20 8; animation:flow-down 3s linear infinite; opacity:.92; }
|
|
2181
|
-
@keyframes flow-down { to { stroke-dashoffset: -56; } }
|
|
2182
|
-
</style>
|
|
2183
|
-
<defs>
|
|
2184
|
-
<marker id="arrow-t2" markerWidth="8" markerHeight="6" refX="0" refY="3" orient="auto"><path d="M0 0l8 3L0 6z" fill="var(--blue)" opacity=".8"/></marker>
|
|
2185
|
-
</defs>
|
|
2186
|
-
<rect x="334" y="30" width="200" height="40" rx="8" fill="rgba(124,196,255,.1)" stroke="var(--blue)" stroke-width="1.5"/>
|
|
2187
|
-
<text x="434" y="55" text-anchor="middle" fill="var(--warm)" font-family="var(--mono)" font-size="13">oracle route swap</text>
|
|
2188
|
-
<line x1="434" y1="70" x2="434" y2="110" stroke="var(--blue)" stroke-width="2" opacity=".8"/>
|
|
2189
|
-
<line x1="434" y1="110" x2="110" y2="160" stroke="var(--blue)" stroke-width="1.5" marker-end="url(#arrow-t2)" opacity=".8"/>
|
|
2190
|
-
<line x1="434" y1="110" x2="270" y2="160" stroke="var(--blue)" stroke-width="1.5" marker-end="url(#arrow-t2)" opacity=".8"/>
|
|
2191
|
-
<line x1="434" y1="110" x2="434" y2="160" stroke="var(--blue)" stroke-width="1.5" marker-end="url(#arrow-t2)" opacity=".8"/>
|
|
2192
|
-
<line x1="434" y1="110" x2="598" y2="160" stroke="var(--blue)" stroke-width="1.5" marker-end="url(#arrow-t2)" opacity=".8"/>
|
|
2193
|
-
<line x1="434" y1="110" x2="758" y2="160" stroke="var(--blue)" stroke-width="1.5" marker-end="url(#arrow-t2)" opacity=".8"/>
|
|
2194
|
-
<rect x="35" y="170" width="150" height="34" rx="7" fill="rgba(124,196,255,.08)" stroke="rgba(124,196,255,.25)" stroke-width="1"/>
|
|
2195
|
-
<text x="110" y="192" text-anchor="middle" fill="var(--blue2)" font-family="var(--mono)" font-size="12">paraswap</text>
|
|
2196
|
-
<rect x="195" y="170" width="150" height="34" rx="7" fill="rgba(124,196,255,.08)" stroke="rgba(124,196,255,.25)" stroke-width="1"/>
|
|
2197
|
-
<text x="270" y="192" text-anchor="middle" fill="var(--blue2)" font-family="var(--mono)" font-size="12">cow protocol</text>
|
|
2198
|
-
<rect x="359" y="170" width="150" height="34" rx="7" fill="rgba(124,196,255,.08)" stroke="rgba(124,196,255,.25)" stroke-width="1"/>
|
|
2199
|
-
<text x="434" y="192" text-anchor="middle" fill="var(--blue2)" font-family="var(--mono)" font-size="12">uniswap v3</text>
|
|
2200
|
-
<rect x="523" y="170" width="150" height="34" rx="7" fill="rgba(124,196,255,.08)" stroke="rgba(124,196,255,.25)" stroke-width="1"/>
|
|
2201
|
-
<text x="598" y="192" text-anchor="middle" fill="var(--blue2)" font-family="var(--mono)" font-size="12">lifi</text>
|
|
2202
|
-
<rect x="683" y="170" width="150" height="34" rx="7" fill="rgba(124,196,255,.08)" stroke="rgba(124,196,255,.25)" stroke-width="1"/>
|
|
2203
|
-
<text x="758" y="192" text-anchor="middle" fill="var(--blue2)" font-family="var(--mono)" font-size="12">uniswap v4</text>
|
|
2204
|
-
<line x1="110" y1="204" x2="110" y2="240" stroke="var(--blue)" stroke-width="1.5" opacity=".6"/>
|
|
2205
|
-
<line x1="270" y1="204" x2="270" y2="240" stroke="var(--blue)" stroke-width="1.5" opacity=".6"/>
|
|
2206
|
-
<line x1="434" y1="204" x2="434" y2="240" stroke="var(--blue)" stroke-width="1.5" opacity=".6"/>
|
|
2207
|
-
<line x1="598" y1="204" x2="598" y2="240" stroke="var(--blue)" stroke-width="1.5" opacity=".6"/>
|
|
2208
|
-
<line x1="758" y1="204" x2="758" y2="240" stroke="var(--blue)" stroke-width="1.5" opacity=".6"/>
|
|
2209
|
-
<rect x="334" y="248" width="200" height="40" rx="8" fill="rgba(124,196,255,.15)" stroke="var(--blue)" stroke-width="1.5"/>
|
|
2210
|
-
<text x="434" y="271" text-anchor="middle" fill="var(--warm)" font-family="var(--mono)" font-size="12">ranked net of cost</text>
|
|
2211
|
-
<line x1="110" y1="240" x2="434" y2="248" stroke="var(--blue)" stroke-width="1.5" opacity=".5"/>
|
|
2212
|
-
<line x1="270" y1="240" x2="434" y2="248" stroke="var(--blue)" stroke-width="1.5" opacity=".5"/>
|
|
2213
|
-
<line x1="434" y1="240" x2="434" y2="248" stroke="var(--blue)" stroke-width="1.5" opacity=".5"/>
|
|
2214
|
-
<line x1="598" y1="240" x2="434" y2="248" stroke="var(--blue)" stroke-width="1.5" opacity=".5"/>
|
|
2215
|
-
<line x1="758" y1="240" x2="434" y2="248" stroke="var(--blue)" stroke-width="1.5" opacity=".5"/>
|
|
2216
|
-
</svg>
|
|
2217
|
-
</figure>
|
|
2218
|
-
|
|
2219
|
-
|
|
2220
|
-
|
|
2221
|
-
<div class="strategy-grid">
|
|
2222
|
-
<article class="strategy-card">
|
|
2223
|
-
<div class="mode">quote · route · prepare</div>
|
|
2224
|
-
<h4>Route engine</h4>
|
|
2225
|
-
<p>Price swaps across Paraswap, Cow, Uniswap, LI.FI and more. Oracle ranks net cost and returns unsigned steps.</p>
|
|
2226
|
-
</article>
|
|
2227
|
-
<article class="strategy-card">
|
|
2228
|
-
<div class="mode">bridge · revoke · sign</div>
|
|
2229
|
-
<h4>Cross-chain bridges</h4>
|
|
2230
|
-
<p>deBridge, ChangeNOW, LI.FI, Squid, Stargate, THORChain, Bungee, Connext, Wormhole and Across, with approval checks first.</p>
|
|
2231
|
-
</article>
|
|
2232
|
-
<article class="strategy-card">
|
|
2233
|
-
<div class="mode">perps · funding · hedge</div>
|
|
2234
|
-
<h4>Perps and funding</h4>
|
|
2235
|
-
<p>Hyperliquid, GMX, dYdX, Drift and Vertex. Funding, books, positions and unsigned order prep in one lane.</p>
|
|
2236
|
-
</article>
|
|
2237
|
-
<article class="strategy-card">
|
|
2238
|
-
<div class="mode">LP · vault · stake</div>
|
|
2239
|
-
<h4>LP and yield</h4>
|
|
2240
|
-
<p>Read positions, compare vaults, model fees and lockups, then prepare deposits, exits or range changes.</p>
|
|
2241
|
-
</article>
|
|
2242
|
-
<article class="strategy-card">
|
|
2243
|
-
<div class="mode">farm · hedge · exit</div>
|
|
2244
|
-
<h4>Farming playbooks</h4>
|
|
2245
|
-
<p>Stable loops, collateral-plus-perp hedges and LP incentives, each with exposure, monitor and exit rules.</p>
|
|
2246
|
-
</article>
|
|
2247
|
-
<article class="strategy-card">
|
|
2248
|
-
<div class="mode">split · limit · dca</div>
|
|
2249
|
-
<h4>TWAP and limit orders</h4>
|
|
2250
|
-
<p>Split buys or sells into child orders, cap participation, or stage limit/DCA plans from live depth.</p>
|
|
2251
|
-
</article>
|
|
2252
|
-
<article class="strategy-card">
|
|
2253
|
-
<div class="mode">rebalance · stake · yield</div>
|
|
2254
|
-
<h4>LP rebalance and staking</h4>
|
|
2255
|
-
<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>
|
|
2256
|
-
</article>
|
|
2257
|
-
<article class="strategy-card">
|
|
2258
|
-
<div class="mode">scan · approve · revoke</div>
|
|
2259
|
-
<h4>Approval safety</h4>
|
|
2260
|
-
<p>Find risky allowances, bind exact approval digests, and prepare revokes without treating a scoped scan as full safety.</p>
|
|
2261
|
-
</article>
|
|
2262
|
-
<article class="strategy-card">
|
|
2263
|
-
<div class="mode">source · flag · gate</div>
|
|
2264
|
-
<h4>Contract risk</h4>
|
|
2265
|
-
<p>Heuristic source checks flag access control, reentrancy shape, unlimited approvals, oracle risk and replay hazards.</p>
|
|
2266
|
-
</article>
|
|
2267
|
-
<article class="strategy-card">
|
|
2268
|
-
<div class="mode">snipe · nft · ordinals</div>
|
|
2269
|
-
<h4>Token and NFT radar</h4>
|
|
2270
|
-
<p>EVM token sniper, OpenSea, Magic Eden, Solana NFTs, Bitcoin ordinals and runes feed prepare-only plans.</p>
|
|
2271
|
-
</article>
|
|
2272
|
-
<article class="strategy-card">
|
|
2273
|
-
<div class="mode">events · clob · outcomes</div>
|
|
2274
|
-
<h4>Polymarket and outcomes</h4>
|
|
2275
|
-
<p>Polymarket CLOB, Kalshi data and Hyperliquid HIP-4 outcomes share one event-market research lane.</p>
|
|
2276
|
-
</article>
|
|
2277
|
-
<article class="strategy-card">
|
|
2278
|
-
<div class="mode">budget · pay · cap</div>
|
|
2279
|
-
<h4>x402 budgets</h4>
|
|
2280
|
-
<p>Decode payment requests and prepare exact capped spend. No signature, header or facilitator call is created by default.</p>
|
|
2281
|
-
</article>
|
|
2282
|
-
<article class="strategy-card">
|
|
2283
|
-
<div class="mode">mcp · plugins · tools</div>
|
|
2284
|
-
<h4>Agent harnesses</h4>
|
|
2285
|
-
<p>Claude, Codex, Cursor, ChatGPT and VS Code get the same Oracle tools through MCP and plugin installs.</p>
|
|
2286
|
-
</article>
|
|
2287
|
-
<article class="strategy-card">
|
|
2288
|
-
<div class="mode">xurl · vision · fence</div>
|
|
2289
|
-
<h4>Fenced web tools</h4>
|
|
2290
|
-
<p>xurl, vision and web helpers run through explicit allowlists. The public tool policy still has no shell tool.</p>
|
|
2291
|
-
</article>
|
|
2292
|
-
<article class="strategy-card">
|
|
2293
|
-
<div class="mode">session · rename · fanout</div>
|
|
2294
|
-
<h4>Saved sessions</h4>
|
|
2295
|
-
<p>New chats are remembered, older chats resume from the picker, and selected sessions can rename, delete or fan out.</p>
|
|
2296
|
-
</article>
|
|
2297
|
-
<article class="strategy-card">
|
|
2298
|
-
<div class="mode">chat · approve · notify</div>
|
|
2299
|
-
<h4>Chat approvals</h4>
|
|
2300
|
-
<p>Telegram, Discord, WhatsApp, Photon and Buzz receive scoped prompts, alerts and Allow/Deny approval cards.</p>
|
|
2301
|
-
</article>
|
|
2302
|
-
<article class="strategy-card">
|
|
2303
|
-
<div class="mode">mint · quantity · gas-war</div>
|
|
2304
|
-
<h4>Multi mint</h4>
|
|
2305
|
-
<p>Unsigned NFT mints with a quantity you set, wallet-signable calldata, and gas-war caps so a contested drop cannot unbounded-bid.</p>
|
|
2306
|
-
</article>
|
|
2307
|
-
<article class="strategy-card">
|
|
2308
|
-
<div class="mode">lp · sell-sim · native</div>
|
|
2309
|
-
<h4>Native token exit</h4>
|
|
2310
|
-
<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>
|
|
2311
|
-
</article>
|
|
2312
|
-
<article class="strategy-card">
|
|
2313
|
-
<div class="mode">wallet · etherscan · bubblemaps</div>
|
|
2314
|
-
<h4>Chain investigator</h4>
|
|
2315
|
-
<p>Wallet evidence via Etherscan, Solscan, Blockscout, Bitcoin. Holder graphs via Bubblemaps. Read-only. Flow is not identity.</p>
|
|
2316
|
-
</article>
|
|
2317
|
-
<article class="strategy-card">
|
|
2318
|
-
<div class="mode">observe · flash-loan · arm</div>
|
|
2319
|
-
<h4>Flash loans and MEV</h4>
|
|
2320
|
-
<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>
|
|
2321
|
-
</article>
|
|
2322
|
-
</div>
|
|
2323
|
-
<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>
|
|
2324
|
-
|
|
2325
|
-
</div>
|
|
2326
|
-
|
|
2327
|
-
<section class="section" id="chains">
|
|
2328
|
-
<p class="chapter-tab"><b>05</b> the surface area</p>
|
|
2329
|
-
<p class="section-label rv">Chains</p>
|
|
2330
|
-
<h2 class="section-title rv" data-split>Where you can <em>operate.</em></h2>
|
|
2331
|
-
<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>
|
|
2332
|
-
<div class="chain-grid" id="chain-grid"></div>
|
|
2333
|
-
<div class="hl-surface rv">
|
|
2334
|
-
<div class="venues-head"><span>hyperliquid // what oracle actually does</span></div>
|
|
2335
|
-
<div class="hl-grid">
|
|
2336
|
-
<article><h3>Perps</h3><p>Asset info, order + bracket prepare, cancel, leverage and isolated-margin updates. Tick and lot sizing enforced to 5 sig figs.</p></article>
|
|
2337
|
-
<article><h3>Spot & markets</h3><p>Spot meta, mids, L2 book, candles, market and coin datapoints, leaderboards.</p></article>
|
|
2338
|
-
<article><h3>Staking</h3><p>Validator summaries, delegations, rewards and history. Stake deposit, withdraw and delegate prepare with a 7-day unstaking queue.</p></article>
|
|
2339
|
-
<article><h3>Outcome markets</h3><p>HIP-4 outcome listing plus order and cancel prepare.</p></article>
|
|
2340
|
-
<article><h3>Account state</h3><p>Clearinghouse state, open orders, user fills, positions.</p></article>
|
|
2341
|
-
<article><h3>HyperEVM</h3><p>Token search and metadata on Hyperliquid, routed with the EVM lane.</p></article>
|
|
2342
|
-
</div>
|
|
2343
|
-
</div>
|
|
2344
|
-
</section>
|
|
1740
|
+
<section class="section" id="explore">
|
|
1741
|
+
<p class="section-label rv">Security + pricing</p>
|
|
1742
|
+
<h2 class="section-title rv" data-split>Custody and cost.</h2>
|
|
1743
|
+
<div class="moat-grid rv">
|
|
1744
|
+
<a class="moat-card" href="/security/">
|
|
1745
|
+
<div class="n">security</div>
|
|
1746
|
+
<h3>The wallet stays yours</h3>
|
|
1747
|
+
<p>Public Oracle never holds signing keys. Self-hosted vaults stay on your machine, with capped, expiring permissions and exact owner authorization.</p>
|
|
1748
|
+
</a>
|
|
1749
|
+
<a class="moat-card" href="/pricing/">
|
|
1750
|
+
<div class="n">pricing</div>
|
|
1751
|
+
<h3>5 bps. Holders zero.</h3>
|
|
1752
|
+
<p>Free to install and run. You pay only on routed swaps, and Locals Only holders pay nothing.</p>
|
|
1753
|
+
</a>
|
|
1754
|
+
</div>
|
|
1755
|
+
</section>
|
|
2345
1756
|
<section class="section cli-section" id="cli">
|
|
2346
|
-
<p class="
|
|
2347
|
-
<
|
|
2348
|
-
<h2 class="section-title rv" data-split>One surface. <em>Working chain intelligence.</em></h2>
|
|
1757
|
+
<p class="section-label rv">Download</p>
|
|
1758
|
+
<h2 class="section-title rv" data-split>One line. <em>Then start asking.</em></h2>
|
|
2349
1759
|
<div class="cli-install rv">
|
|
2350
1760
|
<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>
|
|
2351
1761
|
</div>
|
|
2352
|
-
<p class="section-lede rv">
|
|
1762
|
+
<p class="section-lede rv">Install it, connect the model you already pay for, and type <code style="color:var(--blue2)">oracle</code>. The signer stays local. Reads, prices and prepares; you sign.</p>
|
|
2353
1763
|
<div class="convert-grid rv">
|
|
2354
1764
|
<div>
|
|
2355
1765
|
<figure class="cli-frame cli-proof">
|
|
2356
|
-
<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" />
|
|
1766
|
+
<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" />
|
|
2357
1767
|
</figure>
|
|
2358
1768
|
<p class="cli-cap">what you see when you type oracle</p>
|
|
2359
1769
|
</div>
|
|
@@ -2371,7 +1781,7 @@ footer{margin-top:clamp(72px,12vh,120px);border-top:1px solid var(--line);paddin
|
|
|
2371
1781
|
</div>
|
|
2372
1782
|
<h2 class="section-title app-shot-title">Oracle Desktop App <sup style="font-size:14px;color:var(--blue);font-weight:400">beta</sup></h2>
|
|
2373
1783
|
<figure class="app-shot">
|
|
2374
|
-
<img src="assets/desktop-app.jpg?v=20260830" width="1280" height="860" loading="lazy" decoding="async" alt="Oracle desktop 0.4.16 setup: connect Claude, Codex or Grok, local llama.cpp or Ollama, then pick model and chain.">
|
|
1784
|
+
<img src="/assets/desktop-app.jpg?v=20260830" width="1280" height="860" loading="lazy" decoding="async" alt="Oracle desktop 0.4.16 setup: connect Claude, Codex or Grok, local llama.cpp or Ollama, then pick model and chain.">
|
|
2375
1785
|
<figcaption>Native desktop. Connect a provider, then chat.</figcaption>
|
|
2376
1786
|
</figure>
|
|
2377
1787
|
<div class="os-dl">
|
|
@@ -2380,83 +1790,73 @@ footer{margin-top:clamp(72px,12vh,120px);border-top:1px solid var(--line);paddin
|
|
|
2380
1790
|
<a class="os-link" href="/downloads/artifacts/Oracle-Setup-0.4.16.exe">Windows Setup</a>
|
|
2381
1791
|
</div>
|
|
2382
1792
|
</section>
|
|
1793
|
+
</main>
|
|
1794
|
+
<script>
|
|
1795
|
+
// ── Header: mobile drawer + scrollspy. Plain DOM, no library dependency, so
|
|
1796
|
+
// the menu still works if the vendored animation bundles fail to load. ──
|
|
1797
|
+
(function () {
|
|
1798
|
+
"use strict";
|
|
1799
|
+
var nav = document.querySelector(".nav");
|
|
1800
|
+
var toggle = document.getElementById("nav-toggle");
|
|
1801
|
+
var links = document.getElementById("nav-links");
|
|
1802
|
+
if (!nav || !toggle || !links) return;
|
|
1803
|
+
|
|
1804
|
+
function setOpen(open) {
|
|
1805
|
+
nav.dataset.open = open ? "1" : "0";
|
|
1806
|
+
toggle.setAttribute("aria-expanded", open ? "true" : "false");
|
|
1807
|
+
}
|
|
1808
|
+
setOpen(false);
|
|
2383
1809
|
|
|
2384
|
-
|
|
2385
|
-
|
|
2386
|
-
|
|
2387
|
-
|
|
2388
|
-
|
|
2389
|
-
|
|
2390
|
-
|
|
2391
|
-
|
|
2392
|
-
|
|
2393
|
-
|
|
2394
|
-
|
|
2395
|
-
|
|
2396
|
-
|
|
2397
|
-
|
|
2398
|
-
<p>Hold a Locals Only NFT in the wallet Oracle reads and eligible routed swaps and Hyperliquid builder orders carry zero Oracle fees. No claim, dashboard, or manual toggle.</p>
|
|
2399
|
-
</article>
|
|
2400
|
-
<article class="moat-card">
|
|
2401
|
-
<div class="n">operator seat</div>
|
|
2402
|
-
<h3>Run your own instance</h3>
|
|
2403
|
-
<p>The public package is free to install. Every read, route, and prepare runs on your machine. The routing fee only applies when your agent uses Oracle's aggregation.</p>
|
|
2404
|
-
</article>
|
|
2405
|
-
<article class="moat-card">
|
|
2406
|
-
<div class="n">builder codes</div>
|
|
2407
|
-
<h3>Hyperliquid builder fees</h3>
|
|
2408
|
-
<p>Core perps use 2 bps. HIP-3 and HIP-4 use 1 bps. Spot is set to 1 bps but remains inactive until Oracle ships spot-order preparation. Your wallet approves a 2 bps maximum before Oracle can include any builder fee. This is separate from the 5 bps routed-swap fee.</p>
|
|
2409
|
-
</article>
|
|
1810
|
+
toggle.addEventListener("click", function () {
|
|
1811
|
+
setOpen(nav.dataset.open !== "1");
|
|
1812
|
+
});
|
|
1813
|
+
// Any in-page jump closes the drawer, otherwise it covers the target.
|
|
1814
|
+
links.addEventListener("click", function (e) {
|
|
1815
|
+
if (e.target.closest("a")) setOpen(false);
|
|
1816
|
+
});
|
|
1817
|
+
document.addEventListener("keydown", function (e) {
|
|
1818
|
+
if (e.key === "Escape") setOpen(false);
|
|
1819
|
+
});
|
|
1820
|
+
// A resize back to desktop must not leave the drawer state stuck open.
|
|
1821
|
+
window.addEventListener("resize", function () {
|
|
1822
|
+
if (window.innerWidth > 960) setOpen(false);
|
|
1823
|
+
});
|
|
2410
1824
|
|
|
2411
|
-
|
|
2412
|
-
|
|
1825
|
+
// Scrollspy: mark the section currently under the header.
|
|
1826
|
+
var anchors = [].slice.call(links.querySelectorAll('a[href^="#"]'));
|
|
1827
|
+
var targets = anchors.map(function (a) {
|
|
1828
|
+
return { link: a, el: document.querySelector(a.getAttribute("href")) };
|
|
1829
|
+
}).filter(function (t) { return t.el; });
|
|
1830
|
+
if (!targets.length) return;
|
|
2413
1831
|
|
|
2414
|
-
|
|
2415
|
-
|
|
2416
|
-
|
|
2417
|
-
|
|
2418
|
-
|
|
2419
|
-
|
|
2420
|
-
|
|
2421
|
-
|
|
2422
|
-
|
|
2423
|
-
|
|
2424
|
-
|
|
2425
|
-
|
|
2426
|
-
|
|
2427
|
-
|
|
2428
|
-
|
|
2429
|
-
|
|
2430
|
-
|
|
2431
|
-
|
|
2432
|
-
|
|
2433
|
-
<a class="os-link" href="/downloads/artifacts/Oracle-Setup-0.4.16.exe">Windows Setup</a>
|
|
2434
|
-
</div>
|
|
2435
|
-
</div>
|
|
2436
|
-
<div class="close-side rv">
|
|
2437
|
-
<p class="close-note">then <code>oracle setup model</code><br>then <code>oracle chat</code></p>
|
|
2438
|
-
<p class="close-note">reads run locally<br>keys never leave your machine<br>a fresh install signs nothing</p>
|
|
2439
|
-
</div>
|
|
2440
|
-
</div>
|
|
2441
|
-
</div>
|
|
2442
|
-
</section>
|
|
2443
|
-
<div class="mega-oracle rv" aria-hidden="true">oracle</div>
|
|
1832
|
+
var ticking = false;
|
|
1833
|
+
function spy() {
|
|
1834
|
+
ticking = false;
|
|
1835
|
+
var line = window.scrollY + 120; // just under the fixed header
|
|
1836
|
+
var current = null;
|
|
1837
|
+
targets.forEach(function (t) {
|
|
1838
|
+
if (t.el.offsetTop <= line) current = t;
|
|
1839
|
+
});
|
|
1840
|
+
targets.forEach(function (t) {
|
|
1841
|
+
t.link.classList.toggle("is-active", t === current);
|
|
1842
|
+
});
|
|
1843
|
+
}
|
|
1844
|
+
window.addEventListener("scroll", function () {
|
|
1845
|
+
if (!ticking) { ticking = true; window.requestAnimationFrame(spy); }
|
|
1846
|
+
}, { passive: true });
|
|
1847
|
+
window.addEventListener("resize", spy);
|
|
1848
|
+
spy();
|
|
1849
|
+
})();
|
|
1850
|
+
</script>
|
|
2444
1851
|
<footer>
|
|
2445
1852
|
<div class="foot-row">
|
|
2446
|
-
<
|
|
2447
|
-
powered by
|
|
2448
|
-
<a href="https://hermes-agent.nousresearch.com" target="_blank" rel="noopener noreferrer">Hermes</a>
|
|
2449
|
-
</div>
|
|
1853
|
+
<span>oracle · <a class="labs-link" href="https://demi.la">locals only labs</a></span>
|
|
2450
1854
|
<div class="foot-links">
|
|
2451
|
-
<a href="
|
|
1855
|
+
<a href="/download/">Download</a>
|
|
2452
1856
|
<a href="/eval" target="_blank" rel="noopener noreferrer">Evals</a>
|
|
2453
|
-
<a href="
|
|
1857
|
+
<a href="/docs/">Docs</a>
|
|
2454
1858
|
</div>
|
|
2455
1859
|
</div>
|
|
2456
|
-
<div class="foot-meta">
|
|
2457
|
-
<span>oracle · <a class="labs-link" href="https://demi.la">locals only labs</a></span>
|
|
2458
|
-
<span>self custodial // locals only labs</span>
|
|
2459
|
-
</div>
|
|
2460
1860
|
</footer>
|
|
2461
1861
|
|
|
2462
1862
|
<script>
|
|
@@ -2516,15 +1916,19 @@ footer{margin-top:clamp(72px,12vh,120px);border-top:1px solid var(--line);paddin
|
|
|
2516
1916
|
{ name: "Solana", id: "SOL", logo: "chains/rsz_solana", note: "solana agent", badge: "route" },
|
|
2517
1917
|
{ name: "Bitcoin", id: "BTC", logo: "chains/rsz_bitcoin", note: "bitcoin agent", badge: "route" }
|
|
2518
1918
|
];
|
|
2519
|
-
|
|
1919
|
+
// Guarded: this grid only exists on /where-it-works/. Throwing here would
|
|
1920
|
+
// abort the rest of the script, including the .rv reveal that makes hero
|
|
1921
|
+
// copy visible, leaving other pages blank.
|
|
1922
|
+
var chainGrid = document.getElementById("chain-grid");
|
|
1923
|
+
if (chainGrid) chainGrid.innerHTML = CHAINS.map(function (c) {
|
|
2520
1924
|
var cls = c.badge === "route" ? "badge live" : "badge";
|
|
2521
1925
|
var label = c.badge === "route" ? "route" : "read only";
|
|
2522
1926
|
return '<article class="chain rv"><div class="chain-top"><div class="nm">' + c.name +
|
|
2523
1927
|
' <img src="' + ICON + c.logo + '?w=36&h=36" alt="' + c.name + ' logo" loading="lazy"></div></div><div class="meta"><span>' + c.note + '</span><span class="' + cls + '">' + label + '</span></div></article>';
|
|
2524
1928
|
}).join("");
|
|
2525
1929
|
|
|
2526
|
-
var WM = "assets/wordmarks/";
|
|
2527
|
-
var BRAND = "brand/";
|
|
1930
|
+
var WM = "/assets/wordmarks/";
|
|
1931
|
+
var BRAND = "/brand/";
|
|
2528
1932
|
var PROTOS_A = [
|
|
2529
1933
|
{ n: "Uniswap V3", wm: "uniswap.svg", cap: "read + quote + prepare + policy", u: "https://app.uniswap.org/" },
|
|
2530
1934
|
{ n: "Aerodrome Slipstream", wm: "aerodrome.svg", cap: "read + quote + prepare", u: "https://aerodrome.finance/" },
|
|
@@ -2761,53 +2165,25 @@ var PROTOS_B = [
|
|
|
2761
2165
|
wireMarks(trackB);
|
|
2762
2166
|
})();
|
|
2763
2167
|
|
|
2764
|
-
function exactProtocolEntries() {
|
|
2765
|
-
var out = [];
|
|
2766
|
-
var seen = Object.create(null);
|
|
2767
|
-
PROTOS_A.concat(PROTOS_B).forEach(function (x) {
|
|
2768
|
-
var key = String(x.n).toLowerCase();
|
|
2769
|
-
if (seen[key]) return;
|
|
2770
|
-
seen[key] = true;
|
|
2771
|
-
out.push(x);
|
|
2772
|
-
});
|
|
2773
|
-
return out;
|
|
2774
|
-
}
|
|
2775
2168
|
function renderProtocolAtlas() {
|
|
2776
2169
|
var root = document.getElementById("protocol-atlas-grid");
|
|
2777
|
-
var entries = exactProtocolEntries();
|
|
2778
|
-
var routeCount = entries.filter(function (x) { return /quote|route|bridge/i.test(x.cap); }).length;
|
|
2779
|
-
var prepareCount = entries.filter(function (x) { return /prepare|policy|mint|collect|supply|withdraw|stake/i.test(x.cap); }).length;
|
|
2780
|
-
// The hero stat is animated from data-count, so only the atlas value is
|
|
2781
|
-
// written directly here -- otherwise this would stomp the count mid-flight.
|
|
2782
|
-
["atlas-protocol-count"].forEach(function (id) { var el = document.getElementById(id); if (el) el.textContent = String(entries.length); });
|
|
2783
|
-
// The hero protocol total is the GROUNDED roster claim (221), verified in
|
|
2784
|
-
// docs-accuracy against the Jupiter venue roster and pinned by
|
|
2785
|
-
// oracle-splash-ux. `entries` is only the logo-marquee rail — a presentation
|
|
2786
|
-
// subset (117) that has been added to and trimmed over time. Writing it here
|
|
2787
|
-
// silently overwrote the real claim with a rail count, so the hero rendered
|
|
2788
|
-
// 117 while the markup, README and tests all said 221.
|
|
2789
|
-
// Only the atlas count tracks the splash's featured chain cards. The hero
|
|
2790
|
-
// reports the CLI's 15 working chain/venue surfaces plus extensible EVM.
|
|
2791
|
-
["atlas-chain-count"].forEach(function (id) { var el = document.getElementById(id); if (el) el.textContent = String(CHAINS.length); });
|
|
2792
|
-
var r = document.getElementById("atlas-route-count"); if (r) r.textContent = String(routeCount);
|
|
2793
|
-
var pr = document.getElementById("atlas-prepare-count"); if (pr) pr.textContent = String(prepareCount);
|
|
2794
2170
|
if (!root) return;
|
|
2795
2171
|
var cards = [
|
|
2796
|
-
["
|
|
2797
|
-
["
|
|
2798
|
-
["
|
|
2799
|
-
["
|
|
2800
|
-
["
|
|
2801
|
-
["
|
|
2172
|
+
["State engine", "Portfolio, markets, positions, pools, NFTs, ordinals and venue state pulled before any action is proposed."],
|
|
2173
|
+
["Route brain", "Quotes and bridges normalize into comparable intents, with slippage, destination and calldata shape surfaced before signing."],
|
|
2174
|
+
["Policy wall", "Every value-moving path passes local bounds: chain, spender, destination, amount, TTL and simulation posture."],
|
|
2175
|
+
["Wallet handoff", "Oracle prepares. Your wallet signs. Broadcast lives behind owner auth, armed state and receipts."],
|
|
2176
|
+
["Agent mesh", "Hyperliquid, Polymarket, Solana, Bitcoin, EVM, Stable, Robinhood Chain and protocol builder profiles stay separate."],
|
|
2177
|
+
["Builder layer", "New contracts, route modules and chain-specific scaffolds get generated with checks before deployment ever reaches a wallet."]
|
|
2802
2178
|
];
|
|
2803
2179
|
root.innerHTML = cards.map(function (x) {
|
|
2804
|
-
return '<article class="motion-card"><div class="motion-scan"></div><
|
|
2180
|
+
return '<article class="motion-card"><div class="motion-scan"></div><h3>' + x[0] + '</h3><p>' + x[1] + '</p></article>';
|
|
2805
2181
|
}).join("");
|
|
2806
|
-
}
|
|
2182
|
+
}
|
|
2807
2183
|
renderProtocolAtlas();
|
|
2808
2184
|
|
|
2809
2185
|
|
|
2810
|
-
var LM = "assets/llms/";
|
|
2186
|
+
var LM = "/assets/llms/";
|
|
2811
2187
|
var LLMS = [
|
|
2812
2188
|
{ n: "Hermes Agent", wm: "hermes.png", tall: 1, u: "https://hermes.nousresearch.com" },
|
|
2813
2189
|
{ n: "Claude", wm: "claude.svg", u: "https://claude.ai" },
|
|
@@ -2823,12 +2199,14 @@ renderProtocolAtlas();
|
|
|
2823
2199
|
{ n: "Qwen", wm: "qwen.svg", tall: 1, u: "https://chat.qwen.ai" },
|
|
2824
2200
|
{ n: "Kimi", wm: "kimi-icon.svg", tall: 1, u: "https://kimi.com" }
|
|
2825
2201
|
];
|
|
2826
|
-
|
|
2202
|
+
// Guarded: the model marquee only exists on /where-it-works/.
|
|
2203
|
+
var llmTrack = document.getElementById("llm-track");
|
|
2204
|
+
if (llmTrack) llmTrack.innerHTML = LLMS.concat(LLMS).map(function (x) {
|
|
2827
2205
|
var cls = x.tall ? "wm tall" : "wm";
|
|
2828
2206
|
return '<a class="chip wm-chip" href="' + x.u + '" target="_blank" rel="noopener noreferrer" aria-label="' + x.n + '"><img class="' + cls + '" src="' + LM + x.wm + '" alt="' + x.n + '" decoding="async">' + (x.tall ? '<span class="wordmark">' + x.n + '</span>' : '') + '</a>';
|
|
2829
2207
|
}).join("");
|
|
2830
2208
|
|
|
2831
|
-
wireMarks(
|
|
2209
|
+
wireMarks(llmTrack);
|
|
2832
2210
|
syncMarqueeVelocity();
|
|
2833
2211
|
if (document.fonts && document.fonts.ready) document.fonts.ready.then(syncMarqueeVelocity);
|
|
2834
2212
|
window.addEventListener("load", syncMarqueeVelocity);
|
|
@@ -3031,7 +2409,6 @@ var activeLenis = null;
|
|
|
3031
2409
|
gsap.fromTo(".strategy-card", { y:30, opacity:.58 }, { y:0, opacity:1, duration:.95, ease:"power3.out", stagger:.025, scrollTrigger:{ trigger:".strategy-grid", start:"top 78%" }, clearProps:"transform,opacity" });
|
|
3032
2410
|
gsap.fromTo(".cli-proof", { scale:.96, y:30 }, { scale:1, y:0, ease:"none", scrollTrigger:{ trigger:".cli-proof", start:"top 86%", end:"bottom 38%", scrub:1 }, clearProps:"transform" });
|
|
3033
2411
|
gsap.to(".route-tree", { scale:1.018, ease:"none", transformOrigin:"50% 50%", scrollTrigger:{ trigger:".route-tree", start:"top 82%", end:"bottom 40%", scrub:1 } });
|
|
3034
|
-
gsap.to(".mega-oracle", { xPercent:-14, letterSpacing:".02em", ease:"none", scrollTrigger:{ trigger:".mega-oracle", start:"top bottom", end:"bottom top", scrub:true } });
|
|
3035
2412
|
|
|
3036
2413
|
// ── 01 · the ridge separates into depth as the opening viewport leaves ──
|
|
3037
2414
|
[-64, -44, -27, -13, -4].forEach(function (dy, i) {
|
|
@@ -3089,12 +2466,6 @@ var activeLenis = null;
|
|
|
3089
2466
|
});
|
|
3090
2467
|
}
|
|
3091
2468
|
|
|
3092
|
-
// ── 08 · the close: the noisy field arrives as one resolved line ──
|
|
3093
|
-
gsap.fromTo(".close-ridge .rg-3", { y: 40, opacity: 0 }, { y: 0, opacity: 1, ease: "none",
|
|
3094
|
-
scrollTrigger: { trigger: ".close-scene", start: "top 96%", end: "top 34%", scrub: .6 } });
|
|
3095
|
-
gsap.fromTo(".close-ridge .rg-4", { y: 62, opacity: 0 }, { y: 0, opacity: 1, ease: "none",
|
|
3096
|
-
scrollTrigger: { trigger: ".close-scene", start: "top 92%", end: "top 24%", scrub: .6 } });
|
|
3097
|
-
|
|
3098
2469
|
window.ScrollTrigger.refresh();
|
|
3099
2470
|
window.addEventListener("load", function () { window.ScrollTrigger.refresh(); });
|
|
3100
2471
|
}
|