The ChatGPT moment in 2022 taught AI to talk to people. One of its builders now bets the next moment is AI that talks to software, not people. TypeSafe AI released Jev. Jev is transformer-based, but it is not a large language model. It does not generate text. You send a state and typed questions. It returns typed decisions with probabilities that code can branch on.
Is it deployable? Yes, as a hosted API in early access behind a waitlist. TypeSafe has not published weights, a parameter count, or a self-hosting option.
What is a System One Model?
The name borrows from Daniel Kahneman’s split between fast intuition and slow reasoning. TypeSafe team argues RLHF tuned models for human preference. That produced chat, and overconfidence and mode dropping. Those flaws keep a human in the loop.
Jev uses a new stack: a new architecture, a parallel sampler, and Reinforcement Learning for Calibrated Decisions (RLCD). TypeSafe has not disclosed the architecture.
How the Jev API Works
One endpoint handles everything: POST https://api.typesafe.ai/v1/systemone. The body carries state, model, and a map of questions. The docs define 3 question types.
| Primitive | Asks | Returns |
|---|---|---|
| Choice | Pick 1 option from a list | choice, probabilities, confidence |
| Score | Rate against ordered levels | score, probabilities, confidence |
| Noul | Is this statement true? | noul, a probability from 0 to 1 |
Questions run in parallel and in isolation against the same state. TypeSafe says adding questions barely changes response time. A Choice supports up to 255 options.
from typesafe_sdk import Choice, Noul, TypeSafeClient
client = TypeSafeClient() # reads TYPESAFE_API_KEY
r = client.system_one(
state=ticket,
questions=g.fillStyle="#fff";g.fillRect(0,0,c.width,c.height);g.fillStyle="#231f20";
for(var i=0;i<a.length;i++)if(a[i])g.fillRect((i%W)*S,((i/W),
)
print(r.answers["department"].choice, r.answers["is_urgent"].noul)Install with pip install typesafe-sdk (Python 3.10 or later). A JavaScript SDK ships as @typesafe-ai/sdk. The quickstart also covers cURL and an agent skill for Claude Code.
Confidence is the Product
Every Choice and Score answer carries a confidence value from 0 to 1. TypeSafe derives it from the shape of the probability distribution. In the docs example, billing wins at 0.84. Confidence is only 0.596, because technical still holds 0.159.
The docs suggest 3 paths. Act on high confidence. Review the middle. Send low confidence to a human. Thresholds should scale with the cost of a wrong action.
Pricing, Speed, and the Benchmark Fine Print
Jev costs $42 per billion input tokens. TypeSafe quotes existing LLMs at $0.20 to $10 per 1M input tokens. In its recorded demo, Jev finished in 0.114s for $0.000081. GPT-5.6 Terra took 8.566s for $0.013880.
The TypeSafe team claims it to be 193.6x faster and 444.6x cheaper. Those figures come from TypeSafe’s own workflow evals. But hold on here are some things to keep in mind:
- The reference answer is the average of GPT-6 Astra and Fable 5.1.
- TypeSafe’s capabilities team wrote the workflows.
- TypeSafe expects these gains to sit at the high end of real use.
- TypeSafe says it cannot prove the price is unsubsidized.
‘Zero hallucinations’ means schema matching is guaranteed. The 0% figure is not empirical. Answers can still be wrong.
What Developers are Building with Jev
Community projects appeared within days of launch. Here are some examples:
- Command safety: Vercel CEO Guillermo Rauch reported Jev up to 18x faster at p95 than GPT Luna, and more accurate. His post said the fx reviewer still ran on Luna. Engineer Pranit Sharma shared the benchmark.
- Email triage:Bryo AI CTO Nikhil Mudholkar found Gemini slightly more accurate, but 10 to 20 times more expensive.
- Browser agents: Browser Use’s jev-ultrafast ran a Zürich to London Google Flights search in 7.1 seconds (video).
- Phone agents: Droidrun’s mobile-jev drove Uber on a real Android phone: 9 actions in about 21 seconds (video). No booking was completed.
- Video scoring: jevmeter scores every sentence of a debate for about $0.05 (demo on X).
- Live typing: Steve Krouse’s Typewriter updates 16 judgments as you type (try it).
- Games: Jev completed StarCraft’s first combat mission (video). It also runs the guards in heist-one (video).
- Agent guardrails: jev-guard rates each tool call as deny, ask, or allow (78-second video).
- Data and homes: pg-jev adds plain-language filters to Postgres. HA-Jev turns answers into Home Assistant entities.
Interactive Explainer
“+row(“billing”,0.84)+row(“technical”,0.159)+row(“sales”,0.001)+’
confidence 0.596. Billing leads at 0.84, yet technical still holds 0.159. Confidence summarizes the shape of the whole distribution, so your code can treat this as a maybe.
‘;
if(k===”score”)h=”
score: 1.035
- Calm, just stating facts
- Frustrated but civil
- Very angry, strong language
confidence 0.842. The score is probability weighted, so it can land between your levels.
“;
if(k===”noul”)h=”
noul: 0.999
“+row(“P(yes)”,0.999)+’
No separate confidence. A Noul is the probability that the statement is true. A value near 0.5 means yes and no are equally likely.
‘;
$(“#viz”).innerHTML=h;requestAnimationFrame(function(){requestAnimationFrame(function(){$$(“#viz .fill”).forEach(function(e){e.style.width=e.dataset.w+”%”});var m=$(“#mk”);if(m)m.style.left=(1.035/2*100)+”%”})});ping()}
$$(“#seg button”).forEach(function(b){b.addEventListener(“click”,function(){prim(b.dataset.p)})});prim(“choice”);
/* 3. gate: illustrative confidences */
var D=[[“Refund request”,0.97],[“Password reset”,0.95],[“Spam message”,0.93],[“Address change”,0.91],[“Plan upgrade”,0.84],[“Invoice dispute”,0.77],[“Partial outage”,0.66],[“Legal threat?”,0.52],[“Mixed languages”,0.41],[“One-word ticket”,0.28]],prev={};
function gate(quiet){var lo=+$(“#lo”).value,hi=+$(“#hi”).value;
$(“#loV”).textContent=lo.toFixed(2);$(“#hiV”).textContent=hi.toFixed(2);
var b={A:[],R:[],H:[]};D.forEach(function(d){var k=d[1]
‘+d[0]+’‘+d[1].toFixed(2)+’
‘);prev[d[0]]=k});
[“A”,”R”,”H”].forEach(function(k){$(“#b”+k).innerHTML=b[k].join(“”);$(“#n”+k).textContent=b[k].length});
$(“#gateSum”).textContent=b.A.length*10+”% fully automated, “+b.R.length*10+”% reviewed, “+b.H.length*10+”% sent to a person.”+(b.A.length>=8?” Aggressive: fine for low stakes, risky for payments.”:b.A.length<=1?” Cautious: little automation left.”:””);ping()}
$(“#lo”).addEventListener(“input”,function(){if(+this.value>+$(“#hi”).value)$(“#hi”).value=this.value;gate()});
$(“#hi”).addEventListener(“input”,function(){if(+this.value<+$(“#lo”).value)$(“#lo”).value=this.value;gate()});
gate(true);
/* 4. cost */
var JEV=0.042;
function money(v){return v>=1000?”$”+Math.round(v).toLocaleString(“en-US”):v>=1?”$”+v.toFixed(2):v>=0.01?”$”+v.toFixed(3):”$”+v.toFixed(5)}
function cost(){var tok=+$(“#tok”).value,calls=Math.round(Math.pow(10,+$(“#call”).value)),pr=+$(“#price”).value,out=+$(“#out”).value;
calls=+calls.toPrecision(2);
$(“#tokV”).textContent=tok.toLocaleString(“en-US”);$(“#callV”).textContent=calls.toLocaleString(“en-US”);$(“#priceV”).textContent=”$”+pr.toFixed(2);$(“#outV”).textContent=out;
var j=tok*calls/1e6*JEV,l=tok*calls/1e6*pr+out*calls/1e6*pr*5,r=l/j;
$(“#dJ”).textContent=money(j);$(“#dL”).textContent=money(l);$(“#fL”).style.width=”100%”;$(“#fJ”).style.width=”max(4px,”+(j/l*100)+”%)”;
$(“#ratio”).innerHTML=Math.round(r).toLocaleString(“en-US”)+”x cheaper per dayInput alone is “+(pr/JEV).toFixed(0)+”x. Free output tokens add the rest. $1 buys “+(1/JEV).toFixed(1)+”M Jev input tokens.“}
[“tok”,”call”,”price”,”out”].forEach(function(i){$(“#”+i).addEventListener(“input”,cost)});cost();
$$(“details”).forEach(function(d){d.addEventListener(“toggle”,ping)});
})();