CI for serving · Demo
A gate on generate. Probes you can see. Idle when the GPU is quiet.
Harbor, Fieldline, Ledgerbox, and Folio already call generate or
query here. I probe those paths, smoke them before a change lands,
and keep an idle policy in writing so a GPU does not run all night.
Your engineer gets the same shape: health, a CI gate, a cost policy,
and a runbook they can run without me.
-
01
The generate and query APIs already exist
I installed them, or you already run them. CI sits around that
path — it is not a separate chatbot product.
-
02
Health the load balancer can hit
GET /health on inference and retrieval. Unhealthy
means no new traffic. You see it without waiting for a user.
-
03
CI smokes the locked paths
Health, a rejected token, then a real generate and a real retrieve.
A bad change fails before it reaches you.
-
04
Idle policy in writing
Replica cap, idle shutdown, no invented dollar-per-token claims.
The GPU does not burn all night because nobody asked.
-
05
A status page that shows the probes
Live checks against the APIs on the machine. Not a fake uptime
percentage, not a Grafana mock.
-
06
I hand the machine to you in writing
Restart, what “green” means, how to stop. Your engineer is not
stuck with my laptop.
Example 1 · live · the APIs I already run
Harbor, Fieldline, Ledgerbox, Folio
Four thin UIs on this machine. Three POST to the same generate
path. Folio POSTs to query. Fictional product names; the APIs are
real and running here. That is why CI for this machine is not a mock —
it smokes the same endpoints those pages use.
A paid install points the same checks at your generate and
query URLs. You keep the product screen. I keep the probe, the
gate, and the runbook.
Before · wait
Ship a change.
Hope generate still answers…
A user finds it first.
After · smoke
Health, 401, then a real call.
Bad change fails in CI.
The example UIs stay up.
Example 2 · demo · GPU idle
Hearth
A product team rents a GPU so generate is fast. Nobody is calling
it at 2am. The replica stays at one because they might need a
demo in the morning. The meter still runs. Fictional product. Not
a real firm. No invented dollar-per-month number.
A paid install writes the idle rule on their GPU: fifteen
minutes of zero traffic, scale to zero. Cold start is acceptable
for that load. This demo machine is CPU. GPU spend here is $0. The
policy text lives on the status page — not a fake bill.
Before · always on
Replica stays at one.
GPU still billed at 2am…
Nobody is calling generate.
After · idle to zero
QPS is 0 for 15 minutes.
Scale replicas to 0.
/health when it is up. Cap in writing.
Example 3 · live · probes
Status
The status page probes inference and retrieval on this machine. If
Ollama is down, you see it. Cost policy and runbook sit next to the
probes as written — not a dashboard product, and not a fake SLA.
This is CI I run on my own APIs first. A paid job uses your host
names and your load balancer. Same click.
Before · quiet
No probe.
The model dies overnight…
Nobody notices until morning.
After · a probe
Load balancer hits /health.
Status shows the same check.
Idle policy is on the page.