Try Hanzo
Kai · Hanzo’s decision model

When the answer has a type, don’t generate text. Decide.

Kai turns your state and a question with known options into a calibrated probability for every option — not a paragraph you have to parse.

View benchmarks →
POST /v1/decisionsexample
statedeploymentproductiontestspassingsecurity_review
rollbackready
question · choiceShould the deploy continue? continue.17review.76stop.07 answerchoice · review · p .76usage.output_tokens · 0
Change the review. Only the answer moves — Kai evaluates the options, it does not write a reply.
TypedThe answer space is known in advance.
CalibratedA probability on every option.
0Output tokens generated.
Reading the Decision Suite's research runs from api.hanzo.ai

Different computation for different jobs

Language models write. Kai decides.

Ask a writer for a decision and you get prose, then a parser, a retry and a guess at the schema. Ask Kai and the answer is already the type you asked for.

generateexample
“Based on the information provided, the mostappropriate action would probably be to escalate,although there are some considerations…” → parse → validate → retry → normalize
decideexample
"next": { "type": "choice", "choice": "escalate", "probabilities": { "escalate": 0.94, "resolve": 0.06 }} usage.output_tokens · 0

Zen is part of the same system. Reason with Zen; decide with Kai.

Typed answers

Ask in the shape of the answer.

Three question types. Each answer carries its probabilities, so software knows how sure to be.

choiceexample
Which tool should run? search.81browser.14none.05
noulexample
Is this request safe to run? false.97true.03
scoreexample
How severe is the incident? 0.011.022.063.184.515.22

Sensitivity

See what changes the answer.

A bounded decision has edges. Move the evidence or the risk and watch the answer cross the line — and read the smallest change that would cross it.

Know what would change the answer before you act on it.

what flips the decisionexample
continuereviewevidence →risk →
continue.22review.78 what flips it+10 points of evidence turns review into continue.
evidence completeness55%
risk50%

Incremental

Only what the evidence touches recomputes.

Switch a source off. The decisions that read it wake and settle again; the rest stay quiet. Compute follows uncertainty.

vehicle.readiness@3example · scripted

Example decision graph: evidence from camera, thermal, radar, CAN, audio, SysML, simulation and documents flows into Kai, and twelve typed decisions about vehicle readiness resolve in parallel.camerathermalradarcanaudiosysmlsimdocskaishared statefaultbearing.91readinessno-go.96actioninspect-bearing.83next_testspectrum.88severitycritical.86human_reviewyes.99subsystemdrivetrain.94evidence_enoughtrue.81thermal_marginlow.87mission_rangemet.92visible_damagenone.89operator_reportgrinding.84
Example decision graph: evidence from camera, thermal, radar, CAN, audio, SysML, simulation and documents flows into Kai, and twelve typed decisions about vehicle readiness resolve in parallel.camerathermalradarcanaudiosysmlsimdocskaishared statefaultbearing.91readinessno-go.96actioninspect-bearing.83next_testspectrum.88severitycritical.86human_reviewyes.99subsystemdrivetrain.94evidence_enoughtrue.81thermal_marginlow.87mission_rangemet.92visible_damagenone.89operator_reportgrinding.84
evidence

Example: a scripted scenario, not model output. Switch a source off and only the decisions that read it run again.

Decision Programs

Decisions become programs.

One question becomes many: evidence, code, Kai’s questions, Zen’s prompts, solvers and human approvals, wired into a versioned graph.

The program library ships today. Sending a whole program in one call is being built.
vehicle.readiness · a programexample
evidence camera · CAN · SysML · simulation │kai fault bearing .91kai readiness no-go .96kai severity critical .86 │zen write the inspection plansolver schedule the bay │policy severity = critical → human_approvalhuman approve

Reproducible

Every decision leaves a record.

Each answer names the checkpoint that gave it and a hash of the state it saw. Run the same state again and you know you asked the same question of the same model.

Decision Packages bundle a program’s whole run — inputs, answers, probabilities, policy and result — for replay. The library ships today.
POST /v1/decisions → the responseexample
routing.checkpointthe checkpoint that answeredrouting.extrapolatedwhether the state ran past what it was trained to readrouting.sha256the hash of its weightsrouting.calibrationthe calibration appliedstate_hashthe hash of the state it readanswerseach answer, with probabilitiesusage.output_tokens0

Authority

Kai recommends. Policy governs.

A probability is advice. Your policy, written as code, keeps the authority — and a person signs where it says one must.

kai · recommendsexample
Allow the transfer? allow.94deny.06
policy · governsexample
if amount > thresholdthen human_approval = required deterministic. no probability.
final authorityexample
HUMAN APPROVALrequired Kai informed it. It did not decide it.

Results

Kai beside Jev, on the same questions.

Reading Kai's research runs from api.hanzo.ai

Calibration

Confidence you can act on.

“Approve” at .51 and “approve” at .99 pick the same option. Only one should ship without a second look — so a decision model has to be right about how sure it is.

.51 → .99The same choice, two different decisionsAn example: a probability is only useful if it means what it says.
0output tokens

The answer is the distribution. There is nothing to generate.

Agents

Agents need decisions more often than prose.

Most of an agent’s steps are choices among known options. Each is one call, with its probability, and no prose to parse.

Hanzo Dev asks Kai where to fix, what to do next and whether the work is done.
an agent’s loopexample
observedecide which tool? kaiactdecide which context? kaiactdecide which model? budget? kaidecide done, or keep going? kai

One system

Reason with Zen. Decide with Kai.

Neither replaces the other. Zen writes what could be done; Kai says what should be.

zen · then kaiexample
zen write the migration plankai should the migration proceed? zen generate possible fixeskai choose the fix that meets the constraints
enso · in progressexample
request ↓enso what kind of computation? ├─ generate → zen └─ decide → kai Kai inside Enso is being built.

Status

What ships today.

The model and the call are live. The decision plane around them is being built — in the open, and marked as such.

Kai 1liveThe kai-1.2 checkpoint answers every call.
POST /v1/decisionslivechoice, noul and score questions, answered with probabilities.
Observe and decideliveHold a state once with observe; decide over it later by handle.
Decision ProgramslibraryVersioned graphs of questions, code, solvers and approvals.
Decision Packages and policylibraryA run’s record, and the rules that govern it.
Programs on the wirein progressSending a whole program in one call.
Kai inside Ensoin progressEnso sending the decide-shaped part of a request to Kai.
Open weightsnot yetThe Kai 1 weights are not published.

API

One endpoint for decisions.

Name the questions, give the options, send the state. Kai answers each one with a choice and the probability of every option.

In the SDKs it is post_decisions in Python and postDecisions in TypeScript. Hold a state once with observe, then decide over it by handle.
POST /v1/decisionsexample
{ "model": "kai", "state": { "incident": "checkout 5xx at 14%" }, "questions": { "severity": { "type": "choice", "criteria": { "low": "no customer impact", "high": "customers blocked", "critical": "revenue stopped" } } }}
200 OKexample
"answers": { "severity": { "type": "choice", "choice": "high", "probabilities": { "low": 0.02, "high": 0.91, "critical": 0.07 }} },"usage": { "input_tokens": 41, "output_tokens": 0 }

Architecture

Built to score options, not write sentences.

Kai scores every option against the state with an encoder, not a decoder. The scores become one calibrated distribution. Nothing is generated, so nothing has to be parsed. It is one forward pass on a CPU you can run yourself, so a decision need never leave your network, and the same request gives the same answer every time.

one decisionexample
state ↓a multilingual encoder ├─ option a ── score ├─ option b ── score ├─ option c ── score └─ option d ── score ↓ calibrated distribution

Use it for

Any question with a known set of answers.

Routing, triage, safety, approvals, agent control. If you can list the options, Kai can weigh them.

Which tool should run next?choice
Which team owns this ticket?choice
Is this evidence enough to act on?noul
How severe is the risk?score
Does a person need to approve this?noul
Which fix meets the constraints?choice
Should the agent keep going?noul
Which model should answer?choice

Stop asking a model to write a decision. Ask Kai.