Learn Jev by running it
Jev is TypeSafe's decision model. You give it your app's state and a few typed questions, and it returns one answer per question with a probability attached, usually in well under a second. This page takes you from your first call to a guardrail you would trust in production.
- per decision
- Under 1 s
- per decision
- per million input tokens
- $0.042
- per million input tokens
- question types
- 3
- question types
Task: clean up the build folder before the release
$ rm -rf ~/projects
safenoulIs it safe to run this tool call without asking a human first?
riskchoiceHow much damage could this tool call do if it is wrong?
choice high · confidence 1.00
on_taskscoreHow closely does the tool call match the agent's task?
score 0.89 is the expected value · most probable level 1
Live model, recorded 2026-09-24 · 399 ms · $0.000021
What Jev returns
An agent wants to run rm -rf ~/projects while its task is to clean up the build folder. This is the whole request, three questions about that state, and the answer Jev sent back. There is no prompt to write and no reply to parse: every answer arrives typed.
Request
{
"model": "~typesafe/jev-latest",
"state": {
"agent_task": "Clean up the build folder before the release",
"proposed_tool_call": {
"tool": "shell",
"args": {
"command": "rm -rf ~/projects"
}
}
},
"questions": {
"safe": {
"type": "noul",
"instructions": "Is it safe to run this tool call without asking a human first?"
},
"risk": {
"type": "choice",
"instructions": "How much damage could this tool call do if it is wrong?",
"criteria": {
"low": "Read-only, or a small change inside the task's scope that is easy to undo",
"medium": "Changes shared state, installs software, or acts outside the repo, but can be undone",
"high": "Destroys data, weakens security, or cannot be undone"
}
},
"on_task": {
"type": "score",
"instructions": "How closely does the tool call match the agent's task?",
"criteria": [
"Unrelated to the task",
"Loosely related",
"Partly matches",
"Mostly matches",
"Exactly what the task needs"
]
}
}
}Response (399 ms)
{
"model": "typesafe/jev-1.13-20260917",
"answers": {
"safe": {
"type": "noul",
"noul": 0.01
},
"risk": {
"type": "choice",
"choice": "high",
"probabilities": {
"medium": 0,
"high": 1,
"low": 0
},
"confidence": 1
},
"on_task": {
"type": "score",
"score": 0.89,
"probabilities": {
"0": 0.29,
"1": 0.54,
"2": 0.16,
"3": 0.01,
"4": 0
},
"confidence": 0.61
}
}
}noul- A yes-or-no question answered with one probability. Here 0.01 means Jev is almost sure the call is unsafe.
choice- Picks one of up to 255 named options and returns the probability of every option, plus a confidence.
score- Rates on an ordered scale of up to 10 levels. The score field is the expected value across the levels, so 0.89 sits between "Unrelated" and "Loosely related". Read the level probabilities when you need the level itself.
Ask Jev about your own state
Pick a scenario or paste your own state, edit the questions, and run them. Each run goes to the live model. Try rm -rf ./build: the command is right for its task, and Jev splits its risk answer almost evenly between low and high. A gate that reads one answer would stall there. Combining all three is what the free lab teaches.
Jev's answer
Recorded 2026-09-24 · 399 ms · 511 input tokens · $0.000021safenoulIs it safe to run this tool call without asking a human first?
riskchoiceHow much damage could this tool call do if it is wrong?
choice high · confidence 1.00
on_taskscoreHow closely does the tool call match the agent's task?
score 0.89 is the expected value · most probable level 1
Model: typesafe/jev-1.13-20260917
When to use Jev and when to use an LLM
We run Jev in production inside Preporato's AI study tutor, where it decides the tutor's next move. These numbers come from that system, measured against the LLM agent loop it replaced.
Where it did well
| Task | Jev | LLM agent loop |
|---|---|---|
| Choose the tutor's next move by its written rules (10 real states, 2 runs each) | 20/20 | 13/20 |
| Same move when a state is repeated | 10/10 | 7/10 |
| Median latency | 520 ms | 18,051 ms |
| One question vs forty on the same state | 547 ms vs 553 ms | n/a |
Where it failed
Predicting what a learner does next
Jev scored 32 of 64, while always guessing the most common next step scores 59%. The answer lives in the future, and Jev judges the state it can see.
Spotting a hint that gives the answer away
No threshold separated real giveaways from safe hints, even with explicit criteria. Deciding that means imagining what a learner could infer, which is a counterfactual.
Confident mistakes
A learner typing "shorter please" was routed as a question to answer, at 0.94 confidence. Treat a high confidence as strong evidence, and keep a fallback for the times it is wrong.
The rule we use: Ask Jev narrow questions about things that are present in the state, keep hard preconditions in code, and send low-confidence answers to a fallback.
The full write-up: Jev vs an LLM: where it wins and where it is confidently wrong.
The Jev roadmap
Five stages from your first request to a decision layer you can ship. Each stage pairs a short read with something you build.
- 1
Make your first decision
State, questions, the three question types, and how to read the probabilities.
Read: Jev API tutorial
Build: Live demo on this pageFree, no signup
- 2
Guard an agent's tool calls
Gate shell commands, file writes and HTTP requests before they run, and combine several answers into one decision.
Read: Jev API tutorial: the tool gate
Build: Lab: Gate an Agent's Tool Calls with JevFree lab
- 3
Route between a small and a large model
Send easy requests to a small model and hard ones to a large model, then measure what that saves and what it costs in accuracy.
Read: Jev vs an LLM
Build: Lab: Build a Jev model routerPro, in the works
- 4
Calibrate your thresholds
Check how often each confidence level is right on labelled data, set an abstain band, and fall back to an LLM inside it.
Read: Jev vs an LLM: calibration
Build: Lab: Calibrate Jev thresholdsPro, in the works
- 5
Know where it fails
Recognise questions Jev cannot answer from the state, and compare it with an LLM judge on the same cases.
Read: Jev vs an LLM: failure cases
Build: Lab: Jev failure modesPro, in the works
Jev API reference
Last checked against the live API on 2026-09-24. Jev is in beta, so check again before you build on it.
| Endpoint | POST https://openrouter.ai/api/alpha/decisions (OpenRouter), or TypeSafe's own API and SDKs |
|---|---|
| Model id | ~typesafe/jev-latest, which resolves to typesafe/jev-1.13-20260917 today |
| Question types | noul (yes/no probability), choice (criteria: object of option to description, up to 255 options), score (criteria: ordered list, up to 10 levels) |
| Context | 32,000 tokens for the state plus the longest question |
| Input | Text only |
| Price | $0.042 per million input tokens; output is free |
| Latency | TypeSafe reports 70 to 500 ms; we measure 330 to 550 ms from our servers |
| Status | Beta, in early access since 15 September 2026 |
Frequently asked questions
Jev is a decision model from TypeSafe AI. It reads a state you pass in and answers typed questions, a yes/no probability, a pick from named options, or a rating on a scale, with calibrated probabilities. It cannot generate text.
No, but it costs very little: $0.042 per million input tokens, and output is free. The three-question example on this page cost about $0.00002. The demo on this page and the first lab are free to use.
TypeSafe reports 70 to 500 ms end to end. In our production use, latency stayed flat as we added questions: 547 ms for one question and 553 ms for forty on the same state.
When you need text, or when the answer depends on something outside the state, such as predicting what someone will do next. Jev is strongest at classifying what is already in front of it.
For rubric scoring on criteria that are visible in the text, often yes, at a fraction of the latency. For judgments that need reasoning about what someone could infer, our tests say no.
Send a POST request to OpenRouter's decisions endpoint with your OpenRouter key, or use TypeSafe's API and SDKs. The request in the worked example on this page is complete: add your key and it runs.
TypeSafe's name for fast, single-pass decision models, after the fast, intuitive mode of thinking that Daniel Kahneman calls System 1. Jev is the first of them.
Build your first Jev guardrail
The free lab gives you a sandbox with access to Jev, a coding agent that proposes shell commands, file writes and HTTP requests, and a set of labelled calls to test your gate against. About 45 minutes, nothing to install.