nwo-asm / configuration.html
CPater's picture
Upload 2 files
02f0332 verified
Raw
History Blame Contribute Delete
32.6 kB
<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="UTF-8">
<meta name="viewport" content="width=device-width, initial-scale=1.0">
<title>Configuration · NWO ASM</title>
<link rel="icon" type="image/png" href="phi.png">
<link href="https://fonts.googleapis.com/css2?family=Orbitron:wght@400;500;600;700&family=IBM+Plex+Mono:wght@300;400;500;600&family=Chakra+Petch:wght@300;400;500&display=swap" rel="stylesheet">
<style>
:root{
--bg:#000;--bg2:#070707;--ink:#fff;--muted:#8c8c8c;--dim:#4a4a4a;--faint:#1c1c1c;
--line:rgba(255,255,255,.12);--line2:rgba(255,255,255,.26);
--panel:rgba(255,255,255,.022);--panel2:rgba(255,255,255,.045);
--disp:'Orbitron',sans-serif;--robo:'Chakra Petch',sans-serif;--mono:'IBM Plex Mono',monospace;
--sidebar:280px;
}
*{margin:0;padding:0;box-sizing:border-box}
html{scroll-behavior:smooth}
body{background:var(--bg);color:var(--ink);font-family:var(--robo);font-weight:300;line-height:1.6;-webkit-font-smoothing:antialiased;overflow-x:hidden}
a{color:inherit;text-decoration:none}::selection{background:#fff;color:#000}
.mono{font-family:var(--mono)}
/* ===== layout ===== */
.shell{display:flex;min-height:100vh}
.sidebar{width:var(--sidebar);flex:0 0 var(--sidebar);border-right:1px solid var(--line);background:var(--bg2);position:fixed;top:0;left:0;height:100vh;overflow-y:auto;transition:transform .28s ease;z-index:60}
.sidebar.collapsed{transform:translateX(calc(-1 * var(--sidebar)))}
.main{flex:1;margin-left:var(--sidebar);transition:margin-left .28s ease;width:calc(100% - var(--sidebar))}
.main.full{margin-left:0;width:100%}
@media(max-width:900px){.sidebar{transform:translateX(calc(-1 * var(--sidebar)))}.sidebar.collapsed{transform:translateX(0)}.main{margin-left:0;width:100%}}
/* ===== sidebar content ===== */
.sb-head{padding:22px 22px 16px;border-bottom:1px solid var(--line);display:flex;align-items:center;gap:13px}
.sb-head img{width:36px;height:36px;border:1px solid var(--line2);border-radius:8px}
.sb-head .t{font-family:var(--disp);font-weight:600;font-size:15px;letter-spacing:3px}
.sb-head .s{font-family:var(--mono);font-size:8.5px;letter-spacing:2px;color:var(--muted);text-transform:uppercase;margin-top:2px}
.sb-group{padding:16px 14px 4px}
.sb-group-t{font-family:var(--mono);font-size:9px;letter-spacing:2px;color:var(--dim);text-transform:uppercase;padding:6px 10px}
.sb-link{display:flex;align-items:center;gap:11px;padding:10px 12px;border-radius:8px;color:var(--muted);font-size:13.5px;letter-spacing:.4px;transition:all .18s;margin:1px 0}
.sb-link svg{width:16px;height:16px;stroke:currentColor;fill:none;stroke-width:1.4;flex:0 0 16px}
.sb-link:hover{background:var(--panel2);color:#fff}
.sb-link.active{background:rgba(255,255,255,.06);color:rgba(255,255,255,.78)}
.sb-foot{padding:18px 22px;border-top:1px solid var(--line);font-family:var(--mono);font-size:9px;color:var(--dim);line-height:1.8;letter-spacing:.5px}
/* ===== topbar ===== */
.topbar{position:sticky;top:0;z-index:50;display:flex;align-items:center;justify-content:space-between;padding:13px 26px;border-bottom:1px solid var(--line);background:rgba(0,0,0,.78);backdrop-filter:blur(12px)}
.menu-btn{display:flex;align-items:center;gap:9px;background:transparent;border:1px solid var(--line2);border-radius:8px;color:#fff;font-family:var(--mono);font-size:10px;letter-spacing:1px;text-transform:uppercase;padding:9px 13px;cursor:pointer;transition:all .2s}
.menu-btn:hover{background:#fff;color:#000}
.menu-btn .bars{display:flex;flex-direction:column;gap:3px}
.menu-btn .bars span{width:14px;height:1.5px;background:currentColor;display:block}
.topbar .tb-right{display:flex;gap:9px;align-items:center}
.wallet-btn{background:transparent;color:#fff;border:1px solid var(--line2);border-radius:8px;font-family:var(--mono);font-size:10px;letter-spacing:1px;text-transform:uppercase;padding:9px 16px;cursor:pointer;transition:all .2s}
.wallet-btn:hover{background:#fff;color:#000}
.tb-pill{font-family:var(--mono);font-size:9px;letter-spacing:1px;color:var(--muted);border:1px solid var(--line);border-radius:20px;padding:6px 12px;text-transform:uppercase}
/* ===== hero video ===== */
.hero{position:relative;width:100%;height:clamp(560px,88vh,920px);overflow:hidden;border-bottom:1px solid var(--line);background:#000}
.hero video{position:absolute;top:-8%;left:0;width:100%;height:116%;object-fit:cover;opacity:.5;will-change:transform}
.hero::after{content:"";position:absolute;inset:0;background:radial-gradient(ellipse at center,transparent 0%,rgba(0,0,0,.55) 100%),linear-gradient(180deg,rgba(0,0,0,.3) 0%,transparent 30%,transparent 60%,rgba(0,0,0,.9) 100%)}
.hero-inner{position:absolute;inset:0;z-index:2;display:flex;flex-direction:column;align-items:center;justify-content:center;text-align:center;padding:0 24px}
.hero-phi{width:50px;height:50px;border:1px solid var(--line2);border-radius:12px;margin-bottom:22px;opacity:0;animation:rise .9s .1s forwards}
.hero-over{font-family:var(--disp);font-weight:400;font-size:clamp(20px,3.6vw,42px);letter-spacing:clamp(3px,1.2vw,14px);text-transform:uppercase;line-height:1.14;opacity:0;animation:rise .9s .25s forwards}
.hero-over b{font-weight:700}
.hero-sub{font-family:var(--mono);font-size:clamp(8px,1.1vw,10px);letter-spacing:3px;color:var(--muted);text-transform:uppercase;margin-top:15px;opacity:0;animation:rise .9s .45s forwards}
@keyframes rise{to{opacity:1;transform:translateY(0)}}
.hero-phi,.hero-over,.hero-sub{transform:translateY(16px)}
/* ===== code stream strip ===== */
.codestream{border-bottom:1px solid var(--line);background:var(--bg2);padding:16px 26px;overflow:hidden;white-space:nowrap}
.codestream .cs-line{font-family:var(--mono);font-size:13px;letter-spacing:.5px;color:#fff;display:inline-block}
.codestream .cs-prompt{color:var(--muted)}
.codestream .cs-cur{display:inline-block;width:8px;height:15px;background:#fff;margin-left:2px;vertical-align:-2px;animation:blink 1s steps(1) infinite}
@keyframes blink{50%{opacity:0}}
/* ===== content ===== */
.content{max-width:1280px;margin:0 auto;padding:56px 34px 100px}
.sec-tag{font-family:var(--mono);font-size:10px;letter-spacing:3px;color:var(--muted);text-transform:uppercase;margin-bottom:16px;display:flex;align-items:center;gap:12px}
.sec-tag::before{content:"";width:26px;height:1px;background:var(--line2)}
h2{font-family:var(--disp);font-weight:400;font-size:clamp(22px,3.4vw,34px);letter-spacing:1px;margin-bottom:12px}
h2 b{font-weight:700}
.intro{font-size:16px;color:#bcbcbc;max-width:780px;margin-bottom:14px}
.intro b{color:#fff;font-weight:500}
/* ===== feature nav boxes — gradient thin borders ===== */
.feat-grid{display:grid;grid-template-columns:repeat(4,1fr);gap:14px;margin-top:30px}
@media(max-width:1100px){.feat-grid{grid-template-columns:repeat(2,1fr)}}
@media(max-width:560px){.feat-grid{grid-template-columns:1fr}}
.feat{position:relative;border-radius:15px;padding:1px;background:linear-gradient(135deg,rgba(255,255,255,.45) 0%,rgba(255,255,255,.05) 45%,rgba(0,0,0,0) 100%);transition:transform .2s}
.feat:hover{transform:translateY(-3px)}
.feat:hover .feat-in{background:#0a0a0a}
.feat-in{background:#000;border-radius:14px;padding:24px 22px;height:100%;display:flex;flex-direction:column}
.feat-ic{width:42px;height:42px;border:1px solid var(--line2);border-radius:10px;display:grid;place-items:center;margin-bottom:16px}
.feat-ic svg{width:21px;height:21px;stroke:#fff;fill:none;stroke-width:1.2}
.feat h3{font-family:var(--disp);font-weight:500;font-size:15px;letter-spacing:1px;margin-bottom:8px}
.feat p{font-size:13px;color:var(--muted);line-height:1.6;flex:1}
.feat .st{margin-top:14px;font-family:var(--mono);font-size:8.5px;letter-spacing:1.5px;text-transform:uppercase;padding:4px 10px;border-radius:14px;align-self:flex-start}
.st.live{border:1px solid #fff;color:#fff}
.st.beta{border:1px solid var(--line2);color:var(--muted)}
.st.road{border:1px dashed var(--line2);color:var(--dim)}
.feat .go{margin-top:13px;font-family:var(--mono);font-size:9px;letter-spacing:1.5px;color:var(--dim);text-transform:uppercase;display:flex;align-items:center;gap:6px}
.feat:hover .go{color:#fff}
/* ===== strip ===== */
.strip{display:grid;grid-template-columns:repeat(4,1fr);gap:1px;background:var(--line);border:1px solid var(--line);border-radius:13px;overflow:hidden;margin:34px 0}
@media(max-width:760px){.strip{grid-template-columns:repeat(2,1fr)}}
.strip .c{background:#000;padding:22px 18px;text-align:center}
.strip .v{font-family:var(--disp);font-size:24px;font-weight:600}
.strip .l{font-family:var(--mono);font-size:8.5px;letter-spacing:1.5px;color:var(--muted);text-transform:uppercase;margin-top:6px}
.callout{border:1px solid var(--line);border-left:2px solid var(--line2);border-radius:11px;background:var(--panel);padding:18px 20px;margin:26px 0;font-family:var(--mono);font-size:11.5px;color:var(--muted);line-height:1.8}
.callout b{color:#fff}
/* ===== flow diagram ===== */
.flowwrap{border:1px solid var(--line2);border-radius:16px;background:var(--panel);padding:26px;margin:26px 0;overflow-x:auto}
.flowwrap svg{width:100%;min-width:760px;height:auto;display:block}
/* ===== terminal ui ===== */
.term{border:1px solid var(--line2);border-radius:13px;background:#040404;overflow:hidden;margin:24px 0;box-shadow:0 0 40px rgba(0,0,0,.6)}
.term-bar{display:flex;align-items:center;gap:8px;padding:11px 15px;border-bottom:1px solid var(--line);background:var(--bg2)}
.term-bar .dot{width:9px;height:9px;border-radius:50%;border:1px solid var(--line2)}
.term-bar .t{font-family:var(--mono);font-size:10px;letter-spacing:1.5px;color:var(--muted);text-transform:uppercase;margin-left:8px}
.term-body{padding:18px;font-family:var(--mono);font-size:12.5px;line-height:1.75;min-height:230px;max-height:340px;overflow-y:auto}
.term-body .ln{white-space:pre-wrap;word-break:break-word}
.term-body .pr{color:var(--muted)}
.term-body .ok{color:#fff}
.term-body .dim{color:var(--dim)}
.term-input{display:flex;align-items:center;gap:9px;border-top:1px solid var(--line);padding:12px 15px}
.term-input .ps{font-family:var(--mono);font-size:12.5px;color:var(--muted)}
.term-input input{flex:1;background:transparent;border:none;outline:none;color:#fff;font-family:var(--mono);font-size:12.5px}
.foot{margin-top:46px;padding-top:24px;border-top:1px solid var(--line);font-family:var(--mono);font-size:10px;color:var(--dim);line-height:1.9}
.page-title{display:flex;align-items:center;justify-content:space-between;gap:14px;margin-bottom:6px;flex-wrap:wrap}
.page-title h1{font-family:var(--disp);font-weight:500;font-size:clamp(22px,3vw,32px);letter-spacing:2px}
.page-title .badge{font-family:var(--mono);font-size:9px;letter-spacing:1.5px;padding:5px 10px;border-radius:14px;border:1px solid var(--line2);color:var(--muted);text-transform:uppercase}
.page-lead{font-size:14.5px;color:#bcbcbc;max-width:780px;margin-bottom:22px;line-height:1.65}
.page-lead b{color:#fff;font-weight:500}
.sec-tag{font-family:var(--mono);font-size:10px;letter-spacing:3px;color:var(--muted);text-transform:uppercase;margin:42px 0 12px;display:flex;align-items:center;gap:12px}
.sec-tag::before{content:"";width:24px;height:1px;background:var(--line2)}
h2.s{font-family:var(--disp);font-weight:400;font-size:clamp(20px,3vw,28px);letter-spacing:1px;margin-bottom:12px}
h2.s b{font-weight:700}
.p{font-size:14px;color:#c0c0c0;margin:8px 0 12px;line-height:1.66;max-width:820px}
.p b{color:#fff;font-weight:500}
.callout{border:1px solid var(--line);border-left:2px solid var(--line2);border-radius:11px;background:var(--panel);padding:16px 18px;margin:18px 0;font-family:var(--mono);font-size:11.5px;color:var(--muted);line-height:1.75}
.callout b{color:#fff}
.callout.strong{border-left-color:#fff;background:var(--panel2)}
/* gradient-bordered cards (line-only) */
.gcards{display:grid;grid-template-columns:repeat(auto-fill,minmax(260px,1fr));gap:14px;margin:14px 0 8px}
.gcards.cols3{grid-template-columns:repeat(3,1fr)}
.gcards.cols2{grid-template-columns:repeat(2,1fr)}
@media(max-width:980px){.gcards.cols3,.gcards.cols2{grid-template-columns:repeat(2,1fr)}}
@media(max-width:620px){.gcards.cols3,.gcards.cols2{grid-template-columns:1fr}}
.gcard{position:relative;padding:1px;border-radius:14px;background:linear-gradient(135deg,rgba(255,255,255,.45) 0%,rgba(255,255,255,.04) 50%,rgba(0,0,0,0) 100%);transition:transform .18s}
.gcard:hover{transform:translateY(-2px)}
.gcard-in{background:#000;border-radius:13px;padding:20px;height:100%;display:flex;flex-direction:column}
.gcard .ic{width:38px;height:38px;border:1px solid var(--line2);border-radius:10px;display:grid;place-items:center;margin-bottom:14px}
.gcard .ic svg{width:19px;height:19px;stroke:#fff;fill:none;stroke-width:1.2}
.gcard h3{font-family:var(--disp);font-weight:500;font-size:14px;letter-spacing:1px;margin-bottom:8px}
.gcard p{font-size:13px;color:var(--muted);line-height:1.6;flex:1}
.gcard .st{margin-top:14px;font-family:var(--mono);font-size:8.5px;letter-spacing:1.5px;text-transform:uppercase;padding:4px 10px;border-radius:14px;align-self:flex-start}
.st.live{border:1px solid #fff;color:#fff}
.st.beta{border:1px solid var(--line2);color:var(--muted)}
.st.road{border:1px dashed var(--line2);color:var(--dim)}
/* flow diagram wrapper */
.flowwrap{border:1px solid var(--line2);border-radius:16px;background:var(--panel);padding:24px;margin:18px 0;overflow-x:auto}
.flowwrap svg{width:100%;height:auto;display:block}
.flowwrap svg.h{min-width:760px}
.flowwrap svg.v{min-width:420px;max-width:680px;margin:0 auto}
/* code block */
.code{background:#040404;border:1px solid var(--line2);border-radius:11px;padding:18px 20px;font-family:var(--mono);font-size:12.5px;color:#e6e6e6;line-height:1.7;overflow-x:auto;margin:14px 0}
.code .c{color:var(--dim)}
.code .k{color:#fff}
.code .o{color:#9a9a9a}
.code .label{font-family:var(--mono);font-size:9px;letter-spacing:2px;color:var(--muted);text-transform:uppercase;margin-bottom:6px;display:block}
/* stats strip */
.strip{display:grid;grid-template-columns:repeat(4,1fr);gap:1px;background:var(--line);border:1px solid var(--line);border-radius:13px;overflow:hidden;margin:22px 0}
@media(max-width:760px){.strip{grid-template-columns:repeat(2,1fr)}}
.strip .c{background:#000;padding:18px 14px;text-align:center}
.strip .v{font-family:var(--disp);font-size:22px;font-weight:600}
.strip .l{font-family:var(--mono);font-size:8.5px;letter-spacing:1.5px;color:var(--muted);text-transform:uppercase;margin-top:5px}
/* tech-stack table */
table.tech{width:100%;border-collapse:collapse;margin:10px 0;font-size:13px}
table.tech th,table.tech td{text-align:left;padding:11px 14px;border-bottom:1px solid var(--line);vertical-align:top}
table.tech th{font-family:var(--mono);font-size:9px;letter-spacing:1.5px;text-transform:uppercase;color:var(--muted);font-weight:500}
table.tech td{color:#c4c4c4}
table.tech td b{color:#fff;font-weight:500}
table.tech td code{font-family:var(--mono);font-size:11.5px;color:#fff;background:rgba(255,255,255,.05);padding:1px 6px;border-radius:4px}
/* step list (vertical) */
.steps{display:flex;flex-direction:column;gap:0;border:1px solid var(--line);border-radius:13px;overflow:hidden;background:var(--panel);margin:14px 0}
.step{display:flex;gap:18px;padding:18px 20px;border-bottom:1px solid var(--line)}
.step:last-child{border-bottom:none}
.step .n{font-family:var(--disp);font-size:18px;font-weight:600;color:#fff;flex:0 0 36px}
.step .b h4{font-family:var(--disp);font-weight:500;font-size:13.5px;letter-spacing:.8px;margin-bottom:5px}
.step .b p{font-size:13px;color:var(--muted);line-height:1.6;margin:0}
.step .b .code{margin-top:10px}
/* shared script chrome */
</style>
</head>
<body>
<div class="shell">
<aside class="sidebar" id="sidebar">
<div class="sb-head">
<img src="phi.png" alt="phi">
<div><div class="t">NWO ASM</div><div class="s">Neural Wave Operator</div></div>
</div>
<div class="sb-group">
<div class="sb-group-t">Overview</div>
<a class="sb-link" href="index.html"><svg viewBox="0 0 24 24"><path d="M3 12l9-9 9 9M5 10v10h14V10"/></svg>Home</a>
<a class="sb-link" href="architecture.html"><svg viewBox="0 0 24 24"><rect x="3" y="3" width="7" height="7"/><rect x="14" y="3" width="7" height="7"/><rect x="3" y="14" width="7" height="7"/><rect x="14" y="14" width="7" height="7"/></svg>Architecture</a>
<a class="sb-link" href="how-to.html"><svg viewBox="0 0 24 24"><path d="M12 2L2 7l10 5 10-5-10-5zM2 17l10 5 10-5M2 12l10 5 10-5"/></svg>How-To &amp; Examples</a>
<a class="sb-link active" href="configuration.html"><svg viewBox="0 0 24 24"><circle cx="12" cy="12" r="3"/><path d="M19 12a7 7 0 0 0-.1-1l2-1.6-2-3.4-2.4 1a7 7 0 0 0-1.7-1L16 2H8l-.8 2.9a7 7 0 0 0-1.7 1l-2.4-1-2 3.4 2 1.6a7 7 0 0 0 0 2l-2 1.6 2 3.4 2.4-1a7 7 0 0 0 1.7 1L8 22h8l.8-2.9a7 7 0 0 0 1.7-1l2.4 1 2-3.4-2-1.6a7 7 0 0 0 .1-1z"/></svg>Configuration</a>
</div>
<div class="sb-group">
<div class="sb-group-t">Build</div>
<a class="sb-link" href="compiler.html"><svg viewBox="0 0 24 24"><path d="M16 18l6-6-6-6M8 6l-6 6 6 6"/></svg>Compiler &amp; ISA</a>
<a class="sb-link" href="portals.html"><svg viewBox="0 0 24 24"><circle cx="12" cy="12" r="9"/><ellipse cx="12" cy="12" rx="4" ry="9"/><path d="M3 12h18"/></svg>Portals</a>
<a class="sb-link" href="terminal.html"><svg viewBox="0 0 24 24"><rect x="2" y="4" width="20" height="16" rx="2"/><path d="M6 9l3 3-3 3M13 15h5"/></svg>Terminal</a>
</div>
<div class="sb-group">
<div class="sb-group-t">Network</div>
<a class="sb-link" href="metastate.html"><svg viewBox="0 0 24 24"><circle cx="12" cy="12" r="3"/><circle cx="12" cy="12" r="9"/><path d="M12 3v3m0 12v3M3 12h3m12 0h3"/></svg>MetaState Link</a>
<a class="sb-link" href="affiliate.html"><svg viewBox="0 0 24 24"><path d="M17 21v-2a4 4 0 0 0-4-4H5a4 4 0 0 0-4 4v2"/><circle cx="9" cy="7" r="4"/><path d="M23 21v-2a4 4 0 0 0-3-3.87"/></svg>Affiliate &amp; Earn</a>
<a class="sb-link" href="agent.md"><svg viewBox="0 0 24 24"><path d="M14 2H6a2 2 0 0 0-2 2v16a2 2 0 0 0 2 2h12a2 2 0 0 0 2-2V8z"/><path d="M14 2v6h6"/></svg>agent.md</a>
</div>
<div class="sb-foot">
v4.0 · static substrate<br>
MIT — free to build on<br>
USDC settlement on Base
</div>
</aside>
<div class="main" id="main">
<div class="topbar">
<button class="menu-btn" id="menuBtn"><span class="bars"><span></span><span></span><span></span></span> Menu</button>
<div class="tb-right">
<span class="tb-pill" id="netPill">Base · 8453</span>
<button class="wallet-btn" id="walletBtn">Connect Wallet</button>
</div>
</div>
<div class="content">
<div class="page-title">
<h1>Configuration</h1>
<span class="badge">setup · keys · networks</span>
</div>
<p class="page-lead">Everything you need to wire NWO-ASM into your environment — install, configure substrates, connect a wallet for USDC settlement, and verify the install. Defaults are <b>safe and offline</b>: the language compiles and runs on CPU/GPU with zero credentials. Live substrates and on-chain settlement are opt-in.</p>
<div class="callout strong">
<b>SAFE BY DEFAULT</b> · No credentials are required to write, compile, or simulate NWO-ASM code. Keys and wallet only enter the picture when you choose to dispatch to a live external backend or settle on-chain.
</div>
<!-- CONFIG FLOWCHART -->
<div class="sec-tag">Setup flow</div>
<h2 class="s">From install to <b>first dispatch</b></h2>
<p class="p">A five-step setup path. Stop at any step — you can compile and simulate locally without ever connecting external backends or a wallet.</p>
<div class="flowwrap">
<svg class="h" viewBox="0 0 980 230" xmlns="http://www.w3.org/2000/svg" font-family="IBM Plex Mono, monospace">
<defs><marker id="cfa" markerWidth="9" markerHeight="9" refX="7" refY="3" orient="auto" markerUnits="strokeWidth"><path d="M0,0 L7,3 L0,6 Z" fill="#fff"/></marker></defs>
<rect x="14" y="78" width="168" height="74" rx="11" fill="#000" stroke="rgba(255,255,255,.35)" stroke-width="1"/>
<text x="30" y="100" fill="#4a4a4a" font-size="8" letter-spacing="1.4">01 · INSTALL</text>
<text x="30" y="122" fill="#fff" font-size="12.5">toolchain</text>
<text x="30" y="138" fill="#9a9a9a" font-size="10">~30s · no credentials</text>
<path d="M182,115 L214,115" stroke="#fff" stroke-width="1.2" fill="none" marker-end="url(#cfa)"/>
<rect x="216" y="78" width="168" height="74" rx="11" fill="#000" stroke="rgba(255,255,255,.35)" stroke-width="1"/>
<text x="232" y="100" fill="#4a4a4a" font-size="8" letter-spacing="1.4">02 · INIT</text>
<text x="232" y="122" fill="#fff" font-size="12.5">nwo-asm init</text>
<text x="232" y="138" fill="#9a9a9a" font-size="10">scaffold + config</text>
<path d="M384,115 L416,115" stroke="#fff" stroke-width="1.2" fill="none" marker-end="url(#cfa)"/>
<rect x="418" y="78" width="168" height="74" rx="11" fill="#000" stroke="rgba(255,255,255,.35)" stroke-width="1"/>
<text x="434" y="100" fill="#4a4a4a" font-size="8" letter-spacing="1.4">03 · BACKENDS</text>
<text x="434" y="122" fill="#fff" font-size="12.5">pick targets</text>
<text x="434" y="138" fill="#9a9a9a" font-size="10">CPU/GPU/QPU/…</text>
<path d="M586,115 L618,115" stroke="#fff" stroke-width="1.2" fill="none" marker-end="url(#cfa)"/>
<rect x="620" y="78" width="168" height="74" rx="11" fill="#000" stroke="rgba(255,255,255,.35)" stroke-width="1"/>
<text x="636" y="100" fill="#4a4a4a" font-size="8" letter-spacing="1.4">04 · WALLET</text>
<text x="636" y="122" fill="#fff" font-size="12.5">connect Base</text>
<text x="636" y="138" fill="#9a9a9a" font-size="10">optional · for live</text>
<path d="M788,115 L820,115" stroke="#fff" stroke-width="1.2" fill="none" marker-end="url(#cfa)"/>
<rect x="822" y="78" width="146" height="74" rx="11" fill="#000" stroke="rgba(255,255,255,.35)" stroke-width="1"/>
<text x="838" y="100" fill="#4a4a4a" font-size="8" letter-spacing="1.4">05 · VERIFY</text>
<text x="838" y="122" fill="#fff" font-size="12.5">nwo-asm doctor</text>
<text x="838" y="138" fill="#9a9a9a" font-size="10">health check</text>
<text x="14" y="200" fill="#4a4a4a" font-size="8" letter-spacing="1.4">STOP AT 01-03 FOR LOCAL DEV · COMPLETE 04-05 ONLY IF YOU INTEND TO DISPATCH TO LIVE BACKENDS</text>
</svg>
</div>
<!-- INSTALL -->
<div class="sec-tag">Install</div>
<h2 class="s">Get the <b>toolchain</b></h2>
<p class="p">A single binary plus a Rust crate for embedding. macOS, Linux, and Windows on x86_64 and ARM64. No network calls during install or build — the binary is self-contained.</p>
<span class="label">macos / linux · one-liner</span>
<pre class="code"><span class="c"># installs to ~/.nwo-asm/bin; adds to PATH</span>
curl -fsSL <span class="o">https://nwo-asm.dev/install</span> | bash
<span class="c"># verify</span>
nwo-asm --version
<span class="c">→ nwo-asm 4.0.0 (rust 1.84.0)</span></pre>
<span class="label">cargo · embed in your project</span>
<pre class="code"><span class="k">[dependencies]</span>
nwo-asm = <span class="o">"4.0"</span>
metastate-client = { version = <span class="o">"0.6"</span>, features = [<span class="o">"base"</span>, <span class="o">"poi"</span>] }</pre>
<!-- CONFIG FILE -->
<div class="sec-tag">Config file</div>
<h2 class="s"><b>nwo-asm.toml</b></h2>
<p class="p">A single TOML file at the project root. Everything below has a sane default — values shown are illustrative, not required.</p>
<span class="label">nwo-asm.toml · annotated</span>
<pre class="code"><span class="k">[project]</span>
name = <span class="o">"my-asm-program"</span>
version = <span class="o">"0.1.0"</span>
license = <span class="o">"MIT"</span> <span class="c"># language is MIT; your code can be anything</span>
<span class="k">[targets]</span>
default = <span class="o">"cpu"</span> <span class="c"># cpu | gpu | qpu | ecg_hive</span>
allow = [<span class="o">"cpu"</span>, <span class="o">"gpu"</span>, <span class="o">"qpu"</span>]
deny = [<span class="o">"photonic"</span>, <span class="o">"dna"</span>] <span class="c"># roadmap; refuse routing here</span>
<span class="k">[optimizer]</span>
mode = <span class="o">"free-energy"</span> <span class="c"># or "manual"</span>
budget_ms = 800 <span class="c"># max time to spend on placement</span>
<span class="k">[metastate]</span>
endpoint = <span class="o">"https://cpater-metastate.hf.space"</span>
beacon = <span class="o">"https://nwo-agent-runner.ciprianpater.workers.dev"</span>
poi = <span class="k">true</span> <span class="c"># require Proof of Inference</span>
zk = <span class="k">false</span> <span class="c"># enable zk variant if needed</span>
<span class="k">[settlement]</span>
chain = <span class="o">"base"</span> <span class="c"># 8453</span>
asset = <span class="o">"usdc"</span>
splitter = <span class="o">"0x93a7962f75475b7e3Fbb62d3A23194f8833b1BE4"</span>
affiliate = <span class="o">""</span> <span class="c"># 0x… address to receive 15% — optional</span>
<span class="k">[signing]</span>
algo = <span class="o">"dilithium3"</span> <span class="c"># PQC; key at ~/.nwo-asm/keys/</span>
auto = <span class="k">true</span></pre>
<!-- BACKENDS -->
<div class="sec-tag">Backends</div>
<h2 class="s">Per-substrate <b>configuration</b></h2>
<p class="p">Each substrate has its own minimal block in <code style="font-family:var(--mono);font-size:11.5px;color:#fff;background:rgba(255,255,255,.05);padding:1px 6px;border-radius:4px">nwo-asm.toml</code>. Anything not listed below uses safe defaults.</p>
<table class="tech">
<tr><th>Backend</th><th>Required</th><th>Optional</th><th>Status</th></tr>
<tr><td><b>CPU</b></td><td>none</td><td><code>threads</code>, <code>simd</code></td><td>Live</td></tr>
<tr><td><b>GPU</b></td><td>driver present (CUDA/ROCm/Metal)</td><td><code>devices</code>, <code>memory_gb</code></td><td>Live</td></tr>
<tr><td><b>GPU mesh (nwo-agi)</b></td><td>none</td><td><code>endpoint</code>, <code>max_cost_usdc</code></td><td>Live</td></tr>
<tr><td><b>QPU (IBM)</b></td><td><code>IBM_QUANTUM_TOKEN</code></td><td><code>instance</code>, <code>backend</code></td><td>Live</td></tr>
<tr><td><b>QPU (Origin Wukong)</b></td><td><code>ORIGIN_API_KEY</code></td><td><code>backend</code></td><td>Live</td></tr>
<tr><td><b>ECG hive · BCI</b></td><td>device URI or serial</td><td><code>channels</code>, <code>sample_rate</code></td><td>Beta</td></tr>
<tr><td><b>Photonic · Neuro · DNA · Crystalline</b></td><td></td><td></td><td>Roadmap</td></tr>
</table>
<!-- ENV VARS -->
<div class="sec-tag">Environment</div>
<h2 class="s">Credentials &amp; <b>environment</b></h2>
<p class="p">Read from <code style="font-family:var(--mono);font-size:11.5px;color:#fff;background:rgba(255,255,255,.05);padding:1px 6px;border-radius:4px">.env</code> at the project root or the system environment. None are required for local CPU/GPU work.</p>
<span class="label">.env · only fill what you need</span>
<pre class="code"><span class="c"># quantum backends (only if you want live QPU)</span>
IBM_QUANTUM_TOKEN = <span class="o">""</span>
ORIGIN_API_KEY = <span class="o">""</span>
<span class="c"># wallet & settlement (only for on-chain dispatch)</span>
BASE_RPC_URL = <span class="o">"https://mainnet.base.org"</span>
WALLET_PRIVATE_KEY = <span class="o">""</span> <span class="c"># or use a hardware wallet via WalletConnect</span>
<span class="c"># optional</span>
METASTATE_URL = <span class="o">"https://cpater-metastate.hf.space"</span>
HF_TOKEN = <span class="o">""</span> <span class="c"># for private HF Spaces or models</span></pre>
<div class="callout"><b>Never commit secrets.</b> Add <code>.env</code> to your <code>.gitignore</code>. The toolchain does not transmit secrets except to the configured endpoints you choose.</div>
<!-- VERIFY -->
<div class="sec-tag">Verify</div>
<h2 class="s"><b>nwo-asm doctor</b></h2>
<p class="p">Walks the entire config and reports what's wired and what's not — clearly. Doctor is read-only; it makes no live calls without your confirmation.</p>
<pre class="code">nwo-asm doctor
<span class="c">==&gt; toolchain</span>
[✓] nwo-asm 4.0.0
[✓] compiler artifacts cache: ~/.nwo-asm/cache (12 MB)
<span class="c">==&gt; targets</span>
[✓] cpu · 16 threads · simd avx2
[✓] gpu · 1 device · NVIDIA RTX 4090 · 24 GB
[✓] gpu mesh · nwo-agi reachable
[ ] qpu ibm · IBM_QUANTUM_TOKEN missing
[ ] qpu origin · ORIGIN_API_KEY missing
[ ] ecg_hive · no device configured (skip if not using)
<span class="c">==&gt; metastate</span>
[✓] endpoint reachable · v0.6
[✓] agent-card.json reachable
[✓] PoI: enabled · zk: disabled
<span class="c">==&gt; settlement</span>
[ ] wallet not connected · OK for local-only use
[i] connect a wallet to enable live dispatch
<span class="c">==&gt; result</span>
local-only: <span class="k">READY</span>
live dispatch: <span class="k">PARTIAL</span> · supply IBM/Origin tokens and wallet for full live</pre>
<!-- TECH STACK -->
<div class="sec-tag">Tech stack</div>
<h2 class="s">What configuration <b>relies on</b></h2>
<table class="tech">
<tr><th>Layer</th><th>Tech</th><th>Notes</th></tr>
<tr><td><b>Config format</b></td><td>TOML (parsed by toml crate)</td><td>Single file at project root.</td></tr>
<tr><td><b>Secrets</b></td><td>dotenv · OS keychain (optional)</td><td>Toolchain never logs secrets.</td></tr>
<tr><td><b>PQC keys</b></td><td>CRYSTALS-Dilithium · liboqs</td><td>Stored at <code>~/.nwo-asm/keys/</code>.</td></tr>
<tr><td><b>Wallet</b></td><td>EIP-1193 (MetaMask · WalletConnect)</td><td>Hardware wallets supported.</td></tr>
<tr><td><b>RPC</b></td><td>Base mainnet (chain 8453) via JSON-RPC</td><td>User-provided endpoint.</td></tr>
<tr><td><b>Telemetry</b></td><td>None by default</td><td>Doctor command is local-only.</td></tr>
</table>
<div style="display:flex;gap:10px;flex-wrap:wrap;margin-top:24px">
<a href="how-to.html" style="font-family:var(--mono);font-size:11px;letter-spacing:1.5px;text-transform:uppercase;padding:13px 22px;border:1px solid var(--line2);border-radius:9px;background:#fff;color:#000">How-to &amp; examples</a>
<a href="compiler.html" style="font-family:var(--mono);font-size:11px;letter-spacing:1.5px;text-transform:uppercase;padding:13px 22px;border:1px solid var(--line2);border-radius:9px;color:#fff">Compiler</a>
<a href="terminal.html" style="font-family:var(--mono);font-size:11px;letter-spacing:1.5px;text-transform:uppercase;padding:13px 22px;border:1px solid var(--line2);border-radius:9px;color:#fff">Terminal</a>
</div>
</div>
</div>
</div>
<script>
const sidebar=document.getElementById('sidebar');
const main=document.getElementById('main');
const menuBtn=document.getElementById('menuBtn');
const wide=window.matchMedia('(min-width:901px)');
menuBtn.addEventListener('click',()=>{
if(wide.matches){ sidebar.classList.toggle('collapsed'); main.classList.toggle('full'); }
else { sidebar.classList.toggle('collapsed'); }
});
const walletBtn=document.getElementById('walletBtn');
function pickProvider(){const e=window.ethereum;if(!e)return null;if(Array.isArray(e.providers))return e.providers.find(p=>p.isMetaMask)||e.providers[0];return e;}
walletBtn.addEventListener('click',async()=>{
const p=pickProvider();
if(!p){ walletBtn.textContent='No wallet found'; return; }
try{
const a=await p.request({method:'eth_requestAccounts'});
walletBtn.textContent=a[0].slice(0,6)+'…'+a[0].slice(-4);
document.getElementById('netPill').textContent='Connected · Base';
}catch(e){ walletBtn.textContent='Connection refused'; }
});
</script>
</body>
</html>