Skip to content
Decision models

The governed gateway for Jev decision models.

Jev answers in milliseconds where an LLM writes paragraphs. Trifrost speaks the canonical POST /v1/systemone protocol — so your decisions get the same load balancing, failover, budgets, billing and signed audit your LLM traffic already has. Point it at hosted Jev, self-hosted Laya, or any Jev-compatible backend.

Choice · Score · Noul 70–500ms class decisions Per-token or per-question billing Every decision = one signed event
What decision models are

Reflex decisions, not prose.

Modern AI pipelines burn slow, expensive LLM calls on reflex decisions — route this ticket, allow this action, score this risk. Decision models (TypeSafe AI calls its one Jev, a "System One" model) make one typed decision per call: send a state, ask named questions, get calibrated answers your code can branch on. No prose, no parsing, no prompt drift.

  • Typed answers — the answer shape is defined up front; your code branches on values, not vibes
  • Calibrated probabilities — act automatically on high confidence, route low confidence to a human
  • Batched questions — ask choice, score and yes/no questions on the same state in one round trip

choice

Which option wins? Criteria map option → when-to-pick-it. The answer carries the winner, per-option probabilities and a confidence.

{"choice": "billing", "confidence": 0.81}

score

Where on the rubric? Ordered level descriptions, 0..N. The answer is the position — fractional when the model leans between levels.

{"score": 2.4} // material impact

noul

Is this true? A calibrated P(yes), 0..1 — the gate primitive for escalate/allow/needs-review. No confidence field: the probability is the certainty.

{"noul": 0.95} // needs a human

Drop-in wire protocol

Point your Jev client at Trifrost. It just works.

Trifrost serves the canonical POST /v1/systemone surface — {model, state, questions} in, typed {answers} out. Swap the base URL and the API key; keep your code.

POST /v1/systemone
# one request, three question kinds, one state
curl -s $TRIFROST_URL/v1/systemone \
  -H "Authorization: Bearer sk-bf-..." \
  -d '{
    "model": "jev-guard",
    "state": {"ticket": "Charged twice, payouts failing 3 days"},
    "questions": {
      "team":        {"type": "choice",
                      "criteria": {"billing": "payments", ...}},
      "severity":    {"type": "score",
                      "criteria": ["none", "limited", "material", "blocked"]},
      "needs_human": {"type": "noul",
                      "instructions": "Human right now?"}
    }
  }'
answers
{
  "answers": {
    "team": {"choice": "billing",
             "probabilities": {"billing": 0.88},
             "confidence": 0.81},
    "severity": {"score": 2.4},
    "needs_human": {"noul": 0.95}
  }
}

# branch in code — the decision is yours:
if needs_human.noul >= 0.8: escalate_now()
elif team.choice == "none_of_the_above":
    review_queue()
else: route_to(team.choice)

Run this in the playground →

Why a gateway for decisions

Put a fallback behind every decision.

The Jev guides all teach the same pattern: threshold in code, fall back to a human. But what happens when the decision provider itself is down? That's a gateway problem — and it's already solved.

Load-balance across Jev providers

Attach one alias to models on multiple decision providers — hosted Jev, self-hosted Laya, a third-party Jev API. rr_health / weighted / least_latency strategies, 30s cooldown on 429/5xx, half-open recovery. A 70–500ms decision stays a 70–500ms decision.

Budgets + per-question billing

Bill by upstream tokens (including Jev's input_tokens/output_tokens usage) or flat per question — cost_per_question × len(questions). Every team's decision spend lands in the same budget matrix, forecasts and chargeback reports as its LLM spend.

Every decision, audited

Exactly one HMAC-signed event_type='decision' row per call — success, failure, or blocked — with the question set, answers digest and token basis on the row. A denied decision is never invisible; a compliance officer can replay what was asked and answered, by whom, for how much.

Compatibility

Bring any Jev-compatible backend.

BackendProvider base URLNotes
Hosted Jev (TypeSafe AI)https://api.typesafe.aiModels like jev-1.13.0; bring your TypeSafe API key
Self-hosted Laya (laya-serve)http://your-host:8000Apache-2.0, speaks the same /v1/systemone wire protocol
Any Jev-API mirrorthe provider's API rootGeneric provider rows; mix all three behind one alias
FAQ

Jev, decision models, and Trifrost.

What is Jev?

Jev is a structured-decision model released by TypeSafe AI — a "System One" model that returns typed answers (Choice, Score, Noul) with calibrated probabilities instead of generated text, on the POST /v1/systemone endpoint. It is built for routing, triage, moderation and other in-app decision points where a fast, predictable verdict matters more than prose.

Does Trifrost host Jev?

No. Trifrost is the gateway in front of the decision backends you choose. Register a provider pointing at hosted Jev with your TypeSafe API key, at your own self-hosted laya-serve, or at any Jev-compatible provider — and Trifrost routes, load-balances, fails over, budgets and audits the traffic.

Is Trifrost affiliated with TypeSafe AI?

No. Trifrost is an independent gateway. Jev is TypeSafe AI's model; Trifrost implements the public /v1/systemone wire protocol so any Jev-native client works unmodified — nothing here is an endorsement by or partnership with TypeSafe AI.

What are Choice, Score and Noul?

The three Jev question kinds. Choice picks one option from a criteria map and returns per-option probabilities plus a confidence. Score places the state on an ordered rubric and returns the (possibly fractional) level. Noul answers a yes/no proposition with a calibrated 0..1 probability — the gate primitive for escalate/allow/needs-review flows.

How is decision-model usage billed?

Per model, either per_token — upstream usage including Jev's input_tokens/output_tokens, else a bytes-based estimate — or per_question at cost_per_question × question count. Both flow into the same budgets, spend analytics, forecasts and signed event rows as LLM traffic.

What happens when a Jev provider fails?

The same thing that happens when an LLM provider fails: the alias group fails over to the next healthy decision provider (429/5xx → 30s cooldown, half-open recovery), the failed attempt lands in the request's attempt trail, and the client sees one clean answer. High-frequency decision loops don't fall over because one backend did.

Try a decision right now.

The decisions playground ships with ready-to-run Jev workflow sets — support-ticket triage, frustration & urgency, issue routing, citation checks, and a full 22-question guard matrix.