โ† Back to Blog
LLMsAI EngineeringTools

Jev, Laya-MLX, and the Rise of 'System 1' Decision Models

Not every AI call needs to generate text. Jev and Laya-MLX return typed decisions in single-digit milliseconds instead โ€” here's how they work and when to reach for one.

By Joinloopยท24 September 2026ยท7 min read
ShareLinkedInXReddit
โšก

Most of what production LLM agents do isn't "generate a paragraph." It's "is this true or false," "which of these five categories does this belong to," "should this tool call proceed." You reach for GPT-5 or Claude, wrap the answer in a JSON schema, pay for 500+ tokens of reasoning, and wait 800ms-2s for a decision that has exactly one bit of real information in it. September 2026 brought two releases that attack this waste directly: Jev, from TypeSafe AI, and Laya (via the open-source Laya-MLX runtime). Both belong to a new category their creators call "System 1" models โ€” a nod to Daniel Kahneman's fast, intuitive thinking versus slow, deliberate reasoning.

The problem: autoregressive generation is the wrong tool for a decision

An autoregressive LLM produces its answer one token at a time, each token conditioned on every token before it. That's the right mechanism when the output is genuinely open-ended โ€” a summary, a chat reply, a code diff. It's a wildly inefficient mechanism when the output space is {true, false} or {category_a, category_b, category_c}. You're paying for a text-generation loop to eventually emit a token that happens to render as "true".

The costs compound in agent pipelines specifically:

  • Latency stacks. A router step, a moderation check, and a "should I retry" check inside one agent turn can each cost 300ms-1s if each is a separate LLM call.
  • Token cost stacks. Structured-output wrapping, system prompts, and few-shot examples for a simple classification routinely cost more tokens than the actual answer.
  • Confidence is an afterthought. Getting a genuine probability out of an LLM's text output requires prompting tricks (log-prob inspection, self-consistency sampling) that the API often doesn't expose cleanly.

What Jev and Laya actually do differently

Both models skip text generation entirely. They take a typed question (a claim to score, a set of choices to rank, a state to evaluate) and return a typed value โ€” a probability, a class label with a confidence score, a ranked list โ€” in one forward pass. No decoding loop, no token-by-token sampling.

Jev Laya / Laya-MLX
Maker TypeSafe AI (founded by ex-OpenAI RLHF/InstructGPT engineer Diogo Almeida) Convai Innovations (open weights); Laya-MLX is a community MLX runtime port
Access Hosted, limited early access (launched Sept 15, 2026) Open weights, runs fully local
Backbone Proprietary, purpose-built "System 1" architecture Fine-tuned ModernBERT-large (~421M params) + learned decision head
Output Typed values with probability/confidence estimates Probabilities over choices, scores, or truth values
Where it runs TypeSafe's API Apple Silicon via MLX, no PyTorch/Transformers dependency, as little as ~1GB RAM
Throughput Not yet independently benchmarked publicly ~395 questions/sec on M3 Max in the multilingual checkpoint
Best fit Teams wanting a managed decision endpoint alongside an existing LLM stack Teams wanting to eliminate the LLM call entirely for a decision, on-device or self-hosted

Neither is a replacement for a generative model in the tasks generative models are good at. They're a replacement for the decision layer that today gets bolted onto an LLM via a JSON-schema prompt.

Use case: replacing an LLM moderation gate with Laya-MLX

Say you run a support-agent pipeline where, before a draft reply goes out, you check three things: is this reply factually grounded in the retrieved context, does it contain a promise the company can't keep, and is the tone appropriate. Today that's probably three LLM calls (or one call with three fields in a JSON schema) โ€” each adding latency and cost to every single reply, including the 95% that are obviously fine.

Here's the same gate with Laya-MLX doing the triage, and the LLM reserved only for the cases Laya is unsure about:

# pip install laya-mlx
from laya_mlx import LayaModel

laya = LayaModel.load("aac6fef/laya-mlx")  # loads once, ~1GB resident

def grounded_check(reply: str, context: str) -> dict:
    return laya.decide(
        question="Is this reply fully supported by the given context?",
        text=reply,
        context=context,
        choices=["supported", "unsupported"],
    )

def promise_check(reply: str) -> dict:
    return laya.decide(
        question="Does this text make a commitment the company might not be able to keep (refund guarantee, delivery date, feature promise)?",
        text=reply,
        choices=["safe", "risky"],
    )

def gate_reply(reply: str, context: str, llm_fallback):
    grounded = grounded_check(reply, context)
    promise = promise_check(reply)

    # Laya returns a confidence score per decision โ€” this is the whole point:
    # route to a slow, expensive model only when the fast model is unsure.
    low_confidence = grounded["confidence"] < 0.85 or promise["confidence"] < 0.85

    if grounded["label"] == "unsupported" or promise["label"] == "risky":
        return {"action": "block", "reason": "flagged", "grounded": grounded, "promise": promise}

    if low_confidence:
        # escalate only the genuinely ambiguous cases to the LLM
        return llm_fallback(reply, context)

    return {"action": "send"}

At roughly 2-3ms per decision on Apple Silicon and no network round trip, this gate costs effectively nothing on the 90%+ of replies that are clearly fine, and reserves your GPT-5/Claude budget for the ambiguous tail where a real reasoning pass is worth the cost. That's the pattern worth internalizing: System 1 models aren't a competitor to your LLM, they're a pre-filter in front of it.

When to reach for a System 1 model vs. your existing LLM

Situation Use System 1 (Jev / Laya-MLX) Keep the LLM
Binary/categorical decision with a clear rubric Yes Overkill
Need a calibrated confidence score to route on Yes โ€” this is their core strength LLM confidence is unreliable without extra tricks
High-volume, latency-sensitive gate (moderation, routing, retrieval reranking pre-filter) Yes Too slow/expensive at volume
Decision requires multi-step reasoning or world knowledge synthesis No Yes
Output needs to be free text, code, or a nuanced explanation No Yes
Fully offline / on-device requirement Laya-MLX (open weights) Only if you self-host an LLM too
Need a managed API with no local ML ops Jev Yes, either way

Common pitfalls

  • Treating "confidence score" as calibrated probability without checking. Confidence outputs from any model โ€” Jev, Laya, or an LLM's log-probs โ€” can be miscalibrated for your specific distribution of inputs. Validate on a held-out set from your actual traffic before trusting the threshold you pick.
  • Using a decision model for tasks that need context synthesis. These architectures are built for typed judgments over given text/state, not for "read these five documents and figure out what's missing." Don't force multi-hop reasoning through a single forward pass.
  • Skipping the fallback path. The value here is triage, not full replacement. A pipeline with no LLM escalation path for low-confidence or edge cases will silently misclassify the hard 5-10% it should have punted on.
  • Assuming Jev's or Laya's numbers transfer to your domain. Both were trained on general question/decision data. Domain-specific rubrics (medical, legal, your internal policy language) may need fine-tuning or few-shot calibration before you trust them in production.
  • Ignoring version and provenance for open weights. Laya-MLX is an independent community port of Convai Innovations' weights, not an official release โ€” pin versions and re-validate after any upstream model swap.

Next steps

If your agent pipeline has more than one LLM call whose entire job is producing a single label, score, or boolean, that's the call to profile first โ€” it's very likely a System 1 candidate. Start with Laya-MLX if you want to experiment locally with zero API cost; look at Jev if you'd rather consume this as a managed endpoint alongside your existing model provider.

If you're building production agent architectures and want to go deeper on routing, cost control, and when to reach for which model class, that's core material in Joinloop's AI engineering cohort.

ShareLinkedInXReddit

Want to build this yourself?

Join a live cohort and go from reading about AI to shipping it, with practitioners who do it daily.