User repository on GitHub
Judge every LLM response before the user sees it. AI SDK middleware and OpenAI-compatible proxy.
- Forks
- 1
- Last pushed
- Updated Sep 2026
Repo stats from the GitHub API, cached Oct 2026.Homepage
TypeScript guardrail that puts seven Jev checks in front of an AI SDK model or an OpenAI-compatible endpoint, blocks on high-confidence hard checks, downgrades low confidence to a flag, and logs every verdict as a PII-free JSONL row you can turn into an eval set.
User repository on GitHub
Judge every LLM response before the user sees it. AI SDK middleware and OpenAI-compatible proxy.
Repo stats from the GitHub API, cached Oct 2026.Homepage
Judge every LLM response before the user sees it. Seven checks in one 100 ms call to TypeSafe's Jev, cheap enough to run on 100% of traffic instead of sampling 1% with a frontier judge. AI SDK middleware: wrapLanguageModel({ model, middleware: tripwire(...) }). Zero infra. OpenAI-compatible proxy: point any client's baseURL at it. Policy as YAML: which checks run, how confident Jev must be, what a block does.
Quoted from the project's README. Read the full README.
Watch out
Version 0.1. The middleware and proxy work end to end against a mock judge with 29 tests, and the README states there are no accuracy numbers against real Jev yet; it recommends replacing the 27-item seed set with 300 to 500 rows from your own logs before drawing conclusions. It fails open: if Jev is unreachable the response passes with verdict flag and an empty checks map unless you override onJudgeError. Streaming is passthrough by default, meaning the user has already seen the response before the judge runs, while the proxy serves a streaming request as one SSE chunk after judging. Responses with no text, such as tool-call-only turns, are not judged and tool-call arguments are not inspected. State is trimmed to roughly a 32k token budget, oldest first. Copy reviewed against the repository README on 2026-10-04, not from running it.
Posts from builders shipping with Jev right now.