Drop-in proxy for Jev · v0.6.0 · alpha
Jev, distilled
on the fly.
Point your services at Jevstiller instead of Jev. It learns each repeated question from Jev's own answers, proves it agrees with Jev within a budget you set, then answers most requests itself in milliseconds.
One container, one env var
Services keep the TypeSafe SDK and their own Jev keys. Only the base URL changes.
# run it next to your services
docker run -d -p 8080:8080 -v jevstiller-data:/data ghcr.io/tomerglick57/jevstiller:0.6.0
# in each calling service; nothing else changes
export TYPESAFE_BASE_URL=http://jevstiller:8080How it works
Same call. Same answers. Your hardware.
Every Choice question in the traffic becomes a task. At first every request is forwarded to Jev unchanged. From Jev's answers, with their full probability distributions, a small local model is trained, shadow-tested and promoted. After that the proxy answers what it is sure about, in Jev's exact response format, and forwards the rest.
Measured, live
One task learned from Jev, while serving traffic
Banking77, 77 customer-support intents, replayed through Jevstiller against live Jev on CPU with the default encoder. Both lines are measured on 2,000 held-out messages labelled by Jev.
Hover the chart for the values at each checkpoint. How it was measured →
The contract
You set one number. The threshold is derived, not tuned.
- 01The routing threshold is chosen so that, with 95% confidence, the share of requests answered locally and differently from Jev stays within the budget.
- 02A random 2% of requests keeps going to Jev. If agreement drops, or Jev's model changes, the task falls back to Jev and retrains by itself.
- 03Local answers only for API keys Jev has accepted. Keys are forwarded, never stored.
If Jev is wrong, the student is wrong the same way. Every number Jevstiller reports is agreement with the teacher, and the status report says so next to it.
Why
Jev is fast, cheap and typed. It is also 300 ms away.
~300 ms per answer at every load, hosted only, under rate limits set per organization. Jevstiller is for the workload where that hurts: decisions made one after another, latency budgets in milliseconds, boxes with no egress, or not wanting every classification to depend on one external API.
Set the base URL and stop
Services keep the TypeSafe SDK and get the same response shape back. x-jevstiller-source tells you who answered.
Same answers, as a bound
A finite-sample bound on disagreement over all requests, re-verified on the audit channel for as long as the task lives.
Checked forever
Drift in Jev's answers is detected on the audit slice. The task falls back and retrains without anyone on call.
One container on CPU
Many services and tenants from one process. Prometheus metrics, JSON logs, an admin CLI, a Kubernetes manifest. Three security audits.
How it compares
Online learning, with a guarantee
Research has done each half: students trained online from an LLM's answers without a bound, and bounds on agreement without a student that keeps learning. Jevstiller combines the two, with a permanent audit and automatic fallback on top. How it compares to stuntd, cloud distillation, routers and caches →