one prompt · every model · sequential · streamed live

MODEL PLAYGROUND

The live tool runs on the machine itself

Browser-side API calls from this documentation page are blocked by browser private-network policy (public site → tailnet IP), so the interactive playground is served from the machine itself over the tailnet HTTPS endpoint — same origin as the API, no CORS, no workarounds:

https://frame-serv-2.tail8056c7.ts.net/playground/

tailnet device required (any device on the dxverm tailnet)

What it does

Timing note: the first token includes the model swap (llama-swap unloads the previous model and loads the next — 67–113 GB swaps take minutes). The t/s on the output page reflects generation rate after that first token.

Setup (once per browser)

  1. Paste the endpoint API key into the key field (stored in that browser's localStorage only — never published here; get it from the operator or /srv/llm/secrets/api-key on the machine).
  2. Click Load models — the list populates from /v1/models.
  3. Optionally enable tool-use test, set max_tokens, then Run sequential benchmark.

Expected run profile

ModelLoad (first token)Sustained decode
qwen38-27b~seconds (MTP, often resident)~19 t/s
flashnext-iq1s / fp4~30–60 s load29–31 t/s
glm53-flash~45 s load~14 t/s
dsv4-flash~45 s load~21 t/s
llama-3.3-70b~25 s load~5 t/s

Full benchmark methodology: Benchmarks.

How it's built

Served by the box itself: static page at /srv/llm/playground/ mounted via tailscale serve at /playground/, same origin as the API — no cross-origin requests, no public exposure. Source is a single HTML file; tweak it in place and refresh.