Spaces:
Running
Running
| <script type="module" crossorigin src="/assets/agent-host-eDUnNJBhJx.js"></script> | |
| <link rel="modulepreload" crossorigin href="/assets/model-registry-BoK-ObgACo.js"> | |
| <link rel="modulepreload" crossorigin href="/assets/preload-helper-ckwbz45pO3.js"> | |
| <link rel="modulepreload" crossorigin href="/assets/weight-loader-ByOLMd9f5C.js"> | |
| <link rel="modulepreload" crossorigin href="/assets/model-select-DhhV9mCi0T.js"> | |
| <link rel="modulepreload" crossorigin href="/assets/variants-De-VVc9BRz.js"> | |
| <link rel="modulepreload" crossorigin href="/assets/engine-core-CLR3cxsqf4.js"> | |
| <link rel="modulepreload" crossorigin href="/assets/loading-ui-CjCwSRuXvh.js"> | |
| <meta charset="utf-8"><title>zero-tvm · agent host</title> | |
| <meta name="viewport" content="width=device-width,initial-scale=1"> | |
| <!-- Not a public destination: it needs a local agent-server on 127.0.0.1:8017, | |
| so a visitor arriving from search pays for weights and gets "booting…" | |
| forever. share.html and 404.html already carry this; this page did not, | |
| while robots.txt is Allow: / — so it was indexable. --> | |
| <meta name="robots" content="noindex"> | |
| <!-- tokens.css FIRST: chat-ui.css is an alias layer over it, so without this | |
| 14 custom properties were undefined here — including --accent, which made | |
| `outline: 2px solid var(--accent)` invalid at computed-value time and so | |
| suppressed the browser focus ring page-wide with nothing replacing it. --> | |
| <link rel="stylesheet" href="/tokens.css"> | |
| <link rel="stylesheet" href="/chat-ui.css"> | |
| <style> | |
| body { font: 14px/1.5 ui-monospace, SFMono-Regular, Menlo, monospace; margin: 0; padding: 2rem; | |
| background: #0b0d10; color: #d6dbe1; } | |
| h1 { font-size: 1.1rem; margin: 0 0 .25rem; letter-spacing: .02em } | |
| .sub { color: #7d8590; margin-bottom: 1.5rem } | |
| .card { border: 1px solid #21262d; border-radius: 8px; padding: 1rem 1.25rem; margin-bottom: 1rem; | |
| background: #0f1216 } | |
| #status { font-weight: 600 } | |
| #status.ok { color: #3fb950 } #status.err { color: #f85149 } | |
| #log { white-space: pre-wrap; color: #8b949e; font-size: 12.5px; max-height: 22rem; overflow: auto; | |
| margin: 0 } | |
| code { background: #161b22; padding: .1rem .35rem; border-radius: 4px; color: #d6dbe1 } | |
| .warn { color: #d29922 } | |
| #progress-wrap { display: none } | |
| #progress-wrap.active { display: block } | |
| #progress-bar { height: 6px; background: #d29922; width: 0%; border-radius: 3px; transition: width .2s } | |
| #progress-status { margin-top: .6rem; font-size: 13px } | |
| #progress-detail { color: #7d8590; font-size: 12px } | |
| #progress-log { white-space: pre-wrap; color: #8b949e; font-size: 12px; max-height: 14rem; | |
| overflow: auto; margin: .6rem 0 0 } | |
| </style> | |
| <h1>zero-tvm · agent host</h1> | |
| <div class="sub">This tab runs the model. <code>scripts/agent-server.mjs</code> gives it an OpenAI-shaped address on :8017. | |
| <br><small>Alternative, and the one to prefer for real use: <code>npm run station</code> runs the engine in-process on | |
| dawn.node (no browser tab, no throttling) and takes the same :8017. They cannot both hold the port — run one.</small></div> | |
| <div class="card"> | |
| <div id="status">booting…</div> | |
| <div class="sub" style="margin:.35rem 0 0" id="model"></div> | |
| </div> | |
| <div class="card"> | |
| <div style="margin-bottom:.5rem">Point a client at <code>http://127.0.0.1:8017/v1</code></div> | |
| <div class="sub" style="margin:0"> | |
| <b>Cline</b> — API Provider “OpenAI Compatible”, Base URL above, any model id.<br> | |
| <b>pi</b> — <code>~/.pi/agent/models.json</code>, <code>api: "openai-completions"</code>, that baseUrl.<br> | |
| <b>curl</b> — <code>curl 127.0.0.1:8017/v1/chat/completions -d '{"messages":[{"role":"user","content":"hi"}]}' -H 'content-type: application/json'</code> | |
| </div> | |
| </div> | |
| <div class="card"> | |
| <div class="warn" style="margin-bottom:.5rem">Keep this tab visible.</div> | |
| <div class="sub" style="margin:0">Chrome throttles background tabs hard — share.ts measured ~23 tok/s | |
| backgrounded against ~65 focused. An agent run is long and unattended, which is exactly when a tab | |
| stops being focused.</div> | |
| </div> | |
| <div class="card"><pre id="log"></pre></div> | |
| <!-- loading-ui writes to progress-bar / -status / -detail / -log and reveals | |
| this by adding .active. The bar was id="progress", there was no log sink, | |
| and `hidden` is an attribute that .active cannot override — so a | |
| multi-gigabyte download showed "booting…" and nothing else. Same | |
| display:none + .active shape share.html already uses. --> | |
| <div id="progress-wrap" class="card"><div id="progress-bar"></div><div id="progress-status"></div><div id="progress-detail"></div><pre id="progress-log"></pre></div> | |
| <div id="badge" hidden></div> | |