Models

Enso routes, Kai decides, Zen reasons, Policy governs — the model families, what each is for, and the live catalogue with every id you can pass.

After this page you know which family answers which kind of question, which ones you can download, and which ids the gateway serves right now.

Four roles

FamilyRoleWeightsReach it atStatus
Ensoroutes and orchestrates: picks the model, context and tools per requestrouter code open (hanzoai/engine); family SKUs hostedmodel: "auto" and enso-* idsshipped
Kaidecides: typed, calibrated answers to bounded questionshosted, not published; served by API onlymodel: "kai" on POST /v1/decisionslive: kai-1, $0.021 per million input tokens
Zenreasons: agentic coding that runs locally, marketing copy and assets; also vision, speech, embeddingsopen, on Hugging Facezen* ids on /v1/chat/completionsshipped
Policygoverns: deterministic allow / ask / deny—your rules, in every Decision Programa part of Hanzo Decision, not a model

The split is by the shape of the answer. An open question — write, explain, plan — needs generation, so it goes to Zen. A bounded one — which model, which tool, is this done, allow or deny — has a known answer space, so it goes to Kai, which answers it without generating text. Enso sits in front and sends each operation to the one that should answer it. Policy has the last word on any action, and a model can make a verdict stricter, never looser.

Other lines

NameWhat it isStatus
Zen 7the next Zen generation; succeeds Satoriresearch preview — no weights, no id to call · Request access
Satoria video-generation line, never trainedretiring; replaced by Zen 7
Jina multimodal model specified in HIP-0003not built; no weights
Enso Diffusiona sparse mixture-of-experts diffusion transformer, forked from DiT-MoE: zenlm/ensoresearch code, no released weights
Enso Browsera Firefox-based desktop browsernot released

The live catalogue

Every model below answers on one address with one key. Pass the id as model and the rest of the request is the same whichever you pick. The one exception is kai, listed with "outputs": ["decision"]: it answers typed questions on POST /v1/decisions, not chat.

curl https://api.hanzo.ai/v1/chat/completions \
  -H "Authorization: Bearer $HANZO_API_KEY" \
  -H "Content-Type: application/json" \
  -d '{"model":"<id from below>","messages":[{"role":"user","content":"Hello"}]}'

The table is fetched from /v1/models in your browser when this page loads, so it is the catalogue the gateway is serving right now rather than a copy written down when the page was built. The same list, by family, needs no key:

curl -s https://api.hanzo.ai/v1/models \
  | jq -r '.data[] | select(.id | test("^(zen|enso)")) | "\(.id)\t\(.owned_by)\t\(.pricing.input_per_million)/\(.pricing.output_per_million)"'

What a rate means

Rates are per million tokens (pricing.input_per_million, output_per_million; pricing.prompt and completion state the same rates per token, as OpenRouter does), input and output priced separately, and they are the same whether you call from the CLI, an SDK, HTTP or an MCP tool — the price is a property of the model, not of the surface you reach it through.

Pricing explains how usage becomes a bill. Credits covers what happens when the balance runs out.

Specifications

HIPSubjectStatus
HIP-0511Model families: every line, its HIP, its API and where it runsLiving
HIP-0039Zen model architectureFinal
HIP-0904The zenlm/zen6* repositories on Hugging Face: what each holdsFinal
HIP-0510Enso: learned per-request routingFinal
HIP-1332Kai: the decision model and the decision planeDraft
HIP-0003Jin: a multimodal model that was not builtDraft
Was this page useful?
Last updated Oct 5, 2026