Files
llmgw/internal/web/templates/claim.html
T
Ilker ManapandClaude Opus 5 082d52bc97 Stop shipping a placeholder that looks like a value, and say what is served
A user copied the curl from the profile page and sent it as it stood. Every
other field in that snippet is filled in for them — the base URL, the key
they had just been issued — so "model": "MODEL" reads as a value rather
than a blank, and they got:

  no endpoint serves "MODEL"

which is true and useless. It reads the same whether the name was a typo,
a placeholder left in from the documentation, or a real outage, and it
never says what would have worked.

The message now lists what is being served, capped at ten with a count for
the rest, and says plainly when nothing is. That list is what /v1/models
already returns to the same caller, so it discloses nothing new.

The profile page's example now names a model that is actually running,
real ones before simulated — the point of an example someone can run is
that it runs, and sending a first request to the sim engine would answer
in Greek letters. The landing and claim pages keep a placeholder, because
they are served without a key and deliberately say nothing about what is
here; theirs is <model-name>, which cannot be mistaken for a value, with a
line saying where to get the real one.

Co-Authored-By: Claude Opus 5 (1M context) <noreply@anthropic.com>
2026-09-16 18:23:19 +02:00

49 lines
1.8 KiB
HTML

{{define "claim"}}<!doctype html>
<html lang="en"><head>
<meta charset="utf-8"><meta name="viewport" content="width=device-width,initial-scale=1">
<meta name="robots" content="noindex, nofollow">
<title>Your llmgw key</title><link rel="stylesheet" href="/_static/base.css">
</head><body><div class="wrap">
<header>
<h1>Your API key</h1>
<p class="sub">llmgw · {{.BaseURL}}</p>
</header>
{{if .Secret}}
<p>This is shown once. Nothing can produce it again — only its hash was kept.</p>
<pre>{{.Secret}}</pre>
<p>Store it in a password manager now, then close this page.</p>
<h2>Using it</h2>
<pre>export LLMGW_API_KEY={{.Secret}}
curl {{.BaseURL}}/v1/chat/completions \
-H "Authorization: Bearer $LLMGW_API_KEY" \
-H "Content-Type: application/json" \
-d '{"model": "&lt;model-name&gt;", "messages": [{"role":"user","content":"hello"}]}'</pre>
<p class="note">
Replace &lt;model-name&gt; with a name from
<code>GET {{.BaseURL}}/v1/models</code>, which needs your key. Sending the
placeholder unchanged is answered with the list of models that are available.
</p>
<pre>from openai import OpenAI
client = OpenAI(base_url="{{.BaseURL}}/v1", api_key=os.environ["LLMGW_API_KEY"])</pre>
<p class="note"><code>GET {{.BaseURL}}/v1/models</code> lists what this key may use.
<code>GET {{.BaseURL}}/me</code> shows its limits and what it has spent.</p>
{{else if .Gone}}
<p>{{.Message}}</p>
<p class="note">A link works once and then expires. Ask whoever sent it for a new one.</p>
{{else}}
<p>A key was issued for you. Revealing it uses up this link, and the key is
shown only this once.</p>
<form method="post">
<button type="submit">Reveal my key</button>
</form>
<p class="note">Expires {{.ExpiresAt}}.</p>
{{end}}
<footer><span>llmgw {{.Version}}</span><span>{{.Now}}</span></footer>
</div></body></html>{{end}}