File size: 4,746 Bytes
e26c434
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
<!doctype html>
<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>